ConceptFoundationalQuality, Cost & Token Economics / Latency budgets and UX tradeoffs / #3

Describe how streaming changes perceived latency without changing actual latency.

A recipe that takes eight seconds to write does not feel eight seconds long once real words start showing up in the first half second. It only feels broken when the screen stays blank the whole time, because a blank screen looks exactly the same whether the answer is nearly done or never coming at all.

The direct answer
Stream the reply token by token the moment the model starts writing it, instead of waiting for the whole thing to finish and showing it all at once. The total time to produce the answer does not change. What changes is how long the screen stays blank: under a second instead of eight, and that gap is the entire difference between a wait that feels fine and one that feels broken.
Do this, in order
  1. Stream the reply token by token the moment the model starts producing it, instead of buffering the whole thing before showing anything.Why: real words landing in under a second is what stops someone from assuming it broke, even though the total time to finish never moves.
  2. Track time to first visible word as its own number, separate from total completion time.Why: a completion time that sits inside its budget the whole time can still hide the exact number that is breaking trust.
  3. Stream in finished chunks, one full recipe step or one full day of the plan, never a raw half formed token that might still change.Why: a broken looking fragment on screen costs more trust than the blank screen it replaced.
  4. Do not reach for a fake loading animation instead of real streamed content.Why: a tip carousel still means nothing real is happening, and once someone learns that, they back out just as fast as they did against a blank screen.
  5. Only stream where someone is actually staring at the screen and waiting.Why: a background job nobody is watching gets nothing out of the added engineering work.
  6. Watch abandon rate on the one screen that got slower, not the app wide average.Why: an eighteen percent jump on one screen disappears completely inside a number blended across the whole app.

How to answer this, stage by stage

Nobody is grading whether you can define streaming. They are grading whether you know wall clock time and felt time are two different numbers, and that you can fix the second one without touching the first at all.

1
Scope it to one real product before answering in the abstract
Say it like this
"Let's ground this in one product. Broth is the AI recipe and meal planning assistant inside Skilletry. You photograph or type out what's in your pantry, and it writes tonight's recipe plus a three day plan. Neriah Bircham is the product manager who owns onboarding and retention for it."
Why this works
An abstract "streaming feels faster" answer turns into a lecture on tokens fast. One product and one person keep the whole thing concrete.
2
Reframe the question before answering it
Say it like this
"This isn't really asking me to define streaming. It's asking whether I know that wall clock time and felt time are two different numbers, and that you can move the second one without touching the first at all."
Why this works
Stops you giving the generic answer, "streaming makes it faster," which is not even true and says nothing about where the feeling of speed actually comes from.
3
Give the one decision, plainly
Say it like this
"Here's what I'd build. Stream the reply the moment the model starts writing it, instead of waiting for the whole thing and showing it all at once. Same eight seconds to finish either way. But the first real words show up in under half a second, and that's the difference between someone reading along and someone assuming it's broken."
Why this works
This is the direct answer, said in one breath, before any story.
4
Prove it with the failure, cut to four sentences
Say it like this
"Here's what happens without it. Broth's three day plan pushed a typical answer from about two seconds to about eight, and the screen stayed completely blank the whole time. Neriah watched it happen to herself on a Tuesday, backed out after four seconds, and ordered pizza while the finished plan sat waiting behind a closed app. Weekly abandon on that screen climbed to eighteen percent, and the backend dashboard never once flagged it, because total completion time was still inside the ten second budget."
Why this works
Shows the real cost of trusting the wrong number, not just the mechanics of how streaming works.
5
Say what you'd measure going forward
Say it like this
"I'd track time to first visible word as its own metric, separate from total completion time. The number that was actually breaking trust wasn't on any dashboard until we went looking for it."
Why this works
Shows you're thinking past this one incident, into the thing that catches the next one before it costs a dinner.
6
Say what you'd leave alone
Say it like this
"I wouldn't touch the nightly job that rebuilds everyone's 'this week' suggestions on the home screen. Nobody's staring at a spinner for that one, so streaming it buys us nothing."
Why this works
Shows judgment instead of applying one expensive fix everywhere at the same cost.
7
Close on the decision, not the story
Say it like this
"So: stream the tokens as they're made, watch time to first word as its own metric, and expect a blank screen to read as broken well before the actual answer would ever have been late."
Why this works
Ending on the rule, not the anecdote, is what makes this sound like a method you'd actually reuse.

