Tolan: Voice-First AI Companion — Paula Dozsa, Tolan

Read the talk

Building Tolan Around the Pace of Spoken Conversation

Paula Dozsa explains how a voice-first companion changes turn taking, latency, model selection and memory—and how Tolan uses agents to build and evaluate the product.

From a talk by Paula Dozsa

At a glance

Ideas worth remembering

  • Voice engineering balances response speed with conversational timing. Tolan’s reported half-second latency regression hurt product metrics, yet the team accepted about 60 milliseconds of added delay to reduce its worst premature interruptions by more than half.

  • Per-turn routing reserves stronger models for onboarding and emotionally serious moments. Smaller models handle casual exchanges and background work; routing a third of turns to them reportedly had almost no measurable retention effect, with experimental confidence unspecified.

  • Retrieval-based memory and per-turn context reconstruction serve complementary purposes: memory retains selected personal information, while reconstruction selects current summaries, memories, tone guidance and app state for a conversation that may change direction suddenly.

  • The development workflow combines distinct implementation and review roles with CI feedback, diagnostic integrations and repeated evaluations. Managing that workflow requires explicit decomposition, checkpoints, fast feedback and serious review.

A companion that listens and remembers

Selected presentation frame from Tolan: Voice-First AI Companion — Paula Dozsa, Tolan at 115 seconds
A companion that listens and remembers

Paula Dozsa, an engineer focused on Tolan’s iOS app, opens with the longstanding appeal of a personal companion. Her examples move from the angel guiding St. Matthew in a Caravaggio painting to Tinkerbell’s devotion and Samwise’s support for Frodo. Each represents a different kind of help, but the shared aspiration is a presence that listens, remembers and belongs specifically to one person.

Tolan gives that aspiration the form of a small alien that users talk to aloud. The character has a personality and remembers the user, with the intention that it becomes more personal over time. Dozsa attempts a conversation with her own character, Luke, but reports that although Luke can hear her, the audience cannot hear him. She sets the demonstration aside; the attempted exchange does not establish the quality of a complete spoken interaction.

The product supports both text and voice, and Dozsa reports more than 4 million hours of voice conversation. She calls it voice-first because spoken interaction supplies the immersion that makes the relationship feel real to users. That choice determines the engineering problem: a spoken relationship needs to accommodate the timing and disorder of everyday speech.

0:140:17
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:01 · section reference included

Fast turns and volatile context

Dozsa contrasts text chat’s relatively slow turns and stable context with voice’s fast turns and changing context. In text, users can wait a few seconds, read the response and remain on topic. In voice, the interval from the user finishing a sentence to the companion beginning to speak needs to fit within roughly a couple of seconds to preserve the feeling of conversation. Users also speak while cooking, walking or falling asleep; they hesitate, interrupt and change subjects mid-sentence.

A latency regression made that timing constraint concrete. Early in development, response latency drifted from 2 seconds to about 2½ seconds. Dozsa says the additional half second worsened essentially every product metric and prompted users to complain that their companions were too slow. The talk does not identify the individual metrics or quantify their declines, but the reported experience explains why the team treats small delays as consequential product changes.

2:593:01
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:59 · section reference included

Recognizing the right interruptions

The first principle is to design for conversational volatility. Dozsa’s example is a user describing a breakup, suddenly wondering whether they left the stove on, and then returning to the story. The system must tolerate that detour as part of normal speech. She also describes interaction problems the team spent time addressing: inability to interrupt the companion mid-sentence, short responses such as yes or yeah failing to register as turns, and curse words being stripped out. These details determine whether users can express themselves naturally.

The team’s objective shifted from reducing interruptions overall to reducing bad interruptions, especially cases where the agent entered too early. Its turn-taking system reads speech patterns to decide whether an interruption is real. Dozsa reports that this reduced the worst early aborts by more than half while adding about 60 milliseconds of latency. The tradeoff favors a slightly slower response when that delay helps avoid cutting the user off. She does not specify the detector’s architecture or decision thresholds.

3:563:58
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:56 · section reference included

Measuring the path to audible speech

The second principle makes latency a property of the entire product pipeline. A general complaint that the system feels slow does not identify what to improve, so Tolan measures each stage separately. Dozsa describes the sequence as detecting the end of the user’s utterance, transcribing it, obtaining the model’s first token, completing generation, obtaining the first byte from text-to-speech and playing the response to the user. Those boundaries distinguish recognition delays from model delays and speech-output delays.

