Planning workspace for an AI second-brain / live journaling + synthesis app.
Positioning: Strategist (lead), architected for Mirror and Chief of Staff. Jurisdiction: US-based operation. Current phase: pre-Phase-0. Docs complete; ready to build.
second-brain/
├── README.md ← index, decisions, next actions
├── CLAUDE-CODE-PROMPT.md ← paste this into Claude Code to start building
└── docs/
├── 01-product-brief.md ← original brainstorm: thesis, architecture, competitors, cost model
├── 02-solo-v1-plan.md ← rev.2: phases, privacy decision, US legal, cheap stack
├── 03-engine-spec.md ← THE PRODUCT: four horizons, scoring, anti-generic contract
├── 04-onboarding-and-retention.md ← cold start, return-trigger psychology, distribution
└── 05-corpus-bootstrap.md ← getting data in: AI exports, handwriting, MCP, local-Docker notes
Read order for anyone new: 01 → 03 → 05 → 02 → 04.
To add later: 05-crisis-detection.md (prerequisite for any Mirror positioning), 06-competitive-teardowns.md, evals/ (the regression set).
| Date | Decision | Rationale | Status |
|---|---|---|---|
| 2026-08-12 | Do not build on Obsidian; do adopt its format | App is proprietary — ToS bars redistribution, derivative works, competing products, and providing a service to others. The format (Markdown + YAML + [[wikilinks]]) is free and unlicensable |
✅ |
| 2026-08-12 | Markdown files are the format of record; Postgres is the index | Makes "no lock-in" verifiable, not just promised | ✅ |
| 2026-08-12 | Three positionings = one engine, horizon as a parameter |
Same capture, atoms, graph. Only output framing differs | ✅ |
| 2026-08-12 | Lead with Strategist; Mirror after v1 pilot + crisis detection | Strategist's worst output is boring; Mirror's is harmful | ✅ |
| 2026-08-13 | Strategist runs on all four horizons, not just months | Value must arrive day one. Resonance pings fire instantly | ✅ Revised |
| 2026-08-13 | Privacy: plaintext in Phase 0, encryption boundary from commit #1, envelope encryption before user #2 | Crypto is cheap; encrypted columns break search and debugging. The single data-access module is what actually buys the option | ✅ Revised |
| 2026-08-13 | US jurisdiction: MHMDA + FTC HBNR + FTC §5, no GDPR | Operation is US-based. MHMDA's private right of action is the main exposure | ✅ |
| 2026-08-13 | Backfill import is a Phase 0 feature, built before live capture | Solves cold start and the validation problem in one move | ✅ Revised |
| 2026-08-13 | No streaks, no variable rewards, no guilt. Absence = accumulation | Streaks punish the people who need this most; the app maps vulnerabilities and must not exploit them | ✅ |
| 2026-08-13 | Publish the format spec as an open standard | Best organic distribution wedge; reaches the PKM/Obsidian audience | ✅ Direction set |
| 2026-08-13 | Python 3.12 everywhere; FastAPI + Jinja + HTMX. Next.js deferred to Phase 2 | Engine deps are Python-native with no good JS equivalent (faster-whisper, sentence-transformers, leidenalg, ruptures). Phase 0 UI is a form and a list | ✅ |
| 2026-08-13 | Fully local Docker for Phase 0; Tailscale for phone capture | $0, no cloud accounts, nothing publicly exposed | ✅ |
| 2026-08-13 | Catch-up jobs, never scheduled jobs | Laptop sleeps. Designing for intermittent availability is free now, miserable to retrofit | ✅ |
| 2026-08-13 | AI chat history: import via official export, not a live connector | No read API exists for ChatGPT or Claude history. Anything else is scraping | ✅ |
| 2026-08-13 | Expose the brain as an MCP server (capture / recall / resonance / open_loops) |
The correct inversion of "connect to ChatGPT." Claude Desktop reaches local servers today; ChatGPT needs a remote one, so that half is Phase 2 | ✅ |
| 2026-08-13 | Handwritten journal ingestion is a Phase 0 importer | It's the corpus that exists. Vision model → text + inferred original date | ✅ |
| — | Handwriting OCR: hosted (better) vs local (private) | Suggested default: hosted one-time batch under ZDR, everything ongoing local | ⬜ Open — decide per batch |
| — | Free tier + pricing | Deferred to Phase 2 | ⬜ Open |
| — | EU users: take them or not? | Taking them re-imports GDPR + DPIA. Decide deliberately | ⬜ Open |
- Request your ChatGPT and Claude data exports today. Settings → Data controls → Export data. They take up to 24 hours and they are the highest-value input to Phase 0.
- Photograph your handwritten journals while you wait. One page per image, even light, batched by notebook.
- Paste
CLAUDE-CODE-PROMPT.mdinto Claude Code. ReviewCLAUDE.mdand the proposed schema before letting it build anything. - Judge the resonances before building synthesis. If step 5's retroactive resonances are boring, stop and fix retrieval. Don't build the weekly engine on a broken foundation.
- Label everything into
evals/from the first output. The labelled set is the moat. - Set up backups before you have anything worth losing.
- Never train on user data. Never sell it. Never use it for advertising. These are also the legal shield under FTC Act §5.
- Every insight cites the specific entries that produced it.
- Markdown export works from day one.
- No minors.
- No diagnosis, no treatment claims, no therapy branding.
- No dark patterns: no streaks, no variable-ratio rewards, no guilt, no engagement-optimised timing.
- Optimise for "was this true and useful," never for time-in-app.