Let's learn

What happens the first time you tap a button and nothing happens for eight seconds?

Broth is the AI recipe and meal planning assistant inside Skilletry. You photograph what's in your fridge, or just type it out, and Broth writes tonight's recipe plus a three day plan built around whatever's about to go off.

At first, Broth only wrote one recipe at a time. That took about two seconds. Nobody noticed two seconds. You tapped the button, you glanced up, the recipe was already there.

Knowledge spark: time to first token This is the industry name for the number that actually matters here. It's how long a person waits before they see any real output at all, not how long the whole answer takes to finish. A model can take eight seconds to finish and still feel instant, if the first word of it shows up in half a second.

Then Skilletry shipped the three day plan. Same model, same button, but now it had to write about four times as much: tonight's dinner, plus breakfast, lunch and dinner for two more days. Typical generation time went from about two seconds to about eight.

Eight seconds doesn't look like a disaster on a spec sheet. It was still comfortably inside the ten second budget Skilletry had set at launch, and every dashboard the team watched said the product was healthy.

Here's the turn: those extra six seconds were never really the problem. The problem is what a person does with a screen that shows nothing at all for six of those eight seconds.

Total time to finish, versus time to see the first real word
8.1s 8.1s 8.0s 0.4s Buffered, total Buffered, first word Streamed, total Streamed, first word
Total time to finishTime to first visible word
Total time barely moves, 8.1 seconds down to 8.0. Time to first visible word drops from 8.1 seconds, since nothing shows until the very end, to about 0.4 seconds. The wait did not get shorter. It got visible.
The wait did not get shorter. It got visible, and that turned out to be the whole difference.
Hand sketched comparison titled the wait is not a dial, it is a switch. Left panel a gauge icon labeled what people assume, caption a blank screen feels a little worse the longer it runs, like a dial creeping up. Right panel a plain square icon labeled what actually happens, caption same total wait, one flip from feels fine to feels broken, decided by what is on screen.
This is the whole answer to where perceived latency actually comes from. It isn't a slider that creeps up with every extra second. It's one flip, and streaming decides which side of it a person lands on.

At its worst, this trains people to treat a working feature like a broken one, forever, quietly, without a single complaint ever landing in a support inbox. Broth is built to rescue food that's about to be thrown out. Every session someone backs out of and never comes back to finish is a fridge that gets emptied into the bin anyway, which is the exact opposite of the whole product.

Weekly abandon rate on the plan generating screen, before and after streaming shipped
18% 0% streaming ships 15% 17% 18% 11% 6% 3% wk -3 wk -2 wk -1 wk +1 wk +2 wk +3
BufferedStreamed
Before streaming shipped, weekly abandon climbed from 15 percent to 18 percent as more people reached the slower three day plan. Three weeks after streaming shipped, it was down to 3 percent. Nothing about the model changed in between.
The choice that mattered Broth's client only rendered once it received one complete finished reply, the recipe and the whole three day plan bundled together, because that kept the frontend simple: one clean object, no partial data to handle. That was a fine, deliberate call when a typical answer finished in about two seconds. Nobody sat and watched a two second spinner. It stopped making sense the moment the three day plan quietly quadrupled how much the model had to write before that one object was ready to send.

Before landing on real streaming, the team tried something cheaper first: a rotating carousel of cooking tips shown during the wait, meant to give people something to read while Broth worked. It barely moved the number, abandon fell from 18 percent to about 15 percent and stopped. The tips weren't real content. Once people learned the carousel always meant nothing was actually ready yet, they started backing out against the tips almost as fast as they had against a blank screen.

What I'd leave alone: the nightly batch job that rebuilds each person's "this week" suggestions on the home screen. It runs while nobody is looking at a spinner for it, so streaming that job would add engineering work for a screen no one is staring at.

The lesson: perceived speed is decided by the first visible word, not the last one. The actual time to finish can stay exactly the same, and the product can still flip from feeling broken to feeling instant, purely from when you choose to reveal the output.

Now here is the same thing as a story

