Isaac
An AI coaching app with a soul: eight personality archetypes, a five-layer memory that self-updates after every conversation, and proactive daily check-ins. Built in React Native, shipped to TestFlight.
Isaac is an AI coaching app built around one idea: most "AI coaches" are a chat box with no memory and no point of view. Isaac is the opposite: a coach with a fixed identity, a long memory, and the nerve to tell you the thing you're avoiding. It shipped to TestFlight as a real iOS build, not a prototype.
The product thesis
Isaac is not an AI assistant. He's the version of yourself that can see you clearly, the coach who watched every game tape, who remembers what you said at 2AM when your guard was down.
The bet is that the coaching is the product and the habit tracking is just the substrate that gives the coach something real to reason about. A generic chatbot resets every session; Isaac is designed so that by week four, talking to him feels like texting a mentor who never forgets.
Eight archetypes, one soul
Isaac has a constant soul: a fixed philosophy and a hard set of voice rules (never uses corporate filler, never breaks character, leads with questions, names the emotion before the logic). What changes is the voice, modulated across eight personality archetypes:
Commander · Strategist · Visionary · Catalyst · Sage · Guardian · Executor · Maverick
Each archetype is a distinct coaching register. The Commander is a drill sergeant with respect: short, punchy, "you said X, you did Y, what's the gap?" The Strategist is a chess coach who shows the framework. The Sage runs Socratic dialogue. A user is typed through an onboarding quiz into a primary and secondary archetype, and Isaac blends them 80/20. The soul never bends; only the delivery adapts to the person.
The hard part: a memory that earns trust
The architecture I'm most proud of is the five-layer memory, because it's what makes Isaac feel like he knows you rather than just retaining a transcript:
- Identity: Isaac's soul and rules. Never changes.
- User profile: archetype, trait scores, goals, life context. Updates weekly.
- Relationship map: what works and what falls flat with this specific person, trust level, the inside references that emerge over time. Updates every conversation.
- Patterns: recurring behavioral loops and emotional signatures, with a confidence score and an intervention attached to each.
- Working memory: current focus, open threads, promises the user made, and Isaac's private notes he holds back until they'll land.
Every system prompt is assembled from these layers plus the last few conversations. And critically, the memory is self-updating: a reflection pipeline runs after each conversation to extract new facts, confirm or challenge patterns, and decide Isaac's next opener, and a weekly synthesis (a Sunday cron job) writes growth scores, extracts the user's stated principles into a vault, and surfaces the blind spot the data implies.
Grounded in behavioral science, not vibes
The data model encodes real frameworks rather than generic positivity. Patterns and goals carry a Transtheoretical-Model change stage (precontemplation → maintenance) so Isaac matches the intervention to readiness instead of pushing action at someone who isn't there yet. Goals use WOOP / implementation intentions. Conversations track cognitive distortions, rumination, and a self-compassion ratio. The coaching adapts to where the person actually is.
Architecture
- Client: Expo + React Native + Expo Router. File-based routing across auth, a five-step onboarding flow (intro → quiz → reveal → goals → schedule), the tab app (home, chat, profile, vault), and conversation screens. State in Zustand, animation in Reanimated, styling in NativeWind.
- Backend: Supabase. Postgres with row-level security across 11+ tables, plus Postgres cron for the recurring jobs. All AI runs in Deno edge functions:
chat,onboarding,morning-prompt,reflection, andsynthesis, sharing the soul, archetype voices, and prompt builder. - The Vault: a knowledge graph. The user's principles, patterns, and conversations are nodes in a force-directed graph with backlinks, an Obsidian-style map of who they're becoming, rendered on-device.
- Proactive, not reactive. A morning-prompt cron generates a contextual daily opener and pushes it via notifications. Isaac starts the conversation.
The decision that ties it back to the desk: spend has a worst case
An app where every user can trigger unlimited LLM calls is an uncapped liability, exactly the kind of "what does this do on its worst day?" surface a risk desk is trained to see. Isaac handles it on two axes:
- Model routing by tier and task. Real-time conversation uses Claude Sonnet only for premium subscribers; the free tier and every background job (onboarding, morning prompts, reflection, weekly synthesis) run on the cheaper Haiku. The expensive model is reserved for the one place a human is waiting on the other end.
- A sliding-window rate limiter on the edge functions caps each user (chat at 30 messages per 10 minutes, morning prompts at two per hour), so a flood (accidental or hostile) can't run up the Anthropic bill.
Monetization runs through RevenueCat, and the premium tier is what unlocks Sonnet, so the cost structure and the business model are the same decision.
Status
A complete, working iOS build shipped to TestFlight: auth, onboarding, the full coaching loop, the vault, and the recurring jobs all wired to real data.
There's also a live, read-only web demo: a web version of Isaac signed into a fully-seeded sample account, no signup. Every write and spend path is disabled, the chat send most of all, since that's the only path that costs an LLM call. So the entire interface is explorable by anyone and the public URL can't run up an API bill: the worst-day question, answered before the link goes out.