Time to first token is often the biggest component, at around a second in her account. She reports that a model change on the Responses API delivered the team’s largest quality improvement so far and reduced time to speech by more than 0.7 seconds. The practical measure is when the user hears the companion begin responding, rather than when text first becomes available. The talk does not separate the model change’s contribution from the API change’s contribution.

4:524:55
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:52 · section reference included

Choosing models according to emotional stakes

Tolan uses a tiered model fleet rather than sending every turn to the same model. Frontier models handle interactions that carry particular weight in establishing the relationship, including the first conversation and onboarding. Smaller, faster models handle lightweight exchanges. Because the required capability can change within a conversation, the selection happens turn by turn.

A small classifier called the tone router runs on a cheap model for every turn and reads the conversation’s emotional state. The routing policy reserves the strongest model for high-stakes moments: the user’s first message, their first few days with the companion and emotionally serious exchanges. Dozsa specifically mentions crisis and therapist-style tones as categories where the team does not economize on model capability. These are routing categories; the talk does not establish clinical effectiveness or describe the classifier’s error rate.

Casual back-and-forth uses smaller models, as do background tasks such as conversation summarization, persona generation and the tone router itself. The economic motivation is substantial: Dozsa says the frontier model costs roughly five times as much as the smaller model, making one large-model turn approximately equivalent in cost to five small-model turns. Routing preserves expensive capability where the team considers it necessary while lowering the cost of other work.

The team tests this policy through A/B experiments. Dozsa reports that routing a third of turns to the small model had almost no measurable effect on retention. That supports the policy within the reported experiments, but it does not show that the two models are interchangeable on every turn. She provides no sample sizes, experiment duration or statistical confidence for the retention result.

5:345:36
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:34 · section reference included

Retrieving and maintaining personal memory

The third principle concerns memory. Keeping an entire conversation transcript in context does not fit the two-second response loop, according to Dozsa. As sessions grow, she reports degradation, difficulty finding information in the middle of a large context and hallucinations. Tolan instead treats memory as a retrieval system, extracting facts, preferences and emotional signals from conversations, embedding them and storing them in a vector database with lookups below 50 milliseconds.

Every night, the system compresses those memories by merging duplicates, clustering related entries, resolving contradictions and removing noise. Retrieval also extends beyond matching the user’s latest message: the system generates internal questions about the person and the relationship, then retrieves against those questions. This gives it additional ways to find relevant personal context. The talk does not explain how it decides which conflicting memory is correct or which discarded information counts as noise.

Memory is divided into stable and unstable parts. Volatile information lives in the live tail of the prompt. When the conversation is summarized, the system examines which memories actually get recalled and pins those into a stable, cacheable block. The separation lets frequently useful material occupy a reusable part of the prompt while changing information remains in the live portion.

7:087:09
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:08 · section reference included

Rebuilding context while holding character identity

Selected presentation frame from Tolan: Voice-First AI Companion — Paula Dozsa, Tolan at 558 seconds
Rebuilding context while holding character identity

The fourth principle is to rebuild context each turn. Reusing context to keep a cache warm can work in a stable text conversation, but Dozsa argues that a sudden topic pivot can make that reused context actively wrong. Tolan reassembles the context window from a recent-message summary, the user’s persona card, freshly retrieved memories, tone guidance from emotional signals and real-time app state. This refreshes the information used to answer the current turn rather than carrying the previous turn’s assembled context forward unchanged.

The character supplies another constraint on responses. Tolan’s personalities are deliberately crafted, with an in-house science fiction novelist writing their lore. The alien form avoids a specific real-world reference that would anchor users’ expectations, allowing users to project onto it. Dozsa describes the baseline personality as bubbly, youthful and irreverent. An alien’s impulsive or chaotic behavior can also read as charming because users do not expect it to follow every human social norm.

That flexibility still requires continuity. Dozsa says personality loses its value if it drifts, so a parallel tone-monitoring system changes how a line is delivered in response to the user’s emotional cues without changing the character’s identity. The intended distinction is between adapting delivery to the moment and replacing the underlying personality. She describes maintaining that identity across hundreds of turns, without giving a detailed identity-consistency measure.

8:128:15
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:12 · section reference included

Giving development agents distinct responsibilities