Read the short version above when you're in the room. Read this one when you want to feel why an eighteen percent abandon rate can sit inside a healthy looking dashboard for three straight weeks.

Neriah Bircham has never needed a recipe to cook a real dinner out of whatever's left in the fridge. Long before Skilletry existed, friends would hand her three eggs, half an onion and a heel of cheese and she'd have something worth eating on the table in twenty minutes, no shopping trip, nothing wasted. That instinct is the whole reason she joined Skilletry to build Broth in the first place, and she still cooks on it herself most weeknights, partly because she likes it and partly because a product manager who never opens her own app stops noticing what's actually true about it.

For months, Broth was the easy part of her evening. She'd tap "get tonight's plan," start rinsing rice or washing a pan, and glance back two seconds later to a finished recipe. She never thought about the wait. There was nothing to think about. It was just there.

Then the three day plan shipped, and Neriah, like everyone else, kept tapping the same button without a second thought.

Hand sketched comparison titled two settings, nothing in between. Left panel a gauge icon labeled watches and waits, caption screen stays blank, she keeps chopping the onion, trusts it is still working. Right panel a box icon labeled backs out and orders in, caption no sign of progress past a few seconds, so she assumes it broke and leaves.
The habit did not wear down slowly over weeks. It held right up until one blank screen ran a few seconds too long.

On a Tuesday, she had two friends coming over, half a bag of spinach that needed using, and about forty minutes before they'd arrive. She tapped the button, propped her phone against the tile, and started chopping an onion. Four seconds in, the screen was still blank. Five. Six. She'd never had a reason to count before, so she wasn't really counting now either, she just felt the wrongness of it the way you feel a phone call that's rung one ring too many.

She backed out of the app, opened a delivery app instead, and ordered two pizzas. Her thumb was still on the confirm button when Broth's notification landed on the lock screen behind it: tonight's plan, ready. It had finished the whole thing in just over eight seconds, which was exactly what it was supposed to take. She just hadn't been there to see it.

We did not lose four seconds of patience. We lost a whole dinner Broth was built to save.

What stayed with her wasn't the pizza. It was that she, of all people, the one who built this thing specifically so a half bag of spinach wouldn't end up in the bin, had just watched it end up in the bin anyway, and the app had done nothing wrong by any number on its own dashboard.

Eight months earlier, in the meeting where the three day plan's frontend first got built, someone asked whether the client should start rendering the recipe as soon as partial data arrived, or wait for the whole thing and show it at once. Streaming meant handling data that might arrive in pieces, in the wrong order, or not at all if something dropped. Waiting for the complete object meant one clean shape, easy to render, easy to test. Waiting won, reasonably, because back then the whole answer was ready in about two seconds and nobody had ever complained about a two second wait.

Neriah didn't find the eighteen percent number by watching a dashboard. She found it because she'd lived it, then went looking, and found that the exact same thing had been happening to strangers for three weeks, quietly, one closed app at a time, never once showing up as a support ticket.

Run the same Tuesday again, with one change: the reply streams the moment the model starts writing it. She taps the button, starts on the onion, and by the time she's set the knife down the first line is already on the screen, "Spinach and Chickpea Skillet, twenty five minutes." She keeps chopping. Words keep arriving. By the time the onion's done, the whole three day plan is sitting there, nothing wasted, no pizza ordered, no notification arriving behind a closed app.

One design waited for the whole plate to be ready before letting anyone see it. The other lets you watch it get cooked.

What I would tell myself, back in that first frontend meeting: the moment you decide to hide a real answer until it's completely finished, ask how long finished actually takes now, not how long it took when you made the decision. Nobody asked that question when the feature that would quadruple the wait was still eight months away. That's on the room, not on Neriah.

FLIPS, and the one letter that has no middle setting

Not five guesses about why a good product started feeling slow. FLIPS names the one thing that snapped, and asks which old choice made snapping the only option.

