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
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Read the complete timestamped transcript
- 0:01
[music]
- 0:12
>> Hi everyone. Thank you so much for
- 0:14
attending this talk. My name is Paula
- 0:17
and I am one of the engineers on the
- 0:19
Tullen team, specifically focusing on
- 0:21
our iOS app.
- 0:23
And for the next 20 minutes or so, I'll
- 0:25
be talking about what it takes to build
- 0:27
a voice-first AI companion and also
- 0:29
about how we use AI to build AI
- 0:32
internally.
- 0:34
So, humanity has always imagined the
- 0:36
perfect companion. So, we have
- 0:38
Caravaggio on the left 400 years ago
- 0:40
painting an angel leaning over St.
- 0:42
Matthew's shoulder literally guiding his
- 0:44
hand as he writes.
- 0:46
This is an example of a companion being
- 0:48
a presence that makes you better at
- 0:50
being you.
- 0:51
And then we have Tinkerbell, the devoted
- 0:53
little sidekick who believes in you so
- 0:55
fiercely that the whole theater has to
- 0:57
clap to keep her alive.
- 0:59
And of course on the right, we have
- 1:00
Samwise who can't carry the ring for
- 1:02
Frodo, but says, "I can carry you."
- 1:05
The companion is pure unconditional
- 1:08
loyalty.
- 1:09
And it goes far beyond these three.
- 1:11
Every hero has some sort of guiding
- 1:13
spirit. And these are all different
- 1:15
stories, but they exhibit the same
- 1:17
longing for something that listens,
- 1:19
remembers you,
- 1:21
and is wholly specifically yours.
- 1:23
And for for all of human history, this
- 1:25
has basically been fiction.
- 1:28
So, we made one. This is Tullen. It's a
- 1:30
little alien you talk to out loud like a
- 1:33
friend. It has a personality. It
- 1:35
remembers you and over time it becomes
- 1:38
specifically yours.
- 1:40
Okay, I don't know if the audio setup
- 1:41
works here, but I will try talking to my
- 1:43
Tullen.
- 1:44
Uh let's see.
- 1:49
So,
- 1:50
you can see my Tullen here, Luke,
- 1:52
walking around the planet.
- 1:56
Hey Luke, can you hear me?
- 2:00
Okay. Luke can hear us, but we can't
- 2:02
hear him. Um
- 2:05
Anyway, I had prepped him for this. Oh.
- 2:07
Hello. Hi Luke, can you hear me?
- 2:13
Nope.
- 2:15
We're okay. I can come back to this
- 2:17
later. Um
- 2:18
but you should definitely all give this
- 2:21
a try if you haven't already.
- 2:27
Okay. So, people talk to Tolins a lot.
- 2:30
We support both text and voice chat, uh
- 2:33
but we have over 4 million hours of
- 2:35
voice conversation so far.
- 2:37
We say Tolin is a voice-first companion,
- 2:39
even though we support both, because
- 2:40
it's the voice experience that's truly
- 2:42
immersive and that makes users'
- 2:44
relationships with their Tolins feel
- 2:45
real.
- 2:47
And but the moment this relationship is
- 2:49
a spoken relationship, the engineering
- 2:51
problem changes completely. So, let me
- 2:53
show you how voice breaks the normal way
- 2:55
we build and interact with LLMs.
- 2:59
So, the core difference really is that
- 3:01
in a text chatbot, turns are relatively
- 3:04
slow and context is stable. The user
- 3:07
waits a few seconds, they read, and they
- 3:09
tend to stay on topic.
- 3:10
And almost every LLM app assumes that.
- 3:13
Voice is the opposite. Turns are fast.
- 3:16
Your whole round trip from the user
- 3:18
finishing their sentence to the Tolin
- 3:19
starting to speak has to land in under a
- 3:22
couple of seconds, or it stops feeling
- 3:23
like a conversation.
- 3:25
And the context is volatile. People talk
- 3:27
to their Tolins while they're cooking,
- 3:29
while they're walking, while they're
- 3:31
falling asleep. Um they change their
- 3:33
subjects mid-sentence. They say um, they
- 3:35
interrupt.
- 3:36
And that 2 seconds is crucial. Early on,
- 3:40
our latency drifted from 2 seconds to
- 3:42
about 2 and 1/2 seconds, and that half
- 3:44
second tanked basically every metric in
- 3:46
the product. People would write in to
- 3:48
complain that their Tolins were too
- 3:49
slow.
- 3:50
And living inside this constraint has
- 3:52
taught us a lot and gave us four
- 3:53
principles.
- 3:56
Principle one is that you have to design
- 3:58
for conversational volatility. Again,
- 4:00
text users stay on topic, but voice
- 4:03
users jump around. Someone could be
- 4:05
mid-story about their breakup and
- 4:06
suddenly go, "Wait, did I leave the oven
- 4:08
the stove on?" and then back. Speech is
- 4:10
messy. Most LLM apps assume that you'll
- 4:13
have a clean and stable conversation and
- 4:14
we have to build for the opposite.
- 4:16
So, for a long time that meant fixing
- 4:18
things that sound tiny but are actually
- 4:20
the product. So, you can't interrupt a
- 4:23
Tullen mid-sentence. A short yes or yeah
- 4:25
won't register as a turn. For example,
- 4:28
curse words will get stripped out.
- 4:30
And the deeper lesson was to stop
- 4:31
optimizing for fewer interruptions and
- 4:34
start optimizing for fewer bad ones
- 4:36
where the agent would jump in way too
- 4:37
early.
- 4:38
So, we built smart turn taking that
- 4:40
reads your speech pattern to decide
- 4:42
whether an interruption is real and we
- 4:44
cut the worst early aborts by more than
- 4:46
half.
- 4:47
And we happily paid about 60
- 4:48
milliseconds of extra latency to do it.
- 4:52
Principle two, latency isn't just a
- 4:55
number you check at the end, it's
- 4:56
actually the product and we measure
- 4:58
every stage of the pipeline separately
- 4:59
because it feels slow is useless. You
- 5:01
have to know where exactly it's slow.
- 5:04
And the pipeline here is that the user
- 5:05
stops talking, we detect end of
- 5:07
utterance, we transcribe, and then the
- 5:10
model produces its first token.
- 5:12
So, time to first token, often the
- 5:14
biggest chunk, is around a second.
- 5:16
The model finishes generating and then
- 5:18
text-to-speech produces its first byte
- 5:19
and then it plays back to the user.
- 5:21
A couple lessons here. So, one, so far
- 5:24
our biggest jump in quality came from
- 5:26
moving to GPT-5.1 on the responses API,
- 5:29
which cut our time to speech by more
- 5:31
than 7/10 of a second, which is huge.
- 5:34
Um two, we don't send every turn to the
- 5:36
same model. We run a tiered fleet. So,
- 5:39
we use a frontier model for the turns
- 5:40
that carry the relationship with your
- 5:42
Tullen.
- 5:43
So, for example, your first conversation
- 5:44
with with Tullen and your onboarding.
- 5:47
And we use smaller and faster models for
- 5:49
the turns
- 5:50
for the lightweight turns.
- 5:52
And the whole game then becomes about
- 5:54
routing or deciding turn by turn which
- 5:56
model you actually need. So we round we
- 5:59
run a small classifier we call the tone
- 6:01
router on every single turn and this
- 6:03
tone router itself runs on a cheap model
- 6:05
and it reads the emotional state of the
- 6:07
conversation.
- 6:08
And our main
- 6:09
our [clears throat] main principle is
- 6:10
that we route based on stakes not on
- 6:12
cost. So the high stakes moments always
- 6:15
get the best model. So this would be
- 6:17
again the user's very first message,
- 6:19
their first few days with their Tolen
- 6:20
and anything that we deem to be
- 6:22
emotionally serious.
- 6:24
For example, we have crisis or therapist
- 6:26
style tones and we never cheap out on
- 6:28
those.
- 6:29
And then the lighter casual back and
- 6:31
forth can ride on smaller models that
- 6:33
are faster and cheaper.
- 6:34
And all the background work so that's
- 6:36
summarizing the conversation, generating
- 6:38
personas, the tone router itself run on
- 6:40
these small models, too.
- 6:42
And why would we go to all this trouble?
- 6:44
It's mainly because the frontier model
- 6:45
costs us roughly five times the smaller
- 6:47
one.
- 6:48
So one big model turn is about five
- 6:51
smaller model turns. So routing is a
- 6:53
huge part of what makes the unit
- 6:55
economics for us actually work.
- 6:57
Um and we do a bunch of AB experiments
- 6:59
and the surprising result we found there
- 7:01
is that routing a third a third of our
- 7:02
turns to the small model has almost no
- 7:04
measurable effect on retention.
- 7:08
And principle three is what makes a
- 7:09
companion feel like a companion. So the
- 7:11
naive approach is to keep the whole
- 7:13
conversation history as a sort of
- 7:15
transcript, but that doesn't fit into
- 7:17
our two-second loop. It doesn't scale
- 7:19
and it just doesn't work. It leads to
- 7:21
long sessions degrading. It leads to the
- 7:23
model getting lost in the middle of a
- 7:25
huge context and also hallucinating.
- 7:27
So instead we see memory as a sort of
- 7:29
retrieval system. We pull facts,
- 7:31
preferences, and emotional vibe signals
- 7:33
out of conversations. We embed them and
- 7:36
we store them in a vector database with
- 7:38
sub 50 millisecond lookups. And every
- 7:40
night we compress. So we merge
- 7:42
duplicates, we cluster related memories,
- 7:44
we resolve contradictions, and we drop
- 7:46
all the noise.
- 7:48
And we don't just retrieve against users
- 7:50
last messages, we also generate internal
- 7:52
questions about the person and the
- 7:53
relationship and retrieve against those.
- 7:55
So, and we also split memory into two
- 7:57
parts. We have stable memory and
- 7:59
unstable memory. The volatile stuff
- 8:01
lives in the in the live tail of the
- 8:03
prompt, and when we summarize the
- 8:04
conversation, we look at which memories
- 8:06
actually get recalled and pin those into
- 8:08
a stable and cashable block.
- 8:12
Uh the last principle is around context.
- 8:15
Specifically, you should rebuild context
- 8:17
and not fight drift. So, most apps reuse
- 8:20
context across turns to keep the cash
- 8:22
warm. And in a stable text chat, that's
- 8:24
fine. But in a volatile voice
- 8:26
conversation, it's a trap because the
- 8:28
second the the user pivots, your reused
- 8:30
context is actively wrong. So, every
- 8:32
turn we reassemble the context window
- 8:35
from parts. We have a summary of recent
- 8:36
messages, we have the the user's persona
- 8:39
card, the memories we just retrieved,
- 8:41
tone guidance from the emotional signal,
- 8:43
and real-time app state.
- 8:46
And what also really helps us um in the
- 8:48
case of Tolen is that our characters
- 8:50
aren't generic or assistants with no
- 8:52
personality. Everyone is crafted, and we
- 8:55
in fact have an in-house science fiction
- 8:57
novelist, Elliot, who writes the Tolen
- 8:59
character lore.
- 9:01
And a couple of interesting points here.
- 9:03
So, one, why did we go with an alien?
- 9:06
Mostly because there's no real-world
- 9:08
reference to anchor on, which means that
- 9:10
the users can project onto it, and it
- 9:12
becomes what they need. The baseline
- 9:14
Tolen is bubbly, it's youthful, it's
- 9:16
irreverent. And also, if an alien
- 9:18
character acts a bit unpredictably, so
- 9:20
if if it's impulsive or chaotic or
- 9:23
otherwise violates um you know, the
- 9:25
norms the user would expect, it's not
- 9:27
particularly surprising.
- 9:28
Like if you look at, you know, aliens in
- 9:31
TV shows or in plays, like there's a lot
- 9:34
of humorous moments around this. And
- 9:36
this kind of chaos reads as charming.
- 9:38
Um second, uh we also know that
- 9:41
personality is worthless if it drifts.
- 9:43
So, yeah, we run this parallel tone
- 9:45
monitoring system that changes how a
- 9:47
line is delivered based on your
- 9:48
emotional cues without changing who the
- 9:50
character is, holding identity across
- 9:52
hundreds of turns.
- 9:56
And since we're at an AI conference, I
- 9:58
thought I would also spend a bit of time
- 9:59
talking about how we not just ship AI,
- 10:02
but also use AI to build it.
- 10:04
Um so, I'm sure this is the case for
- 10:07
most of you in the room now, but
- 10:08
basically as of late last year, Claude
- 10:10
has co-authored more code in our iOS app
- 10:12
than any individual engineer in the
- 10:14
team.
- 10:15
Um and I think especially, you know, a
- 10:16
few months ago, everyone's instinct was
- 10:18
to be kind of suspicious because, you
- 10:20
know, more AI code meant more slop. But
- 10:22
our our crash-free rate actually went
- 10:24
from 99.6% to 99.9%.
- 10:27
Runtime errors dropped by over 50% and
- 10:31
our share of highly engaged users
- 10:32
doubled.
- 10:33
And the biggest lesson in building that
- 10:35
system is that an agent's context comes
- 10:37
mostly from the code base itself, not so
- 10:39
much from the Claude MD file. We found
- 10:41
that it's far more powerful to make the
- 10:43
code base be the documentation, so we
- 10:44
had agents standardize it. On top of
- 10:47
that, we run a real fleet of agents. We
- 10:49
have implementation agents that, you
- 10:51
know, think freely and just get us to
- 10:52
working code. They build it, they check
- 10:54
it against snapshots until it's pixel
- 10:56
perfect. And then we have separate
- 10:58
review agents that enforce our
- 10:59
standards. So, multiple Claudes
- 11:01
basically review each other before a
- 11:03
human looks.
- 11:04
And then we have a PR shepherd that
- 11:05
watches an open pull request and keeps
- 11:07
iterating against CI failures and review
- 11:09
comments until it's clean.
- 11:11
And we also have a triage bot that fires
- 11:14
on every inbound bug report that we get.
- 11:16
And they're all wired through MCP into
- 11:18
linear, into into Sentry, DataDog, so an
- 11:21
agent can reconstruct the cash a crash
- 11:23
and route it itself and oftentimes open
- 11:25
the PR on its own and just fix fix the
- 11:27
bug.
- 11:28
And we also we ship on eval. So, for
- 11:30
example, we've been working on a on a
- 11:32
new character targeted towards an older
- 11:33
demographic and Elliot, our in-house
- 11:36
novelist, basically built this entire
- 11:38
new character in a day.
- 11:40
So, the agents mapped every personality
- 11:41
bearing surface in the code. They wrote
- 11:43
the sort of a voice Bible and then they
- 11:45
had five judges attack it from different
- 11:47
angles.
- 11:48
Archetype fidelity, the model mechanics,
- 11:50
our code standards, the ears of a
- 11:52
skeptical 52-year-old and safety, and
- 11:55
then they evaluated the changes against
- 11:56
real production logs over three find fix
- 11:59
verify rounds.
- 12:00
And over 7 million tokens and 4 and 1/2
- 12:03
hours of compute later, he ended up with
- 12:05
basically, you know, a couple of weeks
- 12:06
of work done in afternoon.
- 12:09
And does this work? Well, I'll let the
- 12:11
users tell you. We're at 4.8 stars on
- 12:13
the App Store across 162,000 reviews and
- 12:17
when we survey users on well-being, the
- 12:20
highest scoring dimension by far is
- 12:21
emotional safety.
- 12:23
And this is definitely a bar that being
- 12:25
voice first sets. So, when the interface
- 12:27
is your voice and the thing on the other
- 12:28
side remembers you and has a
- 12:30
personality, it stops being just
- 12:32
software and starts being an actual
- 12:34
relationship, which is why building it
- 12:35
responsibly and building it well is
- 12:37
worth obsessing over.
- 12:40
And we need people to come help us do
- 12:42
that. Um, we're a small team and we're
- 12:44
hiring and after a year with Tolen, I
- 12:46
think this is truly one of the most
- 12:48
interesting places in the world to be an
- 12:50
engineer right now.
- 12:52
And here are some of the people you'd be
- 12:53
doing it with. So, two of the founders,
- 12:55
Quinton and Evan, previously built and
- 12:58
exited a $300 million startup together.
- 13:00
Uh, they founded Even. Um, Ajay, our
- 13:03
third co-founder, scaled two bootstrap
- 13:04
companies past $50 million $50 million
- 13:07
in profitable revenue.
- 13:09
And around them, we have Lucas, who um,
- 13:11
is an Apple Design Award winning
- 13:13
animator.
- 13:14
Uh, she's our creative director. We have
- 13:16
Chris, who was a technical director at
- 13:17
Pixar, earlier at Oculus, who works on
- 13:19
embodiment. We have Lily, a board
- 13:22
certified behavior analyst, who left a
- 13:24
Vanderbilt PhD to do user research for
- 13:26
us from the very start. Um and then we
- 13:28
have Elliot who I've mentioned, the
- 13:30
novelist behind uh our characters.
- 13:32
And I come from XAI and Spotify and
- 13:34
previously also founded a company called
- 13:36
Imagi.
- 13:37
So, it's a small team where honestly
- 13:39
every person is the best I've worked
- 13:41
with at what they do.
- 13:44
We're also well backed for this. Uh we
- 13:46
have $30 million raised from Costanoa
- 13:48
Ventures and a group of people who've
- 13:49
built the tools and products a lot of
- 13:51
you use every day.
- 13:53
And here are some of the more
- 13:54
engineering focused roles where we need
- 13:55
help. Um so, we're hiring across the
- 13:57
board. We have iOS and back-end product
- 13:59
engineering roles, applied AI
- 14:01
engineering, gameplay engineering, and
- 14:04
one specific role I want to flag, which
- 14:05
is agent engineering management. Um so,
- 14:09
when we went all in on running
- 14:11
concurrent agents, um the people who got
- 14:12
dramatically more effective on the team
- 14:14
were the ones who had management
- 14:15
backgrounds, um because it seems like
- 14:17
managing a fleet of agents does actually
- 14:19
take some of the skills same the same
- 14:21
skills as managing people.
- 14:22
Uh you basically have to decompose the
- 14:24
problem, you know, delegate it with
- 14:25
checkpoints, give fast feedback, review
- 14:27
their work seriously, and know when
- 14:28
exactly to jump in.
- 14:30
So, if you're a strong engineer who
- 14:31
thought going into management meant
- 14:33
leaving code behind, that's that's no
- 14:34
longer true.
- 14:37
Um and yeah, that's Tlon. You can come
- 14:39
talk to me after this uh or reach out.
- 14:41
I'm on on LinkedIn. My email is here.
- 14:43
I'm on Twitter as well. Um I'd love to
- 14:45
chat. So, yeah. Thank you.
- 14:49
>> [applause]
- 15:03
[music]