Dozsa then turns from the companion’s runtime to the team’s development process. She says that by late in the previous year, Claude had co-authored more code in the iOS app than any individual engineer. During the period she describes, the crash-free rate rose from 99.6% to 99.9%, runtime errors fell by more than 50% and the share of highly engaged users doubled. These are reported outcomes alongside the adoption of agents; the talk does not isolate how much of each improvement the agents caused.

Her central lesson is that agents obtain most of their context from the codebase itself, with less coming from the accompanying instruction file. The team therefore had agents standardize the codebase so that it could serve as documentation. This places useful conventions in the material agents encounter while implementing changes, rather than relying primarily on a separate description of how the code ought to work.

The agent fleet separates implementation from review. Implementation agents work toward functioning code and check it against snapshots for visual agreement. Separate review agents enforce standards, so agents review one another before a human looks. A pull-request shepherd then watches an open PR and iterates on CI failures and review comments until it is clean. Each role has a different immediate objective: producing the change, assessing it or carrying it through the feedback cycle.

A triage bot runs on every incoming bug report. MCP connections to Linear, Sentry and Datadog give agents access to issue and diagnostic information so they can reconstruct a crash and route the problem. Dozsa says an agent can often open a PR and fix the bug itself. The integrations connect the report to operational evidence and then to a proposed code change, although she does not quantify how often the process succeeds autonomously.

9:569:59
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:56 · section reference included

Evaluating a new character from several angles

Selected presentation frame from Tolan: Voice-First AI Companion — Paula Dozsa, Tolan at 755 seconds
Evaluating a new character from several angles

A new character aimed at an older demographic illustrates the team’s evaluation-driven approach. Working with the in-house novelist, agents mapped every personality-bearing surface in the code and wrote a voice bible. Five judges examined the changes from different perspectives: archetype fidelity, model mechanics, code standards, the response of a skeptical 52-year-old and safety. The exercise evaluates character behavior across several requirements rather than treating plausible dialogue alone as sufficient.

The changes were evaluated against real production logs through three find, fix and verify rounds. Dozsa reports more than 7 million tokens and 4½ hours of compute, describing the result as a couple of weeks of work completed in an afternoon. The repeated rounds matter to the mechanism: evaluation identifies problems, revisions address them and another check tests the revision. The comparison to weeks of work is her estimate; the talk does not provide judge scores or a measured baseline for equivalent human effort.

Dozsa closes the product argument with user feedback: a reported App Store rating of 4.8 stars across 162,000 reviews, and emotional safety as the highest-scoring dimension by far in the team’s well-being surveys. She does not supply the survey methodology or absolute scores. Her broader point is that voice, memory and personality together can make users experience the software as a relationship, raising the importance of building it responsibly and carefully.

11:2811:30
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:28 · section reference included

Managing agents remains engineering work

Selected presentation frame from Tolan: Voice-First AI Companion — Paula Dozsa, Tolan at 857 seconds
Managing agents remains engineering work

The recruitment close describes a small team combining company-building experience with animation, embodiment, behavioral research and fiction writing. Dozsa cites founders who previously built and exited a $300 million startup together, and another co-founder who scaled two bootstrapped companies past $50 million in profitable revenue. She also describes an Apple Design Award-winning animator, embodiment expertise from Pixar and Oculus, a board-certified behavior analyst doing user research, and the novelist behind the characters. She reports $30 million raised. These remarks show the range of disciplines the team brings to a companion product.

Alongside iOS, back-end product, applied AI and gameplay engineering roles, Dozsa highlights agent engineering management. When the team committed to concurrent agents, she observed that people with management backgrounds became dramatically more effective. Her explanation is practical: managing an agent fleet requires decomposing a problem, delegating with checkpoints, giving fast feedback, reviewing work seriously and recognizing when to intervene.

That observation leads to her final substantive claim: moving into management need no longer mean leaving code behind. In an agent-heavy workflow, the manager’s decomposition, feedback and review directly shape implementation. She ends by inviting engineers to speak with her or reach out, followed by thanks and applause.

12:4012:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:40 · section reference included