Hand sketched numbered list titled FLIPS one line each. Five rows: F, Neriah Bircham, the product manager who cooks dinner on Broth most weeknights. L, stops watching the spinner and trusts the wait without thinking about it. I, keeps waiting and trusting it, or backs out and orders in, no middle. P, the app waited for one whole finished reply before showing anything at all. S, streamed words show up in under a second, no pizza gets ordered.
Five steps. Only the I step has no middle setting she could fall back on once the blank screen ran long.
FFind the person. Whose evening is this?
Neriah Bircham, the product manager who owns onboarding and retention for Broth at Skilletry, and who has been feeding people out of a half empty fridge since long before she ever wrote a line of the spec.
Name her first, or the whole story stays a description of token streaming instead of a decision someone makes with an onion half chopped.
LLocate the habit. What did she stop doing because it worked?
Thinking about the wait at all. When a recipe took about two seconds, she'd tap the button and keep moving, never once watching the screen to see if anything was happening.
Not needing patience is the real thing a fast product builds. The two seconds saved is just what that ease looks like from the outside.
IIdentify the flip. What verb snaps?
Keeps watching a blank screen, trusting it's still working, or backs out of the app and orders food instead, assuming it broke. No setting in between once the screen ran past the point where she expected something. She never went back and waited it out again on her own.
This is the flip the fix has to design against. Not "eight seconds is a bit slow," but "a blank screen for six of those eight seconds looks identical to a broken one, and she has no way to tell them apart."
PPinpoint the old decision. Which choice only made sense before?
The client rendered nothing until it received one complete finished reply, recipe and three day plan bundled together, because that kept the frontend simple and there was nothing to gain from streaming a two second answer.
Small, reasonable, and made eight months before it mattered. That's what makes it a real reversal, not an obvious mistake.
SShow the replay. Same bad evening, new design.
Streamed, the first line of the recipe shows up in about 0.4 seconds instead of 8.1. She never leaves the app. Weekly abandon on that screen falls from 18 percent to 3 percent within three weeks of shipping it.
Counted, not vague. Seconds and percentages against seconds and percentages, not "it feels a lot snappier now."

Three things worth stating directly, since this is where the real judgment sits. The alternative Skilletry tried first was the cooking tip carousel, real, tested, and it lost: abandon only fell from 18 percent to about 15 percent, because a rotating tip is not the answer arriving, and people learned that fast. The AI specific failure worth naming by name is that streaming raw model output, word by word, risks showing a fragment that later turns out wrong or incomplete, a recipe step cut off mid sentence if a connection drops before the model finishes producing the third day of the plan. The guardrail is chunk safe streaming: the server only flushes a complete recipe step or a complete day of the plan to the client, never a half formed token, and if a stream drops partway, the client shows what's confirmed complete plus a small "still finishing" note while a background retry quietly completes the rest. That guardrail is not free. It costs real engineering time the old "wait for one object" approach never needed, a trade accepted on purpose, because an 18 percent weekly abandon rate on the feature meant to stop food waste costs Skilletry far more than the streaming infrastructure does. And the bar this enforces was never zero wait. Eight seconds to write a three day plan is allowed. The bar is about what's visible during that time, not about making the model faster.

And if you want to be sure it really works, try it somewhere else

Same five letters, an industry that has never planned a single dinner, and this time the private workaround isn't a pizza order. It's a second document nobody asked for.

Dovetail is an auto insurance claims company. Wickfield is the AI assistant its adjusters keep open on every call, drafting the claim summary and settlement note in real time from the adjuster's spoken notes and the photos coming in. Brennig Delacote is a claims adjuster who can look at a fender photo and land within a couple hundred dollars of the real repair estimate before a single form gets filled out.

The case for trusting it as built: on a simple claim, one car, one clear photo, Wickfield's draft lands in three or four seconds, and Brennig reads it straight back to the claimant while they're still on the line. Fast, accurate, and nobody ever had to think about the wait.

The case against it: a genuinely complicated claim, three cars, conflicting accounts, a dozen photos, makes Wickfield reason over far more input, and the draft can take twenty or thirty seconds to land. The screen shows nothing while it works. No progress bar, no partial line, nothing.

The decision Dovetail would take back Wickfield's team decided early on never to show partial output, because a half written, legal sounding claim note looked worse on screen than a blank one. That was a fine call back when almost every claim was simple enough to draft in three or four seconds. It stopped being fine once complex, multi vehicle claims became a real share of the calls Wickfield had to handle.

