[ CASE STUDY · 02 / 03 ] ——— CLONARA · V1.0.1 · LIVE
satoshi@case-studies ~ $ cat clonara.brief

A living Persona
grown from real memories — not scraped ones.

A mobile app that lets a person capture memories — stories, voice notes, journals — and chat with a Persona that speaks in their tone, remembers what they told it, and can be shared with family through a revocable invite link.

Product engineering LLM UX iOS / Android Subscriptions i18n · 15 languages
[01]
AT_A_GLANCE/
6
onboarding questions
reflect · tone · memory · topics · goal · access
15
locales shipped
EN · ES · FR · DE · IT · PT · JA · KO · ZH · HI · AR · RU · TH · …
1:1
invite model
revocable per-recipient tokens
$4.99
monthly · 7-day trial
RevenueCat · Premium tier
[02]
THE_PROBLEM.MD

Most “AI companions” are blank characters. The interesting ones are yours.

A chatbot without a history is generic. A chatbot trained on your public posts is a stranger with your haircut. Neither is what people actually want when they say they’d like to leave something behind.

The design brief was to build the opposite: a Persona seeded only by what the user chooses to tell it, tunable on day one, and shareable only by explicit invite.

A.
Cold-start blandness
Generic AI chat apps feel the same five minutes in. There is no “you” in the replies.
B.
Memory drift
Context windows forget. The Persona contradicts itself because nothing is anchored to ground-truth memories.
C.
Sharing without consent
Family and friends want access, but users don’t want a public profile. One-click revoke is non-negotiable.
D.
Onboarding abandonment
If the Persona feels generic after 3 minutes, the user never returns. The first 90 seconds had to do real work.
[03]
APPROACH.MD
// FOUR MOVES

Seed the Persona in 60 seconds, then let memories do the work.

Onboarding asks six deliberate questions. Every chat request ships those answers plus a window of the user’s own memories — so the Persona’s tone is set by minute one and its content is always grounded in something the user actually said.

[01]
Opinionated onboarding
Six questions (reflect, tone, memory, topics, goal, access) shape the Persona’s voice before the first message is sent.
[02]
Memories as ground-truth
Each chat request attaches a relevant slice of memories. The model is steered by facts the user owns, not training data.
[03]
Invite-only sharing
Per-recipient tokens (universal-links via clonara.satoshi-ltd.com). Each one is independently revocable from the Manage Invitations screen.
[04]
Honest subscription
7-day free trial. One clear Premium tier. Free plan caps at 10 transcriptions so trial feels like the product, not a teaser.
[04]
PERSONA_DIAL/

Six questions, one Persona. No sliders, no jargon.

Instead of exposing a prompt-engineering surface, onboarding asks the same questions a biographer would. Answers are stored alongside the account and prepended to every chat as lightweight system context. The Persona’s voice matches the first screen the user saw — not a generic template.

Settings can rewrite any answer later, and an optional long-form prompt field lets power users dictate a custom persona description.

// DESIGN TENET
The fastest way to make a chatbot feel personal is to ask six concrete questions up-front — not to add another slider six screens deep.
FIG. 02 — ONBOARDING → PERSONAsatoshi-ltd/clonara
01
reflect
warmth · humor · wisdom · adventure
02
tone
friendly · thoughtful · playful · formal · personal
03
memory
childhood · lesson · funny · favorite
04
topics
which themes the persona leans into
05
goal
why the user is building this persona
06
access
who they imagine talking to it
Persona seed
Attached to every chat alongside a slice of the user’s memories.
[05]
MEMORY_PIPELINE/
// CHAT REQUEST

Every reply is anchored in memories the user wrote themselves.

Memories are first-class. Users add them by text, dictation (Whisper-grade transcription at 16 kHz mono), or imported journals. Each memory carries metadata — topic, date, priority — so the backend can surface the most relevant slice when a chat happens.

The client is offline-aware: NetInfo short-circuits any request when the device is offline, and AsyncStorage caches the last known state so the UI never crashes on a flight.

POST /chats/:id/message

{
  "text":    "What do you remember about grandma's house?",
  "context": {
    "persona":  { reflect: "warmth", tone: "thoughtful", ... },
    "memories": [
      { id: "m_01", topic: "childhood", date: "1994-07", text: "..." },
      { id: "m_12", topic: "family",    date: "2001-12", text: "..." },
      { id: "m_23", topic: "places",    date: "2015-04", text: "..." }
    ]
  }
}

→ 200 OK   reply grounded in user-owned facts
→ offline  short-circuits before the request even leaves the device
AUTH
Email + code
magic-code, no passwords, Bearer JWT
STORAGE
AsyncStorage
app-state · transcriptions · items · subs
AUDIO
16 kHz · mono
expo-av · 5-min cap · AAC / WAV
OFFLINE
NetInfo guard
requests short-circuit with typed error
BILLING
RevenueCat
monthly $4.99 · yearly $39.99 · 7-day trial
INVITATIONS
Universal links
applinks:clonara.satoshi-ltd.com
NOTIFICATIONS
expo-notifications
morning brief · evening review
BACKUPS
BackupService
export / restore memories + settings
[06]
BRAND/

A warm-paper aesthetic for an app about remembering.

Most AI products look like cold chrome. Clonara is the opposite: cream paper, warm brown ink, a single golden accent. Typography pairs a technical sans (Euclid Circular A) with an editorial serif (Canela Text) — utility for forms, intimacy for stories.

Clonara
BRAND SPECIMEN
#f3f2ee
paper
#EDE9E4
card
#473729
ink
#FFBC2d
accent
#A09485
muted
“Preserve your essence with a living Persona that grows with your memories.”
— ONBOARDING SLIDE 01 · CANELA TEXT ITALIC
[07]
OUTCOMES.TXT
  • Shipped to iOS and Android
    v1.0.1 on Expo SDK 54, RevenueCat billing live, universal-link invitations working.
  • Localised day one
    15 languages covered by a single i18n runtime, including RTL (Arabic) layout.
  • Offline-aware client
    Every API call is guarded; offline, timeout, and HTTP failures are typed and translated.
  • Consent model users understand
    Invitations are explicit, per-recipient, and revocable from one screen.
// WHAT WE LEARNED
“The interesting work wasn’t the model. It was deciding which six questions the user should answer before the Persona ever replies — and trusting that those six answers are the product.”
— satoshi-ltd product notes
← PREV
SplitPass
case study · 01 / 03