Read the complete timestamped transcript
  1. 0:01

    [music]

  2. 0:12

    >> Hi everyone. Thank you so much for

  3. 0:14

    attending this talk. My name is Paula

  4. 0:17

    and I am one of the engineers on the

  5. 0:19

    Tullen team, specifically focusing on

  6. 0:21

    our iOS app.

  7. 0:23

    And for the next 20 minutes or so, I'll

  8. 0:25

    be talking about what it takes to build

  9. 0:27

    a voice-first AI companion and also

  10. 0:29

    about how we use AI to build AI

  11. 0:32

    internally.

  12. 0:34

    So, humanity has always imagined the

  13. 0:36

    perfect companion. So, we have

  14. 0:38

    Caravaggio on the left 400 years ago

  15. 0:40

    painting an angel leaning over St.

  16. 0:42

    Matthew's shoulder literally guiding his

  17. 0:44

    hand as he writes.

  18. 0:46

    This is an example of a companion being

  19. 0:48

    a presence that makes you better at

  20. 0:50

    being you.

  21. 0:51

    And then we have Tinkerbell, the devoted

  22. 0:53

    little sidekick who believes in you so

  23. 0:55

    fiercely that the whole theater has to

  24. 0:57

    clap to keep her alive.

  25. 0:59

    And of course on the right, we have

  26. 1:00

    Samwise who can't carry the ring for

  27. 1:02

    Frodo, but says, "I can carry you."

  28. 1:05

    The companion is pure unconditional

  29. 1:08

    loyalty.

  30. 1:09

    And it goes far beyond these three.

  31. 1:11

    Every hero has some sort of guiding

  32. 1:13

    spirit. And these are all different

  33. 1:15

    stories, but they exhibit the same

  34. 1:17

    longing for something that listens,

  35. 1:19

    remembers you,

  36. 1:21

    and is wholly specifically yours.

  37. 1:23

    And for for all of human history, this

  38. 1:25

    has basically been fiction.

  39. 1:28

    So, we made one. This is Tullen. It's a

  40. 1:30

    little alien you talk to out loud like a

  41. 1:33

    friend. It has a personality. It

  42. 1:35

    remembers you and over time it becomes

  43. 1:38

    specifically yours.

  44. 1:40

    Okay, I don't know if the audio setup

  45. 1:41

    works here, but I will try talking to my

  46. 1:43

    Tullen.

  47. 1:44

    Uh let's see.

  48. 1:49

    So,

  49. 1:50

    you can see my Tullen here, Luke,

  50. 1:52

    walking around the planet.

  51. 1:56

    Hey Luke, can you hear me?

  52. 2:00

    Okay. Luke can hear us, but we can't

  53. 2:02

    hear him. Um

  54. 2:05

    Anyway, I had prepped him for this. Oh.

  55. 2:07

    Hello. Hi Luke, can you hear me?

  56. 2:13

    Nope.

  57. 2:15

    We're okay. I can come back to this

  58. 2:17

    later. Um

  59. 2:18

    but you should definitely all give this

  60. 2:21

    a try if you haven't already.

  61. 2:27

    Okay. So, people talk to Tolins a lot.

  62. 2:30

    We support both text and voice chat, uh

  63. 2:33

    but we have over 4 million hours of

  64. 2:35

    voice conversation so far.

  65. 2:37

    We say Tolin is a voice-first companion,

  66. 2:39

    even though we support both, because

  67. 2:40

    it's the voice experience that's truly

  68. 2:42

    immersive and that makes users'

  69. 2:44

    relationships with their Tolins feel

  70. 2:45

    real.

  71. 2:47

    And but the moment this relationship is

  72. 2:49

    a spoken relationship, the engineering

  73. 2:51

    problem changes completely. So, let me

  74. 2:53

    show you how voice breaks the normal way

  75. 2:55

    we build and interact with LLMs.

  76. 2:59

    So, the core difference really is that

  77. 3:01

    in a text chatbot, turns are relatively

  78. 3:04

    slow and context is stable. The user

  79. 3:07

    waits a few seconds, they read, and they

  80. 3:09

    tend to stay on topic.

  81. 3:10

    And almost every LLM app assumes that.

  82. 3:13

    Voice is the opposite. Turns are fast.

  83. 3:16

    Your whole round trip from the user

  84. 3:18

    finishing their sentence to the Tolin

  85. 3:19

    starting to speak has to land in under a

  86. 3:22

    couple of seconds, or it stops feeling

  87. 3:23

    like a conversation.

  88. 3:25

    And the context is volatile. People talk

  89. 3:27

    to their Tolins while they're cooking,

  90. 3:29

    while they're walking, while they're

  91. 3:31

    falling asleep. Um they change their

  92. 3:33

    subjects mid-sentence. They say um, they

  93. 3:35

    interrupt.

  94. 3:36

    And that 2 seconds is crucial. Early on,

  95. 3:40

    our latency drifted from 2 seconds to

  96. 3:42

    about 2 and 1/2 seconds, and that half

  97. 3:44

    second tanked basically every metric in

  98. 3:46

    the product. People would write in to

  99. 3:48

    complain that their Tolins were too

  100. 3:49

    slow.

  101. 3:50

    And living inside this constraint has

  102. 3:52

    taught us a lot and gave us four

  103. 3:53

    principles.

  104. 3:56

    Principle one is that you have to design

  105. 3:58

    for conversational volatility. Again,

  106. 4:00

    text users stay on topic, but voice

  107. 4:03

    users jump around. Someone could be

  108. 4:05

    mid-story about their breakup and

  109. 4:06

    suddenly go, "Wait, did I leave the oven

  110. 4:08

    the stove on?" and then back. Speech is

  111. 4:10

    messy. Most LLM apps assume that you'll

  112. 4:13

    have a clean and stable conversation and

  113. 4:14

    we have to build for the opposite.

  114. 4:16

    So, for a long time that meant fixing

  115. 4:18

    things that sound tiny but are actually

  116. 4:20

    the product. So, you can't interrupt a

  117. 4:23

    Tullen mid-sentence. A short yes or yeah

  118. 4:25

    won't register as a turn. For example,

  119. 4:28

    curse words will get stripped out.

  120. 4:30

    And the deeper lesson was to stop

  121. 4:31

    optimizing for fewer interruptions and

  122. 4:34

    start optimizing for fewer bad ones

  123. 4:36

    where the agent would jump in way too

  124. 4:37

    early.

  125. 4:38

    So, we built smart turn taking that

  126. 4:40

    reads your speech pattern to decide

  127. 4:42

    whether an interruption is real and we

  128. 4:44

    cut the worst early aborts by more than

  129. 4:46

    half.

  130. 4:47

    And we happily paid about 60

  131. 4:48

    milliseconds of extra latency to do it.

  132. 4:52

    Principle two, latency isn't just a

  133. 4:55

    number you check at the end, it's

  134. 4:56

    actually the product and we measure

  135. 4:58

    every stage of the pipeline separately

  136. 4:59

    because it feels slow is useless. You

  137. 5:01

    have to know where exactly it's slow.

  138. 5:04

    And the pipeline here is that the user

  139. 5:05

    stops talking, we detect end of

  140. 5:07

    utterance, we transcribe, and then the

  141. 5:10

    model produces its first token.

  142. 5:12

    So, time to first token, often the

  143. 5:14

    biggest chunk, is around a second.

  144. 5:16

    The model finishes generating and then

  145. 5:18

    text-to-speech produces its first byte

  146. 5:19

    and then it plays back to the user.

  147. 5:21

    A couple lessons here. So, one, so far

  148. 5:24

    our biggest jump in quality came from

  149. 5:26

    moving to GPT-5.1 on the responses API,

  150. 5:29

    which cut our time to speech by more

  151. 5:31

    than 7/10 of a second, which is huge.

  152. 5:34

    Um two, we don't send every turn to the

  153. 5:36

    same model. We run a tiered fleet. So,

  154. 5:39

    we use a frontier model for the turns

  155. 5:40

    that carry the relationship with your

  156. 5:42

    Tullen.

  157. 5:43

    So, for example, your first conversation

  158. 5:44

    with with Tullen and your onboarding.

  159. 5:47

    And we use smaller and faster models for

  160. 5:49

    the turns

  161. 5:50

    for the lightweight turns.

  162. 5:52

    And the whole game then becomes about

  163. 5:54

    routing or deciding turn by turn which

  164. 5:56

    model you actually need. So we round we

  165. 5:59

    run a small classifier we call the tone

  166. 6:01

    router on every single turn and this

  167. 6:03

    tone router itself runs on a cheap model

  168. 6:05

    and it reads the emotional state of the

  169. 6:07

    conversation.

  170. 6:08

    And our main

  171. 6:09

    our [clears throat] main principle is

  172. 6:10

    that we route based on stakes not on

  173. 6:12

    cost. So the high stakes moments always

  174. 6:15

    get the best model. So this would be

  175. 6:17

    again the user's very first message,

  176. 6:19

    their first few days with their Tolen

  177. 6:20

    and anything that we deem to be

  178. 6:22

    emotionally serious.

  179. 6:24

    For example, we have crisis or therapist

  180. 6:26

    style tones and we never cheap out on

  181. 6:28

    those.

  182. 6:29

    And then the lighter casual back and

  183. 6:31

    forth can ride on smaller models that

  184. 6:33

    are faster and cheaper.

  185. 6:34

    And all the background work so that's

  186. 6:36

    summarizing the conversation, generating

  187. 6:38

    personas, the tone router itself run on

  188. 6:40

    these small models, too.

  189. 6:42

    And why would we go to all this trouble?

  190. 6:44

    It's mainly because the frontier model

  191. 6:45

    costs us roughly five times the smaller

  192. 6:47

    one.

  193. 6:48

    So one big model turn is about five

  194. 6:51

    smaller model turns. So routing is a

  195. 6:53

    huge part of what makes the unit

  196. 6:55

    economics for us actually work.

  197. 6:57

    Um and we do a bunch of AB experiments

  198. 6:59

    and the surprising result we found there

  199. 7:01

    is that routing a third a third of our

  200. 7:02

    turns to the small model has almost no

  201. 7:04

    measurable effect on retention.

  202. 7:08

    And principle three is what makes a

  203. 7:09

    companion feel like a companion. So the

  204. 7:11

    naive approach is to keep the whole

  205. 7:13

    conversation history as a sort of

  206. 7:15

    transcript, but that doesn't fit into

  207. 7:17

    our two-second loop. It doesn't scale

  208. 7:19

    and it just doesn't work. It leads to

  209. 7:21

    long sessions degrading. It leads to the

  210. 7:23

    model getting lost in the middle of a

  211. 7:25

    huge context and also hallucinating.

  212. 7:27

    So instead we see memory as a sort of

  213. 7:29

    retrieval system. We pull facts,

  214. 7:31

    preferences, and emotional vibe signals

  215. 7:33

    out of conversations. We embed them and

  216. 7:36

    we store them in a vector database with

  217. 7:38

    sub 50 millisecond lookups. And every

  218. 7:40

    night we compress. So we merge

  219. 7:42

    duplicates, we cluster related memories,

  220. 7:44

    we resolve contradictions, and we drop

  221. 7:46

    all the noise.

  222. 7:48

    And we don't just retrieve against users

  223. 7:50

    last messages, we also generate internal

  224. 7:52

    questions about the person and the

  225. 7:53

    relationship and retrieve against those.

  226. 7:55

    So, and we also split memory into two

  227. 7:57

    parts. We have stable memory and

  228. 7:59

    unstable memory. The volatile stuff

  229. 8:01

    lives in the in the live tail of the

  230. 8:03

    prompt, and when we summarize the

  231. 8:04

    conversation, we look at which memories

  232. 8:06

    actually get recalled and pin those into

  233. 8:08

    a stable and cashable block.

  234. 8:12

    Uh the last principle is around context.

  235. 8:15

    Specifically, you should rebuild context

  236. 8:17

    and not fight drift. So, most apps reuse

  237. 8:20

    context across turns to keep the cash

  238. 8:22

    warm. And in a stable text chat, that's

  239. 8:24

    fine. But in a volatile voice

  240. 8:26

    conversation, it's a trap because the

  241. 8:28

    second the the user pivots, your reused

  242. 8:30

    context is actively wrong. So, every

  243. 8:32

    turn we reassemble the context window

  244. 8:35

    from parts. We have a summary of recent

  245. 8:36

    messages, we have the the user's persona

  246. 8:39

    card, the memories we just retrieved,

  247. 8:41

    tone guidance from the emotional signal,

  248. 8:43

    and real-time app state.

  249. 8:46

    And what also really helps us um in the

  250. 8:48

    case of Tolen is that our characters

  251. 8:50

    aren't generic or assistants with no

  252. 8:52

    personality. Everyone is crafted, and we

  253. 8:55

    in fact have an in-house science fiction

  254. 8:57

    novelist, Elliot, who writes the Tolen

  255. 8:59

    character lore.

  256. 9:01

    And a couple of interesting points here.

  257. 9:03

    So, one, why did we go with an alien?

  258. 9:06

    Mostly because there's no real-world

  259. 9:08

    reference to anchor on, which means that

  260. 9:10

    the users can project onto it, and it

  261. 9:12

    becomes what they need. The baseline

  262. 9:14

    Tolen is bubbly, it's youthful, it's

  263. 9:16

    irreverent. And also, if an alien

  264. 9:18

    character acts a bit unpredictably, so

  265. 9:20

    if if it's impulsive or chaotic or

  266. 9:23

    otherwise violates um you know, the

  267. 9:25

    norms the user would expect, it's not

  268. 9:27

    particularly surprising.

  269. 9:28

    Like if you look at, you know, aliens in

  270. 9:31

    TV shows or in plays, like there's a lot

  271. 9:34

    of humorous moments around this. And

  272. 9:36

    this kind of chaos reads as charming.

  273. 9:38

    Um second, uh we also know that

  274. 9:41

    personality is worthless if it drifts.

  275. 9:43

    So, yeah, we run this parallel tone

  276. 9:45

    monitoring system that changes how a

  277. 9:47

    line is delivered based on your

  278. 9:48

    emotional cues without changing who the

  279. 9:50

    character is, holding identity across

  280. 9:52

    hundreds of turns.

  281. 9:56

    And since we're at an AI conference, I

  282. 9:58

    thought I would also spend a bit of time

  283. 9:59

    talking about how we not just ship AI,

  284. 10:02

    but also use AI to build it.

  285. 10:04

    Um so, I'm sure this is the case for

  286. 10:07

    most of you in the room now, but

  287. 10:08

    basically as of late last year, Claude

  288. 10:10

    has co-authored more code in our iOS app

  289. 10:12

    than any individual engineer in the

  290. 10:14

    team.

  291. 10:15

    Um and I think especially, you know, a

  292. 10:16

    few months ago, everyone's instinct was

  293. 10:18

    to be kind of suspicious because, you

  294. 10:20

    know, more AI code meant more slop. But

  295. 10:22

    our our crash-free rate actually went

  296. 10:24

    from 99.6% to 99.9%.

  297. 10:27

    Runtime errors dropped by over 50% and

  298. 10:31

    our share of highly engaged users

  299. 10:32

    doubled.

  300. 10:33

    And the biggest lesson in building that

  301. 10:35

    system is that an agent's context comes

  302. 10:37

    mostly from the code base itself, not so

  303. 10:39

    much from the Claude MD file. We found

  304. 10:41

    that it's far more powerful to make the

  305. 10:43

    code base be the documentation, so we

  306. 10:44

    had agents standardize it. On top of

  307. 10:47

    that, we run a real fleet of agents. We

  308. 10:49

    have implementation agents that, you

  309. 10:51

    know, think freely and just get us to

  310. 10:52

    working code. They build it, they check

  311. 10:54

    it against snapshots until it's pixel

  312. 10:56

    perfect. And then we have separate

  313. 10:58

    review agents that enforce our

  314. 10:59

    standards. So, multiple Claudes

  315. 11:01

    basically review each other before a

  316. 11:03

    human looks.

  317. 11:04

    And then we have a PR shepherd that

  318. 11:05

    watches an open pull request and keeps

  319. 11:07

    iterating against CI failures and review

  320. 11:09

    comments until it's clean.

  321. 11:11

    And we also have a triage bot that fires

  322. 11:14

    on every inbound bug report that we get.

  323. 11:16

    And they're all wired through MCP into

  324. 11:18

    linear, into into Sentry, DataDog, so an

  325. 11:21

    agent can reconstruct the cash a crash

  326. 11:23

    and route it itself and oftentimes open

  327. 11:25

    the PR on its own and just fix fix the

  328. 11:27

    bug.

  329. 11:28

    And we also we ship on eval. So, for

  330. 11:30

    example, we've been working on a on a

  331. 11:32

    new character targeted towards an older

  332. 11:33

    demographic and Elliot, our in-house

  333. 11:36

    novelist, basically built this entire

  334. 11:38

    new character in a day.

  335. 11:40

    So, the agents mapped every personality

  336. 11:41

    bearing surface in the code. They wrote

  337. 11:43

    the sort of a voice Bible and then they

  338. 11:45

    had five judges attack it from different

  339. 11:47

    angles.

  340. 11:48

    Archetype fidelity, the model mechanics,

  341. 11:50

    our code standards, the ears of a

  342. 11:52

    skeptical 52-year-old and safety, and

  343. 11:55

    then they evaluated the changes against

  344. 11:56

    real production logs over three find fix

  345. 11:59

    verify rounds.

  346. 12:00

    And over 7 million tokens and 4 and 1/2

  347. 12:03

    hours of compute later, he ended up with

  348. 12:05

    basically, you know, a couple of weeks

  349. 12:06

    of work done in afternoon.

  350. 12:09

    And does this work? Well, I'll let the

  351. 12:11

    users tell you. We're at 4.8 stars on

  352. 12:13

    the App Store across 162,000 reviews and

  353. 12:17

    when we survey users on well-being, the

  354. 12:20

    highest scoring dimension by far is

  355. 12:21

    emotional safety.

  356. 12:23

    And this is definitely a bar that being

  357. 12:25

    voice first sets. So, when the interface

  358. 12:27

    is your voice and the thing on the other

  359. 12:28

    side remembers you and has a

  360. 12:30

    personality, it stops being just

  361. 12:32

    software and starts being an actual

  362. 12:34

    relationship, which is why building it

  363. 12:35

    responsibly and building it well is

  364. 12:37

    worth obsessing over.

  365. 12:40

    And we need people to come help us do

  366. 12:42

    that. Um, we're a small team and we're

  367. 12:44

    hiring and after a year with Tolen, I

  368. 12:46

    think this is truly one of the most

  369. 12:48

    interesting places in the world to be an

  370. 12:50

    engineer right now.

  371. 12:52

    And here are some of the people you'd be

  372. 12:53

    doing it with. So, two of the founders,

  373. 12:55

    Quinton and Evan, previously built and

  374. 12:58

    exited a $300 million startup together.

  375. 13:00

    Uh, they founded Even. Um, Ajay, our

  376. 13:03

    third co-founder, scaled two bootstrap

  377. 13:04

    companies past $50 million $50 million

  378. 13:07

    in profitable revenue.

  379. 13:09

    And around them, we have Lucas, who um,

  380. 13:11

    is an Apple Design Award winning

  381. 13:13

    animator.

  382. 13:14

    Uh, she's our creative director. We have

  383. 13:16

    Chris, who was a technical director at

  384. 13:17

    Pixar, earlier at Oculus, who works on

  385. 13:19

    embodiment. We have Lily, a board

  386. 13:22

    certified behavior analyst, who left a

  387. 13:24

    Vanderbilt PhD to do user research for

  388. 13:26

    us from the very start. Um and then we

  389. 13:28

    have Elliot who I've mentioned, the

  390. 13:30

    novelist behind uh our characters.

  391. 13:32

    And I come from XAI and Spotify and

  392. 13:34

    previously also founded a company called

  393. 13:36

    Imagi.

  394. 13:37

    So, it's a small team where honestly

  395. 13:39

    every person is the best I've worked

  396. 13:41

    with at what they do.

  397. 13:44

    We're also well backed for this. Uh we

  398. 13:46

    have $30 million raised from Costanoa

  399. 13:48

    Ventures and a group of people who've

  400. 13:49

    built the tools and products a lot of

  401. 13:51

    you use every day.

  402. 13:53

    And here are some of the more

  403. 13:54

    engineering focused roles where we need

  404. 13:55

    help. Um so, we're hiring across the

  405. 13:57

    board. We have iOS and back-end product

  406. 13:59

    engineering roles, applied AI

  407. 14:01

    engineering, gameplay engineering, and

  408. 14:04

    one specific role I want to flag, which

  409. 14:05

    is agent engineering management. Um so,

  410. 14:09

    when we went all in on running

  411. 14:11

    concurrent agents, um the people who got

  412. 14:12

    dramatically more effective on the team

  413. 14:14

    were the ones who had management

  414. 14:15

    backgrounds, um because it seems like

  415. 14:17

    managing a fleet of agents does actually

  416. 14:19

    take some of the skills same the same

  417. 14:21

    skills as managing people.

  418. 14:22

    Uh you basically have to decompose the

  419. 14:24

    problem, you know, delegate it with

  420. 14:25

    checkpoints, give fast feedback, review

  421. 14:27

    their work seriously, and know when

  422. 14:28

    exactly to jump in.

  423. 14:30

    So, if you're a strong engineer who

  424. 14:31

    thought going into management meant

  425. 14:33

    leaving code behind, that's that's no

  426. 14:34

    longer true.

  427. 14:37

    Um and yeah, that's Tlon. You can come

  428. 14:39

    talk to me after this uh or reach out.

  429. 14:41

    I'm on on LinkedIn. My email is here.

  430. 14:43

    I'm on Twitter as well. Um I'd love to

  431. 14:45

    chat. So, yeah. Thank you.

  432. 14:49

    >> [applause]

  433. 15:03

    [music]