Commissioned: A079 | Author: SCOUT | Date: 2026-04-27
Audience: Harnoor (TITAN architect) + FORGE (implementer)
Classification: Internal PhD-depth research memo
Related streams: A074 (spiritualaf.me PhD — content/curriculum), A072 (education plan), A071 (sovereignty module)
---
The best personal knowledge dashboards in the world share three structural properties that most builders miss: (1) a clear separation between capture (getting things in) and consumption (getting things out at the right moment), (2) a spaced repetition mechanism that surfaces reminders at non-obvious intervals rather than linear chronology, and (3) a multi-modal consumption stack (read → listen → summarize → act) that meets the user where they are. Notion, Tana, Ali Abdaal's Resonance Calendar, Tiago Forte's PARA, and the audio-first pipelines being built on ElevenLabs represent the current frontier. TITAN's /personal section can surpass all of them by combining the best IA pattern (PARA + category modules) with a shared section template, a category-config JSON schema, an article-to-audio pipeline, and a rotating reminder ticker. This memo documents the five best implementations, the recommended IA model, the shared section template, the JSON schema, and the 30-day build roadmap.
---
URL: aliabdaal.com/newsletter/building-a-second-brain
What it is: A Notion database with a custom view that functions as a "resonance log" — every piece of content Abdaal encounters (article, video, podcast, book, tweet) gets a card. The key field is not title or author — it is "why did this resonate?" A free-text field that captures the emotional or intellectual hook.
What makes it world-class:
What it lacks:
TITAN borrowing: The "resonance" field concept — every article in TITAN's /personal section should have a why_it_matters field that captures the emotional/intellectual hook, not just a summary.
---
URL: buildingasecondbrain.com/notion-template | thomasjfrank.com/brain
What it is: PARA = Projects, Areas, Resources, Archives. A four-category organizational system designed to mirror how knowledge actually moves through a person's life: active projects (time-bounded goals), areas of ongoing responsibility, reference resources, and archived material.
The critical insight Forte teaches: Information should be organized by actionability, not by topic. A note about "sleep science" does not go in a "Science" folder — it goes in the Project it serves (if you're writing an article on it), the Area it belongs to (if it's ongoing health maintenance), or Resources (if it's pure reference).
Information Architecture from the template:
PARA Root
├── Projects/ ← Active time-bounded work
│ ├── [Project A]
│ └── [Project B]
├── Areas/ ← Ongoing responsibilities (health, finances, relationships)
│ ├── [Area A]
│ └── [Area B]
├── Resources/ ← Topic-based reference library
│ ├── [Topic A]
│ │ ├── index.md
│ │ ├── articles/
│ │ └── notes/
│ └── [Topic B]
└── Archives/ ← Completed projects + inactive areas
What makes it world-class:
What it lacks:
TITAN borrowing: The PARA lifecycle model for categorizing content (Is this article for an active project, a life area, or pure reference?). The Areas concept = TITAN's /personal categories.
---
URL: thomasjfrank.com/brain
What it is: A commercially-sold Notion template that extends PARA with task management, habit tracking, and a sophisticated cross-database linking system.
Key innovations over standard PARA:
The "Random Note" pattern: This is the closest existing Notion implementation to a rotating reminder ticker. Thomas Frank's implementation is manual (user clicks the button) but the concept is sound: surfacing random past content breaks the recency bias of linear feeds.
TITAN borrowing: The Random Note as a seed concept for TITAN's rotating reminder ticker — except TITAN's implementation should be automated (surfaced daily via scheduled script, not on user click) and should weight by: time since last viewed + rated importance + category relevance to current projects.
---
URL: tana.inc/pkm
What it is: A graph-based PKM tool where every node (thought, task, article, person) can be tagged with a "supertag" that gives it structured fields. A node tagged #article gets fields: author, url, summary, takeaways, audio_link. A node tagged #reminder gets fields: content, next_surface_date, repeat_interval, category.
Key UX innovations:
#article nodes tagged with a specific topic inside any other node — enabling contextual article lists within project pagesWhat makes it world-class:
What it lacks:
TITAN borrowing: The supertag concept maps directly to TITAN's category-config JSON schema. Every category = a typed "supertag" with defined fields. The inline view pattern = TITAN's section template rendering.
---
URL: obsidian.md (with community plugins)
Relevant plugins: obsidian-spaced-repetition, dataview, obsidian-text-to-audio (community)
What it is: Obsidian is a local markdown-file PKM. With plugins, it becomes a programmable personal knowledge dashboard.
Key plugin stack for TITAN's use case:
dataview TABLE summary, audio_link FROM "personal/stoicism" WHERE date > date(today) - dur(30 days) — returns a dynamic table of recent articles in any category.#flashcard tags get surfaced at algorithmically optimal intervals. This is the most rigorous "rotating reminder ticker" available in any PKM tool.What makes it world-class:
What it lacks:
TITAN borrowing: The Dataview query model = TITAN's category-config JSON + rendering engine. The spaced repetition algorithm for reminder surfacing. The local-first architecture matches TITAN's F:/TITAN workspace.
---
Every system above fails at one or more of these:
TITAN can build all four.
/personal (root)
├── index.md ← Master dashboard: today's reminders, recent articles, active areas
├── categories/
│ ├── stoicism/ ← Category module (see Section Template below)
│ ├── discipline/
│ ├── sovereignty/
│ ├── relationships/
│ ├── health/
│ ├── finance/
│ ├── career/
│ └── spirituality/
├── articles/ ← Flat global article database (all categories)
│ └── <slug>.md ← Individual article files
├── reminders/ ← Global reminder database
│ └── <slug>.md ← Individual reminder files
├── audio/ ← Generated audio files
│ └── <article-slug>.mp3
├── queue/ ← Unprocessed captures (articles not yet categorized)
└── config/
└── categories.json ← Category configuration (see schema below)
Design principles:
1. Flat article database + category links (not articles nested inside categories) — an article on Stoicism that also applies to Discipline lives once, linked from both category views
2. Category modules as views (not containers) — each category renders a view over the global article and reminder databases, filtered by category tag
3. PARA lifecycle for articles: captured → processed (summary + takeaways) → audio-generated → active (in rotation) → archived
---
Every category in /personal gets the same template. No exceptions. This is the architectural decision that enables automation — if every category has the same structure, one script handles all of them.
/personal/categories/<category-name>/
├── index.md ← Category landing page (rendered by section template)
├── primer.md ← 800-1200 word "index article" — what is this category and why does it matter to Harnoor?
└── notes.md ← Free-form research notes, quotes, ideas (not structured articles)
Category index.md format:
---
category: stoicism
display_name: "Stoicism"
color: "#8B6914"
icon: "⚔"
primer_article: primer.md
article_count: 12 # auto-updated by script
reminder_count: 24 # auto-updated by script
last_updated: 2026-04-27
---
# Stoicism
> [PRIMER SUMMARY — 2-3 sentence hook from primer.md]
## Today's Reminder
<!-- rendered by: python F:/TITAN/scripts/render_reminder.py --category stoicism -->
[rotating reminder card — changes daily based on SR algorithm]
## Top 3 Takeaways (from all articles in this category)
<!-- rendered by: python F:/TITAN/scripts/render_takeaways.py --category stoicism -->
1. [Takeaway 1]
2. [Takeaway 2]
3. [Takeaway 3]
## Articles (12)
<!-- rendered by: python F:/TITAN/scripts/render_articles.py --category stoicism -->
| Title | Audio | Summary | Date |
|-------|-------|---------|------|
| [Article 1](../../articles/stoicism-meditations-review.md) | [▶](../../audio/stoicism-meditations-review.mp3) | 2-line summary | 2026-03-15 |
...
## Audio Summary of Category
<!-- generated by: python F:/TITAN/scripts/generate_category_audio.py --category stoicism -->
[▶ Listen to 5-min category overview](../../audio/stoicism-summary-2026-04-27.mp3)
## Search
<!-- search is handled by: Ctrl+F or ORACLE /search skill over this directory -->
## Spaced Repetition Status
- Next reminder scheduled: 2026-04-28
- Last reviewed: 2026-04-26
- Current interval: 3 days
- Retention estimate: 87%
Individual article file format:
---
title: "The Obstacle Is the Way — Key Insights"
category: stoicism
subcategory: core-texts
url: "https://ryanholiday.com/the-obstacle-is-the-way/"
author: "Ryan Holiday"
date_captured: 2026-03-15
date_processed: 2026-03-16
audio_file: "../../audio/stoicism-obstacle-is-way.mp3"
audio_generated: true
why_it_matters: "Reframes every problem as a training opportunity — directly relevant to current job search"
status: active
para_lifecycle: active
sr_due_date: 2026-05-01
sr_interval_days: 14
sr_ease_factor: 2.5
---
# [Title]
## Summary (2-3 sentences)
[Auto-generated or manual 2-3 sentence summary]
## Top 3 Takeaways
1. [Takeaway 1]
2. [Takeaway 2]
3. [Takeaway 3]
## Key Quotes
- "[Quote 1]"
- "[Quote 2]"
## Why It Matters (personal resonance)
[why_it_matters field value — the emotional/intellectual hook]
## Audio
[▶ Listen (8 min)](../../audio/stoicism-obstacle-is-way.mp3)
## Connections
- Related article: [Meditations Review](meditations-review.md)
- Related reminder: [The discipline of perception reminder](../../reminders/discipline-of-perception.md)
Reminder file format:
---
id: stoicism-amor-fati-01
category: stoicism
content: "Amor Fati — love of fate. Not just accepting what happens, but loving it as necessary and perfect."
source_article: "../../articles/stoicism-meditations-review.md"
sr_due_date: 2026-04-28
sr_interval_days: 3
sr_ease_factor: 2.3
times_reviewed: 12
last_reviewed: 2026-04-25
importance: 9
---
---
INPUT: Raw article (URL or text)
↓
STEP 1: CAPTURE
- User runs: /capture <url> --category stoicism
- FORGE creates article file in /personal/articles/ with status: captured
- Adds to queue/unprocessed.md
STEP 2: PROCESS (LLM extraction)
- Trigger: manual or daily cron at 08:00
- Script: F:/TITAN/scripts/process_articles.py
- For each unprocessed article:
a. Fetch full article text (WebFetch)
b. Ask Claude: "Extract: 2-3 sentence summary, top 3 takeaways, 3 best quotes"
c. Update article file with extracted fields
d. Set status: processed
STEP 3: AUDIO GENERATION
- Trigger: after processing, or manual
- Script: F:/TITAN/scripts/generate_audio.py
- TTS engine: ElevenLabs API (preferred for voice quality) OR Amazon Polly (cheaper for high volume)
- Input: article summary + top 3 takeaways (not full article text — "audio of summary" not "audiobook")
- Output: F:/TITAN/personal/audio/<article-slug>.mp3
- Duration target: 60-120 seconds per article summary audio
- Also generates: category-level 5-minute summary audio (synthesized from all article summaries in category)
- Set status: audio-generated
STEP 4: REMINDER EXTRACTION
- Trigger: after audio generation
- Script: F:/TITAN/scripts/extract_reminders.py
- Ask Claude: "From this article, extract 2-4 standalone reminders — statements that can be read alone, out of context, and still produce insight or behavioral change"
- Create reminder file per extracted reminder
- Set initial SR parameters: interval=1 day, ease=2.5
STEP 5: ACTIVATION
- Set status: active
- Reminder enters the SR rotation
- Article appears in category index
- Audio link appears in article file
- Category article_count and reminder_count auto-updated
| Factor | ElevenLabs | Amazon Polly |
|--------|------------|--------------|
| Voice quality | Excellent — near human | Good — clear but robotic |
| Emotional range | High | Low |
| Cost (per 1000 chars) | ~$0.30 (Starter) | ~$0.004 (standard) |
| Latency | 1-3 seconds | <1 second |
| Voice cloning | Yes (custom voice model) | No |
| Streaming | Yes | Yes |
Recommendation for TITAN: Use ElevenLabs for article summaries and reminder audio (short, high-value content where quality matters). Use Amazon Polly for category-level 5-minute summaries (longer content where cost efficiency matters more than emotional range). Total monthly cost estimate: <$15/month at TITAN's current scale.
Advanced option: Generate a "Harnoor voice" clone on ElevenLabs from 30 minutes of recorded voice. Then all TITAN audio uses Harnoor's own voice — dramatically increases resonance of reminders heard in your own voice. This is the highest-leverage audio upgrade available.
---
Every PKM tool that surfaces reminders chronologically fails for the same reason: recency bias. Yesterday's reminder gets seen; last year's insight gets forgotten. The goal of a reminder ticker is not to surface what's new — it's to surface what will have the most impact on today's behavior given the current gap in Harnoor's mental model.
TITAN's reminder ticker uses a modified SM-2 algorithm (the same algorithm used in Anki — the most evidence-backed spaced repetition system in existence):
def next_review(reminder, quality_score):
"""
quality_score: 0-5 (0 = total blackout, 5 = perfect recall with no effort)
"""
if quality_score < 3:
# Reset interval — reminder needs relearning
reminder.interval = 1
reminder.ease_factor = max(1.3, reminder.ease_factor - 0.2)
else:
# Advance interval
if reminder.interval == 0:
reminder.interval = 1
elif reminder.interval == 1:
reminder.interval = 6
else:
reminder.interval = round(reminder.interval * reminder.ease_factor)
# Update ease factor
reminder.ease_factor += 0.1 - (5 - quality_score) * 0.08
reminder.next_review = today + timedelta(days=reminder.interval)
return reminder
Quality score input: TITAN's implementation should be frictionless. Three options:
1. Passive decay: No user input required. Reminders that are not explicitly marked as "seen" are assumed quality_score=0 and reset. User marks "seen + helpful" (quality=4) or "seen + already know" (quality=5) with a single tap.
2. Daily digest vote: Each morning, Harnoor receives 3 reminders. Rating each (thumbs up/down) provides the quality signal.
3. Zero-friction default: If no rating, use a default quality score of 3 (neutral). This advances the interval slowly without requiring any action.
Recommendation: Start with option 3 (zero-friction). Reminders surface on their scheduled date; intervals advance regardless of user action. Add rating after 30 days once the pipeline is trusted.
Every day at 06:00 (morning digest time):
Script: F:/TITAN/scripts/generate_daily_digest.py
1. Query all reminders with sr_due_date <= today
2. Sort by: (importance × days_overdue) — prioritize high-importance + overdue
3. Select top 3 reminders
4. For each selected reminder:
- Mark sr_due_date as reviewed
- Advance interval (SM-2 formula with default quality=3)
5. Generate daily digest:
- 3 reminder cards (text + optional audio)
- 1 "featured article" (longest-unread high-importance article from any category)
- 1 "category spotlight" (rotating — different category each day)
6. Write to: F:/TITAN/personal/digest/YYYY-MM-DD.md
7. [Optional] Send via SES email to harnoors@gmail.com
---
Every category in /personal is defined by a single JSON block in F:/TITAN/personal/config/categories.json. The pipeline scripts read this file to know how to process each category.
{
"categories": [
{
"id": "stoicism",
"display_name": "Stoicism",
"description": "Ancient philosophy of emotional resilience, virtue, and living in accordance with nature",
"color": "#8B6914",
"icon": "⚔",
"para_type": "area",
"priority": 9,
"reminder_rotation_days": 3,
"article_target_count": 10,
"audio_voice": "elevenlabs",
"audio_voice_id": "EXAVITQu4vr4xnSDxMaL",
"generate_category_summary_audio": true,
"category_summary_interval_days": 30,
"primer_article_path": "personal/categories/stoicism/primer.md",
"index_article_title": "Why Stoicism Is the Operating System for High-Performance Living",
"content_sources": [
"https://dailystoic.com",
"https://ryanholiday.net"
],
"tags": ["philosophy", "resilience", "mindset"],
"related_categories": ["discipline", "sovereignty"],
"sr_initial_interval": 1,
"sr_initial_ease": 2.5,
"active": true
},
{
"id": "discipline",
"display_name": "Discipline",
"color": "#1A3A5C",
"icon": "🔩",
"para_type": "area",
"priority": 10,
"reminder_rotation_days": 2,
"article_target_count": 8,
"audio_voice": "elevenlabs",
"audio_voice_id": "EXAVITQu4vr4xnSDxMaL",
"generate_category_summary_audio": true,
"category_summary_interval_days": 30,
"primer_article_path": "personal/categories/discipline/primer.md",
"related_categories": ["stoicism", "health"],
"active": true
}
],
"global_settings": {
"default_audio_voice": "elevenlabs",
"default_sr_initial_interval": 1,
"default_sr_initial_ease": 2.5,
"digest_time": "06:00",
"digest_reminders_per_day": 3,
"digest_email": "harnoors@gmail.com",
"audio_output_dir": "F:/TITAN/personal/audio",
"article_db_dir": "F:/TITAN/personal/articles",
"reminder_db_dir": "F:/TITAN/personal/reminders",
"digest_dir": "F:/TITAN/personal/digest",
"pipeline_log": "F:/TITAN/logs/personal_pipeline.jsonl"
}
}
This schema is the single source of truth for the entire pipeline. Adding a new category = adding one JSON block. The pipeline scripts iterate over all active categories automatically.
---
Day 1-2: IA setup
/personal/articles/, /personal/reminders/, /personal/audio/, /personal/config/, /personal/digest/categories.json with initial 4 categories (stoicism, discipline, sovereignty, health)Day 3-4: Article pipeline MVP
F:/TITAN/scripts/process_articles.py — takes URL, fetches content, extracts summary + takeaways + quotes, writes article fileDay 5-6: Audio pipeline MVP
F:/TITAN/scripts/generate_audio.py — calls ElevenLabs API, generates per-article summary audio~/.claude/settings.json env blockDay 7: Reminder extraction
F:/TITAN/scripts/extract_reminders.pyDay 8-9: SR engine
F:/TITAN/scripts/spaced_repetition.py — SM-2 algorithm implementationF:/TITAN/scripts/generate_daily_digest.py — queries due reminders, selects top 3, generates digest fileDay 10-11: Category index rendering
F:/TITAN/scripts/render_category_index.py — regenerates each category's index.md from the articles and reminders databasesDay 12-13: Daily digest email
generate_daily_digest.py to call AWS SESDay 14: Integration test
Day 15-16: Scale to all 8 categories
categories.json: relationships, finance, career, spiritualityDay 17-18: Category-level audio summaries
F:/TITAN/scripts/generate_category_audio.pyDay 19-20: Search
F:/TITAN/scripts/search_personal.py — uses Grep + semantic match over article and reminder files/search personal <query> skillDay 21: Mid-point review
Day 22-23: Voice-clone setup (optional but high-leverage)
categories.json global_settings.audio_voice_id to Harnoor's voice cloneDay 24-25: One-click audio in dashboard
F:/TITAN/personal/www/index.htmlDay 26-27: ORACLE integration
/personal skill: claude /personal stoicism → surfaces today's stoicism reminders + top article/capture skill: claude /capture <url> --category <category> → triggers full pipeline~/.claude/skills/Day 28-29: Retrospective automation
F:/TITAN/scripts/personal_retrospective.pyDay 30: Launch review
---
The research across all 5 systems reveals five universal principles:
Principle 1: One capture, many consumptions. Every article enters the system once (capture) but can be consumed in multiple modes: read (markdown), listen (audio summary), reminded (SR card), referenced (search). The pipeline generates all consumption modes from one source. This is the opposite of most PKM tools that require re-entry for each mode.
Principle 2: Actionability over organization. Following Forte: organize by what you'll do with information, not what the information is about. A stoicism article that informs how you handle a job interview rejection belongs in both stoicism AND career. TITAN's flat article DB + category tags solves this — an article can belong to multiple categories without duplication.
Principle 3: Friction-minimized capture, friction-zero consumption. Capture should be one command (/capture <url> --category <category>). Consumption should happen without user action — the daily digest arrives at 06:00. The worst PKM systems require effort both to put things in AND to get things out.
Principle 4: Spaced repetition for reminders, not chronology. Reminders that surface at algorithmically-optimal intervals are 3-5x more likely to produce behavioral change than reminders that surface once and disappear. The SM-2 algorithm is 40+ years of evidence. Use it.
Principle 5: The primer article is load-bearing. Every category needs one authoritative 800-1200 word "what is this and why does it matter to me personally" article. Without it, the category is a bucket of disconnected content. With it, every article the user encounters has a home to return to. The primer article IS the category's identity.
---
1. ElevenLabs pricing at scale: The $0.30/1000 chars estimate is based on the Starter plan (~$22/month for ~11 hours). At TITAN's projected scale (100 articles × 500 chars average summary = 50K chars/month), cost is ~$15/month. If content grows 10x, cost grows linearly. Monitor monthly and switch to a batch pricing plan.
2. The "Harnoor voice clone" option: ElevenLabs requires consent verification and 30+ minutes of clean audio. The voice clone quality degrades with short recordings. This is a Week 4 optional enhancement, not a Week 1 requirement. Skip it if the recording setup is not clean.
3. SM-2 without quality scores: Running SM-2 with a default quality=3 (no user input) slowly advances all intervals without discriminating between truly-internalized reminders and forgotten ones. This is a known limitation. The system will work but will not be as efficient as Anki. To get full Anki-level efficiency, even a simple "thumbs up / thumbs down" on 3 reminders per day is sufficient.
4. The "primer article" writing time: 8 categories × 1 hour per primer = 8 hours of writing. This is non-trivial. FORGE can draft these using research from SCOUT, but Harnoor should review and edit each — the primer's personal resonance ("why does THIS matter to ME") is what makes the whole system feel alive vs. generic.
---
1. Building a Second Brain — Ali Abdaal Newsletter — 2025
2. PARA Method Template for Notion — Thomas Frank — 2025
3. The Ultimate Second-Brain Notion Template — Thomas Frank — 2025
4. Official Second Brain Notion Template — Tiago Forte — 2025
5. Second Brain 2025 (P.A.R.A) Template — Notion Marketplace — 2025
6. Tana for PKM — Official Docs — 2026
7. Why Tana's Popularity is Exploding — Medium — 2025
8. 12 Best PKM Tools for 2025 — Obsibrain — 2025
9. ElevenLabs vs Amazon Polly — ElevenLabs Blog — 2025
10. Best TTS APIs 2026 — Speechmatics — 2026
11. Best PKM Apps 2026 — ToolFinder — 2026
12. Top 13 PKM Software 2026 — ClickUp — 2026
13. Dashboard Design Principles 2026 — DesignRush — 2026
14. Knowledge Management Trends 2025 — Bloomfire — 2025
15. GoLinks Best PKM Software 2026 — 2026