On the complicated calls, Brennig started keeping his own notes in a separate window the moment a call ran long, typing out a rough version of the summary himself so he'd have something to read to the claimant even if Wickfield never landed in time. Wickfield wasn't broken. It was working exactly as designed. But now, on the hardest calls, there were two documents: his and the machine's, and reconciling them after the fact was creating errors on about one call in twelve.

The fix that reached Brennig wasn't a smarter model. It was the same decision as Broth's: stream the draft the moment it starts, so the vehicle and damage lines fill in within about a second and Brennig reads along live with the claimant instead of typing a second version underneath the first. Average handling time on multi vehicle claims dropped from about nine minutes to about six, and the reconciliation errors disappeared, because there was only ever one document again.

Same rank as before, different family: a silent wait and a stalled process look identical from the outside, and a person who needs an answer regardless of which one it is will always build their own version rather than risk having nothing to say.

Swap the trigger and it still runs.
Speed: an interviewer caps you at ninety seconds. Skip straight to the fix: stream the tokens, don't buffer the whole reply.
Cost: there's no budget this quarter for real token streaming. Flush the response in three or four finished chunks as the backend produces them, the title, the ingredients, then the steps, instead of one atomic blob. Most of the win for a fraction of the engineering.
The model got better, for real: say the model gets twice as fast, so total time drops from eight seconds to four. Still stream it. Four seconds of a blank screen still reads as "did my tap even land" to plenty of people. The threshold moves. The mechanism, nothing visible equals feels broken, does not disappear just because the model improved.

Where people run it wrong.
They watch total completion time against the budget and call the product healthy, without ever separately measuring time to first visible content.
They "fix" the blank screen with a generic loading animation or a tip carousel instead of real streamed content, which buys a few extra seconds of patience and nothing more.
They stream everything, including background jobs nobody is staring at, and spend engineering effort on the one place the fix was never needed.

How to use it live. Say the split out loud before answering: "is the problem that it's actually slow, or that it looks like nothing is happening." Naming that split buys you a beat, and tells the interviewer you won't reach for "make the model faster" as the only lever in the room.

Flashcards (tap any card to flip it)

1 · THE FLIP FAMILY
What flip family is this?
Tap to flip
ANSWER
Abandonment flip, in miniature: instead of a slow decline over weeks, the person quietly backs out of one waiting screen in seconds, no complaint, no ticket, just gone. Here it's watching and trusting the wait, versus backing out and ordering food instead.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Neriah Bircham, the product manager who owns onboarding and retention for Broth at Skilletry, known for cooking a real dinner out of whatever's left in a half empty fridge.
3 · THE HABIT
What did she stop doing because it worked?
Tap to flip
ANSWER
Thinking about the wait at all. Back when a recipe took about two seconds, she'd tap the button and keep moving without ever watching the screen.
4 · THE FLIP, IN THIS STORY
What's the two setting switch here?
Tap to flip
ANSWER
Keeps watching a blank screen, trusting it's still working, or backs out of the app and orders food, assuming it broke. No setting in between once the screen ran past the point she expected something.
5 · THE OLD DECISION
What decision would you take back?
Tap to flip
ANSWER
The client only rendered once it received one complete finished reply, recipe and three day plan bundled together, because that kept the frontend simple. Fine at two seconds. Not fine at eight.
6 · THE NUMBER
Fill in the blank: total time to finish stayed about ___ seconds either way. Time to first visible word dropped from about ___ seconds to about ___ seconds.
Tap to flip
ANSWER
8 seconds. From about 8 seconds, since nothing shows until the end, down to about 0.4 seconds.
7 · THE REPLAY
Same bad evening, new design, what changes?
Tap to flip
ANSWER
The first line of the recipe shows up in about 0.4 seconds instead of 8.1. She never leaves the app. Weekly abandon on that screen falls from 18 percent to 3 percent within three weeks.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and which flip family?
Tap to flip
ANSWER
Wickfield, the claim drafting assistant at Dovetail. Workaround flip: an adjuster starts keeping his own parallel notes the moment a call runs long with zero visible progress, because a silent wait looks identical to a stalled one.

Check yourself Score: 0 / 0

