Space — Personal Intelligence System

PRD v1.0 · Abhishek Srivastava · July 2026 · Confidential

0. North Star

One sentence: A system that knows everything Abhishek knows, helps him make better decisions today, and lets him understand the most important relationship of his life through data — not memory.


Not a product. Not an app. A personal intelligence layer built on 3 years of real data. The three problems it solves, in order of urgency:


#ProblemWhy now
1Relationship — understand what happened, what she'd say, what to doDivorce proceedings active. Every message matters. No clarity on what works.
2Money — what can fetch income right now, what am I missingRunning out. Needs data-driven answer, not gut.
3Health — what kind of person have I been, what does the data sayPattern awareness. Self-knowledge.
4Continuity — data becomes part of the model, not just retrieved contextThe blank slate problem. Every session forgets. This fixes it permanently.

1. Data Foundation (Already Built)

Total messages: 149,515 · DB size: 2.5 GB · Embeddings: ~490k rows

Amrita's voice:
  WhatsApp → 19,439 messages (source_id=2)
  Gmail → 352 messages (source_id=1)
  Telegram → 18 messages (source_id=3)
  Total: ~19,809 messages in her voice

Abhishek's voice:
  WhatsApp → 18,895 · Gmail → 819 · Telegram → 51
  Claude → 48,008 · ChatGPT → 5,935 (his thinking, his work)

Other tables: github_commits (3,067) · legal_records (30) · transactions (63) · device_artifacts (299) · authored_content (78) · deployed_urls (114)

Query engine (query.py) is live. Semantic search works. The noise problem: Claude/ChatGPT messages about Amrita pollute results when searching for her actual words. Solved in Module 1 below.

2. The Four Verticals

VERTICAL 1 · PRIORITY 1

Relationship — Amrita Intelligence Layer Urgent

Everything about understanding the relationship through data. Three sub-parts:

1A — Filtered Voice Search

The problem: searching "what did Amrita say about feeling unsafe" returns Claude conversations about her, not her actual words. Fix: query must filter by sender_id = Amrita AND source_id IN (1,2,3) — only her real messages.

query: "I need some space"
filter: sender=Amrita, source=WhatsApp/Gmail/Telegram
→ returns: her actual words, exact dates, context
→ NOT: Claude's summary of what she said

1B — Relationship Timeline

Automated analysis across the full corpus:

Output: a visual HTML timeline. Measured, not remembered.

1C — The Simulator ("What Would She Say?")

You write a message you're thinking of sending. The system shows you:

You type: "Can I stay at your place for a week, I just need us to try"

System retrieves: her past responses to similar requests
→ "message only" (Oct 2024, when you asked to call)
→ "i am not going to tell u even if anything happens" (Oct 2024)
→ "not answering this question. my decision." (Oct 2024)

Pattern identified: direct requests for contact → deflection + boundary assertion
Suggestion: reframe around her autonomy, not your need

This is not manipulation. It's pattern recognition from real data so you don't send something that will backfire. First use case: the email asking for one week/one month together.

VERTICAL 2 · PRIORITY 2

Money Intelligence Important

Use the data to answer: where is the money, what am I not seeing?

Bank statement import is a separate task — HDFC + Kotak CSV → transactions table. You mentioned this. Will do when ready.

VERTICAL 3 · PRIORITY 3

Health & Self Patterns Self-awareness

What does the data say about who you are?

VERTICAL 4 · LONGER TERM

Continuity — Becoming Part of the Model Deep

Right now, every Claude session starts blank. Retrieval helps but it's still injecting context externally. The real goal is deeper:

Today: Claude + retrieval → Claude knows what you inject
Medium: fine-tuned model → it knows you without being told
Long: Digital Mirror → it IS you, with better memory

The data foundation is already built. 490k embeddings. 149k messages. 3 years of your life. The continuity problem is already half-solved.

3. The Noise Problem — And The Fix

Problem: Right now query.py searches everything. When you ask about Amrita, you get Claude conversations about her (48k messages) drowning out her actual WhatsApp messages (19k). The AI conversations are louder in embedding space because they're longer and more detailed.


Fix — three layers:

  1. Source filter — for Amrita queries: only search source_id IN (1,2,3) AND sender_id = Amrita
  2. Intent routing — detect query type: "relationship/Amrita" → filter to primary sources. "work/money" → Claude+ChatGPT+commits. "legal" → legal_records + relevant messages.
  3. Reranking — after retrieval, score results: direct messages from Amrita score higher than AI summaries of her

This turns query.py from a blunt instrument into a smart router.

4. How The Simulator Works (Technical)

No fine-tuning needed. No training. Pure retrieval + prompt engineering on top of existing embeddings.

Step 1: You write a message draft
Step 2: Embed it → search Amrita's 19,809 messages for similar contexts
Step 3: Retrieve top-20 of her actual responses in similar situations
Step 4: Claude reads those 20 messages + your draft → synthesizes likely response pattern
Step 5: Also shows you: what worked vs what didn't in past similar attempts

Same for Abhishek simulator — search your own WhatsApp messages for how you've responded to similar situations before.

The 19k Amrita messages are enough to identify clear patterns. She has a voice — direct, boundary-asserting, medical-aware, protective of her autonomy. The data will show it.

5. Continuity — How It Gets Built

See Vertical 4 above. Three stages, each deeper than the last:

Stage 1 (now): query.py → inject context → Claude knows your situation
Stage 2 (soon): fine-tune on your 149k messages → model internalizes your life
Stage 3 (later): Digital Mirror — persistent interface, talks back, full recall

The data is already there. It's a matter of building the layers on top.

Stage 1 is already half-built. query.py exists. The continuity bridge (auto-inject before sessions) is a few hours of work.

6. Build Order

#VerticalWhatTimeStatus
1 V1 Fix query.py — source/sender filters so Amrita search = her actual words only 1 hr ▶ now
2 V1 Relationship timeline — sentiment score Abhi↔Amrita messages, plot the arc 2 hrs next
3 V1 Simulator v1 — draft message → retrieve her likely response from past patterns 2 hrs next
4 V1 Draft the email (one week/month ask) — simulator output informs language 30 min after 3
5 V2 Money audit — semantic search across commits/deployed/Claude for income opportunities 1 hr later
6 V2 Bank statement import — HDFC + Kotak 2024–Apr 2025 → transactions table 1 hr when ready
7 V3 Health audit — device artifacts + messages: what does data say about you as a person 2 hrs later
8 V4 Continuity bridge — auto-inject DB context into Claude sessions before each conversation 2 hrs later
9 V4 Fine-tune on 149k messages — model internalizes your life, not just retrieves it separate later
10 V4 Digital Mirror v1 — conversational interface, persistent, full recall 1 day later
11 The Movie — 3-year story rendered as narrative/film prompt separate project

7. Known Data Gaps

GapImpactFix
Amu Delhi WhatsApp (excluded) Missing her direct messages from main period Load when ready — script exists
Bank statements (HDFC + Kotak) No financial picture for 2024–Apr 2025 Import CSV → transactions table
Telegram — only 69 messages Thin data from that channel Export from Telegram desktop if possible
Amrita's Gmail (her sent) Only have what she sent to you 352 emails is enough for pattern analysis
Medical records Health timeline incomplete Add to device_artifacts or legal_records


Space Personal Intelligence System · PRD v1.0 · July 2026 · Private