Give the question a stable form
Turn an abstract fork into a named timeline with its own divergence, voice, conversation, and memory.
An iOS reflection tool for creating a path-not-taken timeline and conversing with a simulated alternate self shaped by that branch.
What might another version of your life reveal about this one?
Persistent timelines, identity-anchored conversation, local memory, comparison, exports, and explicit uncertainty turn speculation into structured reflection rather than prediction.
User value
Create a distinct alternate-life timeline, speak with its simulated self, and examine the values, gains, costs, and uncertainty around that branch.
Turn an abstract fork into a named timeline with its own divergence, voice, conversation, and memory.
Use timeline-scoped memory, guided prompts, and saved moments to revisit themes without flattening every branch into one chat.
Treat every response as fictional material for thought, with visible AI limits, local controls, and no claim to predict a better life.
View full size
Features
The current app joins timeline management, conversation, memory, review, comparison, exports, trust surfaces, and local controls.
Create, rename, duplicate, switch, and delete alternate-life branches while keeping each conversation and memory separate.
Build every turn from the active divergence, profile, latest memory, recent messages, and current question.
Maintain versioned local summaries and preserve selected responses as moments worth revisiting.
Use focused prompts to explore costs, gains, surprise, envy, stability, and other tensions inside a branch.
Compare timelines, review insights, create readable artifacts, and export one branch when its feature and entitlement rules allow it.
Keep local timelines available and route conversation to a simpler deterministic engine when connectivity or qualifying remote failures require it.
How it works
The experience moves from explicit consent to a timeline-scoped conversation and a user-controlled record.
Review that the alternate self is fictional, remote mode sends relevant context, and the product is not professional or emergency support.
Provide basic profile context, choose a current value, and select the divergence that will define the first branch.
Receive a locally generated branch title and summary with its own active state, messages, and memory.
Write freely or use a reflection prompt to examine what the alternate branch gained, lost, or learned.
Inspect the latest memory, open memory history, and save selected responses as moments.
Switch branches, compare timelines, export a readable artifact, clear a conversation, or delete the local branch.
Current interface
These simulator captures use fictional seeded data and show current development surfaces rather than production use or final App Store artwork.
View full size
Branches keep separate identities, conversations, memory, and local data controls.
View full size
Onboarding connects a current value and selected divergence to the first active timeline.
View full size
The app states that alternate selves are simulations and explains the remote context boundary.
View full size
Local export, conversation clearing, and timeline deletion remain distinct from remote account or provider-side deletion.
Product concept
The product gives counterfactual reflection a durable branch, then keeps that branch specific, uncertain, and clearly non-authoritative.
A divergence, identity, message history, and memory belong together instead of becoming context for a general-purpose assistant.
The alternate self can inhabit concrete tradeoffs without claiming to know what would actually have happened.
Safety rules, consent, AI transparency, local-mode notices, and data controls remain part of the experience rather than hidden policy text.
Architecture
The native app owns the timeline, prompt context, orchestration, and local records. A replaceable engine produces either deterministic on-device replies or provider-backed responses through the app-owned service.
Core Data stores profiles, timelines, messages, and versioned memory summaries without requiring a production remote account.
Cancellation or failed streaming should not save partial assistant text or update memory prematurely.
The TypeScript backend validates typed requests, selects the model, applies basic safeguards, and calls the AI provider without placing its credential in the iOS client.
The deterministic local engine keeps conversation available but is intentionally less expressive than remote generation.
Technology
Development
The native app, local data model, remote live-chat path, offline fallback, reflection features, trust surfaces, premium plumbing, and backend are substantially implemented. Mock authentication, StoreKit sandbox validation, legal destinations, TestFlight, final media, real-device QA, and full accessibility review remain unresolved.
Implemented
Release readiness
Complete App Store Connect and subscription configuration, validate sandbox purchase and restore, finalize hosted privacy, terms, support, and data disclosures, run release-like and physical-device QA, verify a controlled staging conversation, and prepare final screenshots before TestFlight distribution.
AlternateYou lab notes
Notes about the thinking, architecture, development, and decisions behind this work.
Trust screens, subscription plumbing, release documents, and an explicit blocker register made unfinished external work visible.
The first provider-backed conversation replaced the generation engine without replacing the app's timeline, safety, or persistence boundaries.
A deterministic local engine became the explicit continuity path when remote generation is unavailable.
Ordered prompt blocks made the active timeline a durable conversational identity rather than a cosmetic persona.