Fill in the blank
1. Before the three day plan shipped, a single recipe from Broth took about ___ seconds. After the three day plan shipped, a typical answer, buffered or streamed, took about ___ seconds.
Show hint
Look at the start of the "Let's learn" section.
Show answer
2 seconds, 8 seconds. The three day plan made the model write about four times as much, and the total time grew with it. Streaming never changed this number.
Multiple choice
2. Why did an eight second wait feel broken when it was buffered, but not when it was streamed, if the total time was the same either way?
  • A. The streamed version actually finished faster because each chunk is smaller to send.
  • B. Nothing was visible for the first several seconds of the buffered version, so it read as no progress at all, while the streamed version showed real words within half a second.
  • C. The model made fewer mistakes once the connection stayed open for streaming.
  • D. Streaming let Broth retry the request automatically in the background.
Show hint
Think about what's on screen at second four in each version, not what's happening on the server.
Show answer
B. A blank screen and a working process look identical from the outside. Streaming replaces that blank screen with real content, so the person watching can tell the difference.
True or false
3. True or false: because Broth's total completion time stayed inside its ten second budget the whole time, the dashboard correctly showed the product was healthy.
  • True
  • False
Show hint
Ask which number the ten second budget was actually measuring.
Show answer
False. The budget tracked total completion time, not time to first visible word, so it never caught the number that was actually costing Broth abandoned sessions.
Short answer, name the rejected alternative
4. What did the Skilletry team try before real streaming, and why did it fail to fix the problem?
Show hint
Look at the paragraph right after the "choice that mattered" key point box.
Show answer
Model answer: A rotating carousel of cooking tips shown during the wait. It barely moved the number, abandon fell from 18 percent to about 15 percent and stopped, because the tips were not real content. Once people learned the carousel always meant nothing was ready yet, they backed out against it almost as fast as they had against a blank screen.
Short answer, apply it yourself
5. Pick an app you use that makes you wait for something. What does it show you, if anything, while it works, and would streaming the real result change how the wait feels?
Show hint
Think of an order tracking screen, an upload bar, or a search that just spins.
Show answer
Model answer: A food delivery tracker that just says "preparing your order" for twenty minutes with no detail reads as stuck, even if the kitchen is exactly on schedule. Showing the real steps as they happen, order accepted, cooking started, out for delivery, would probably stop people from calling the restaurant early to check if something went wrong.
Multiple choice
6. At Dovetail, why did Brennig start keeping a private, parallel note the moment a call ran long?
  • A. Wickfield's draft was frequently wrong, so he stopped trusting it.
  • B. Wickfield gave no visible sign it was still working, so a long generation looked exactly like a stalled one, and he needed something to read regardless.
  • C. Dovetail's policy required a second adjuster to review every claim by hand.
  • D. He wanted a personal backup copy for his own performance reviews.
Show hint
The problem wasn't accuracy. It was what the screen showed, or didn't, while Wickfield worked.
Show answer
B. A silent wait and a stalled process look identical from the outside, so Brennig built his own fallback rather than risk having nothing to read to the claimant.
Before you close the answer
Why this works
Tests whether you know that perceived speed and actual speed are two different numbers, and that a product can look completely healthy on a latency dashboard while quietly training people to assume it's broken.
Follow-up traps
"Isn't this just a loading spinner with extra steps?" Response: no, a spinner shows that something is happening, not what. Streaming shows the real answer arriving, which is what actually lets someone start reading instead of just waiting differently.

"What if the model changes its mind partway through, or the reply cuts off mid stream?" Response: stream in finished chunks, one full recipe step or one full day of the plan, never a raw half formed token, and retry silently in the background if a stream drops, so what's on screen is always either complete or clearly marked as still finishing.
If pressed
Time to first token and total completion time can move in opposite directions depending on where the latency budget gets spent. A heavier system prompt or a lookup step before generation even starts can push time to first token up even while the model itself streams fast once it begins. The two numbers need separate budgets, not one shared one.
From U2xAI Academy

From answering questions to owning outcomes.

A live workshop where you ship a working AI agent, defend a launch decision, and walk away with a portfolio recruiters can't wave off, not just more questions to study.

  • A live AI agent you actually shipped
  • A launch decision you can defend under pressure
  • An interview-ready portfolio, not more flashcards
Know more