π Las Vegas | π» Developer | π₯ DevRel @ TiDB
I build apps I'd actually use myself, then share them with the world.
- Speak2Me - I wanted to build an AI companion that actually remembers you. So I built Speak2Me. But here's what makes it different from slapping a mic on a notes app: it can actually pick up on your emotions in real time through your ACTUAL voice. And not because you told it you were stressed, but because it can literally HEAR that you're stressed. Claude Opus 4.6 runs the brain. And for the memory system - well, it isn't some LLM-generated summary that drifts over time. Every fact gets its own row in my database, categorized and validated. Deterministic. No LLM synthesis, no corruption from a bad run, and facts never fall off no matter how many conversations you have. When new info contradicts old info, the old fact gets superseded - not duplicated, not deleted. Identity facts like your wife's name or your kid's birthday are pinned and can never get pushed out by newer stuff. You can come back tomorrow, next week or next year and it will remember and know your story. No catch-up. No repeating yourself. You just talk.
How the Memory Architecture Works
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SPEAK2ME MEMORY ARCHITECTURE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
YOU TALK REAL-TIME
ββββββββΊ Hume EVI ββββββββββΊ Emotion Detection
(voice) (prosody analysis)
β β
βΌ βΌ
Transcription Top 3 emotions + scores
β attached to each message
βΌ β
ββββββββββββββββββββββββββββββββββββ
β Claude Opus 4.6 β
β (knows your full story + β
β can hear how you feel) β
ββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
AFTER EACH CONVERSATION β THE FACTS ENGINE
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Transcript
β
ββββΊ FAST PATH (inline, ~500ms) Start a new session
β Claude Haiku quick extraction 10 seconds later and
β Facts available immediately the AI already knows.
β
ββββΊ DEEP PATH (async, background)
Deeper extraction + embeddings
Catches anything fast path missed
Both paths run through the same pipeline:
β
βΌ
VALIDATE ββ garbage? βββΊ REJECT
β (meta-observations,
β AI behavior notes,
β negatives, generics)
βΌ
CATEGORIZE (keyword matching, no LLM)
β
β ββββββββββββββββββββββββββββββββββββ
β β identity Β· family Β· work β
β β finance Β· health Β· interest β
β β project Β· social β
β ββββββββββββββββββββββββββββββββββββ
βΌ
SUPERSEDE ββ overlaps existing fact? βββΊ old fact marked inactive
β (70% word overlap check) (never deleted)
βΌ
STORE as its own row in s2m_user_facts
β
βΌ
PIN IDENTITY FACTS β family, names, birthdays
β are flagged and ALWAYS loaded.
β Can never be pushed out.
βΌ
BUILD PROFILE (deterministic string format)
No LLM. Same input = same output. Always.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
NEXT SESSION β INSTANT RECALL
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
App opens You click "Start Talking"
β β
βΌ βΌ
Prefetch ALL active facts Everything already loaded.
profile + recent context Zero wait. Zero catch-up.
(background, before you AI knows your whole story
even click anything) from word one.
| How Most AI Apps Do It | Speak2Me | |
|---|---|---|
| Storage | JSON blobs / summaries | One row per fact |
| Profile | LLM synthesis (can corrupt) | Deterministic, no LLM |
| Fact lifespan | Falls off after N chats | Never falls off |
| Bad LLM run | Corrupts everything | Can't happen |
| Contradictions | Both versions kept | Old fact superseded |
| Garbage facts | Stored anyway | Rejected on write |
| Identity facts | Same priority as all | Pinned, always loaded |
| Recall speed | 5-10s mid-conversation | Pre-loaded, instant |
| Back-to-back sessions | Waits for background processing | Facts ready in ~500ms |
| Phase | What | Status |
|---|---|---|
| 1 | Foundation (Next.js, TiDB, auth) | β Complete |
| 2 | Voice conversation (Hume EVI + emotion detection) | β Complete |
| 3 | AI brain (Claude via custom LM endpoint) | β Complete |
| 4 | Dedicated facts table (deterministic profile, no LLM synthesis, facts never fall off) | β Complete |
| 5 | Instant memory recall (zero-delay prefetch on app open) | β Complete |
| 6 | Session history, search, transcript export | β Complete |
| 7 | Dashboard (streaks, per-message emotion scores charted over weeks, memory carousel) | β Complete |
| 8 | "On This Day" throwbacks (surfaces journal entries from the same date in past months) | β Complete |
| 9 | Proactive reminders (upcoming birthdays, anniversaries) | β Complete |
| 10 | Research Mode (voice-in, text-out, web search in your speaking style) | β Complete |
| 11 | Voice identity verification (Modal infra + DB + API built, UI wiring left) | π§ In progress |
| 12 | Memory management (user can see/edit/correct what AI remembers) | Not started |
| 13 | Mobile app (PWA or native) | Not started |
- BaseCamp - Voice-first personal health OS that builds long-term memory about what works for YOUR body
- Parallel Lives - AI decision simulator using multi-model reasoning (Claude + GPT)
- Speak It - Voice-to-text Chrome extension that learns your style without storing your words
- College Picker - AI college comparison with real Dept. of Education data
- Journal It - AI journaling system that writes your autobiography
- atlasMemory - Unified AI memory layer with branching and rollbacks
- OriginAI - Chrome extension to detect AI-generated content
- AI Memory Is Broken. I Know Because I Built It. - Feb 2026
- Building a Voice-to-Text App That Learns Your Style - Jan 2026
- I Built a System That Writes My Autobiography While I Use It - Dec 2025
- YouTube - AI tools, databases, developer tutorials
- Blog - Technical deep-dives
- Speaking: AllThingsAI 2026, Percona Live, SF Awesome AI Dev Tools



