CaseIntermediateQuality, Cost & Token Economics / Latency budgets and UX tradeoffs / #5

How would you decide between a fast weak model and a slow strong one for autocomplete?

PICK · latency budgets and UX tradeoffs

Loomstead picked Threadloom's model on quality alone and ran its best one everywhere. The real choice was between a suggestion that's late and invisible, or one that's fast enough to get tab-accepted without a second look, right or not.

The direct answer
For the live, as-you-type suggestion, run the fast weak model. Past about 170 milliseconds, a completion lands after the sender has already kept typing, so a slower model isn't trading quality for speed, it's quietly turning the feature off. Save the slow strong model for a separate moment the sender already expects to wait for, and never let a suggestion get inserted once the sentence under it has changed.
Do this, in order
  1. Run the fast weak model for every inline, as-you-type suggestion.Why: past about 170 milliseconds a completion lands after the sender has already typed past it, so speed decides whether the feature exists at all.
  2. Check the sentence under a suggestion before letting anyone tab-accept it.Why: a suggestion built for an older, shorter sentence can still get inserted if it renders late, and that's how a wrong sentence ships, not because the model guessed wrong.
  3. Save the slow strong model for a moment the sender already expects to wait on.Why: a pause-triggered polish pass has room for 600 to 1,300 milliseconds that live ghost text never has.
  4. Watch acceptance rate by the hour, not just as one daily average.Why: a nine percent acceptance rate during the two busiest hours hid inside a healthy-looking daily average until someone split the number by hour.
  5. Withhold a suggestion instead of guessing on the riskiest spans: negatives, dates, names, numbers.Why: on Threadloom's own risky-span test set, the fast model changed the sentence's meaning about 1 in 40 times there, against 1 in 250 for the slow model.
  6. Revisit the pick if the strong model's own latency drops under the same threshold.Why: once both models are fast enough, there's no asymmetry left to trade, and the better model wins outright.

How to answer this, stage by stage

Nobody's testing whether you know both models exist. They're testing whether you'll price the actual cost of arriving late against the actual cost of arriving wrong, or just say "speed matters" and stop there.

1
Scope it to one product and one owner before answering in the abstract
Say it like this
"Let's ground this in one product. Threadloom is Loomstead's email tool. It watches you type a message and offers the next few words as gray text you can accept with tab. Ingemar Riordan is the PM who owns what that suggestion box actually feels like to use, all day, every day."
Why this works
A tradeoff question turns into a philosophy question about speed versus quality fast. One product turns it into a real number problem about milliseconds.
2
Position: name the pick before any of the reasoning
Say it like this
"I'd run the fast, weaker model for the live suggestion as you type. Not because it's better. Because a slower model's answer, even a genuinely better one, doesn't get seen if it lands after you've already typed past where it was aimed."
Why this works
Naming the pick first, with the reason in the same breath, is what makes this sound like a decision instead of a hedge that ends in "it depends."
3
Impact: say who actually feels each kind of cost
Say it like this
"The rep feels a slow suggestion as nothing at all. They just keep typing, so that cost is basically free. Loomstead's support team feels the other cost, days later, when a client calls confused about something an email seemed to promise."
Why this works
Splitting the cost by who actually notices it is what stops "quality" and "speed" from sounding like two flavors of the same vague tradeoff.
4
Cost asymmetry: say which error is cheap and which is hidden
Say it like this
"A late suggestion is the cheap, visible error. Nobody's fooled by it, the box just sits empty and the rep moves on. A stale suggestion that gets tab-accepted out of habit is the hidden, expensive one, because it looks exactly like a normal accepted suggestion in every dashboard Loomstead has."
Why this works
This is the heart of PICK. If both sides of a tradeoff cost the same, the real asymmetry hasn't been found yet, and this is where it gets found.
5
Kill criteria: say what would flip the pick
Say it like this
"If a newer version of the strong model got fast enough, under about 150 milliseconds most of the time, I'd flip this without a fight. There's no reason to protect a speed advantage that no longer exists."
Why this works
A pick that can't say what would change it isn't really a decision. It's a preference wearing a decision's clothes.
6
Close on the rule, not the last number crunched
Say it like this
"So: fast model for the moment you're mid-keystroke, slow model for the moment you already asked to wait, and a freshness check on every suggestion so a stale one never gets to speak for you."
Why this works
Ending on the rule keeps this sounding like judgment, not a latency chart read out loud.

Let's learn

The suggestion is a few words of gray text that show up right after your cursor, before you've decided what to type next.

Threadloom is Loomstead's email tool. It watches a sentence as you write it and offers the next few words. Tap the tab key and they're yours. Keep typing and they vanish.

Before Threadloom, a sales rep writing a routine follow-up, about 90 words, typed the whole thing by hand. That took roughly three minutes when nothing needed looking up first.

Threadloom launched running Loomstead's biggest, best model, the same one the company trusted for everything else it built. When it worked, a rep could tab through most of a 90-word email instead of typing it, cutting that three minutes down to about 80 seconds.

Knowledge spark: what is p95 latency? The time it takes 95 out of 100 suggestions to show up, not just the typical one. It catches the slow, crowded moments an average quietly hides.

The turn: "when it worked" was carrying a lot of weight. The big model averaged 640 milliseconds to produce a suggestion, and climbed past 1,300 milliseconds during the two hours every weekday morning when every sales team at once sat down to write follow-ups. A fast typist moves to a new character about every 170 milliseconds. By the time a 640-millisecond suggestion rendered, most reps had already typed three or four characters past where the model was aiming. The suggestion wasn't wrong. It was late. And late, in this feature, means invisible.

The clock each model is racing: latency by percentile, weak model vs strong model
1400ms 700ms 0 p50 p75 p90 p95 170ms, about one keystroke's gap
Weak model, 45 to 80 millisecondsStrong model, 640 to 1,300 milliseconds
The weak model's line hugs the bottom of the chart at every percentile, well under the 170-millisecond keystroke gap. The strong model crosses that gap before its own median, and its worst cases run eight times past it.
The suggestion was never wrong. It just stopped being seen exactly when every sales team needed it most.
Cost, by the numbers: acceptance rate, off-peak and during the morning rush
40% 20% 0 Off-peak 31% 34% Peak, 9 to 11am 30% 9%
Weak model, run every hourStrong model, run at launch
Off-peak, the strong model's suggestions were slightly better liked. During the two busiest hours, its acceptance rate fell to 9 percent while the weak model barely moved at all.
The decision that mattered Once acceptance split by the hour showed the strong model going nearly silent during the exact two hours Threadloom mattered most, Loomstead moved live suggestions to the fast model and added a check that drops any suggestion built against a sentence that has since changed.
Hand sketched comparison. Left panel, a small calm gauge icon labeled suggestion arrives late, caption rep just keeps typing, box stays empty. A hand lettered VS sits between the two panels. Right panel, a larger jagged red orange box with a question mark, labeled stale suggestion, tab accepted, caption wrong sentence goes to the client.
The late suggestion costs nothing and gets noticed instantly. The stale one costs nothing to notice, right up until a client reads it.

At its worst, this doesn't fail loud. Because the suggestion box didn't check whether the sentence underneath it had changed before letting a rep tab-accept whatever was already sitting there, a stale suggestion, built for an earlier, shorter version of the sentence, could still get inserted the moment it finally rendered. That's how this ships a wrong sentence into a real email, not because the model guessed wrong, but because the answer to a question had already changed by the time it printed.

The choice I would take back: in a fifteen-minute meeting the week before launch, Ingemar's team decided to run Loomstead's best model everywhere, live suggestions included, because "our best model should write every sentence" sounded right when only a hundred people used Threadloom and load was never a problem.

What I'd leave alone: the weekly digest email Threadloom drafts, summarizing a rep's week for their manager. Nobody's mid-keystroke waiting on that one, it has whole minutes to render, so it stays exactly where it is, on the big model.

The lesson: a suggestion that's a little wrong is easy to catch, you read it before you tab it in. A suggestion that's late doesn't get caught. It gets skipped, and skipped looks identical to working, right up until someone tab-accepts one that arrived after the sentence under it had already moved on.

Now here is the same thing as a story

The short version is above. Read the long version below for why one ordinary Tuesday morning changed how Threadloom decides which model gets to speak first.

Ingemar Riordan could read a week of Threadloom's usage logs and tell you which sales team was struggling before their manager noticed. He'd built two email tools before this one and picked Threadloom's original model himself, the week the company decided to invest in it seriously.

The first eight months went well. Threadloom launched to a hundred beta reps, and every morning a rep would open a draft, start typing, and watch gray text appear a beat later, usually right, sometimes worth ignoring, never much trouble either way. Loomstead's leadership pointed to it in every board update. Ingemar kept the big model running everywhere because nothing had ever given him a reason to look twice.

Then Loomstead signed three large customers in the same quarter, and Threadloom's user count jumped past three thousand. The habit thinned in three small beats nobody flagged at the time: reps stopped glancing at the ghost text during the busiest hour and typed straight through it, a few started keeping their eyes on the keyboard instead of the screen while they waited, and the tab key turned into something fingers reached for out of rhythm more than out of reading.

The trigger was small. It was a Tuesday, 9:40 in the morning, and a rep was typing "We can't ship before Friday" to a client who'd been pushing for an earlier date. The strong model had started scoring a suggestion off her sentence a beat earlier, before she'd finished typing the word "can't." By the time that suggestion rendered, 740 milliseconds later, she'd already finished the real sentence. Out of habit, mid-motion, her hand hit tab anyway. The stale suggestion dropped into the message and read back as "We can ship it by Thursday to be safe," the exact opposite of what she'd meant to send.

Threadloom never threw an error. It just answered a question that had already changed, in the same confident gray text it always used.

A teammate glancing over her shoulder, on the way to grab coffee, caught it before she clicked send. "Wait, didn't we just tell them we can't do that?" Four minutes of checking followed, then a slower rewrite of the whole paragraph by hand. Nobody outside that desk ever knew how close it came.

The real cost was never the extra half second the strong model needed. It was that for two hours every single morning, Threadloom quietly stopped being seen at all, and once in a while, on exactly the days it mattered most, an old answer sat there long enough to get mistaken for a new one.

The decision Ingemar would take back happened in that fifteen-minute meeting eight months earlier. "We only get one shot at people trusting this. Run the best model we've got, everywhere," someone said, and the room agreed. Nobody in that meeting asked what happens once three hundred reps are all typing at nine in the morning.

Run that Tuesday again with the fast model live and a freshness check underneath both models: the suggestion for "We can't ship before Friday" renders in about 45 milliseconds, already matching what she typed, or it renders nothing at all if the sentence moved on first. Either way, the wrong sentence never gets the chance to sit on screen waiting for a tab key. 9:40 becomes an ordinary minute instead of the one Ingemar's team spent the rest of the day re-reading the queue.

One design bet everything on the model being right. The other bet on the suggestion never getting old enough to be wrong by the time someone reads it.

What I'd tell myself in that fifteen-minute meeting: "best" isn't a property of a model sitting in a lab. It's a property of an answer that still matches the question by the time it arrives.

The four letters that made this a real pick, not a guess

This isn't a speed-versus-quality question wearing a technical costume. PICK is what keeps "the fast model felt right" from staying a hunch instead of a decision you could defend.

PPosition. What's the actual call, stated before any reasoning?
Run the fast weak model for the live, inline suggestion. Its answer arrives inside the gap between two keystrokes almost every time, so it's actually seen. Save the strong model for a moment the sender already expects to wait on.
State the position first, or the reasoning that follows sounds like a search for whatever pick was already assumed.
IImpact. Who feels each kind of cost, and in what units?
A rep feels a slow suggestion as nothing, they just keep typing and lose no time at all. A client feels the other cost, sometimes days later, when an email said something the sender never meant to send.
Naming who feels which cost turns "speed matters" into a real tradeoff instead of a guess about which model users will like more.
CCost asymmetry. Which error is cheap, and which is hidden?
A late suggestion is the cheap, visible error. It shows up as an empty box and nobody's fooled by it. A stale suggestion that gets tab-accepted out of habit is the hidden, expensive one, since it looks exactly like a normal accepted suggestion in every metric Loomstead has. Optimize against the hidden one, not the one that's already easy to see.
This is the hardest step, and the one most answers skip. If both sides of a tradeoff cost the same, the asymmetry hasn't actually been found yet.
KKill criteria. What evidence would flip the pick?
A version of the strong model fast enough to clear about 150 milliseconds most of the time, at real peak load, not just in a quiet test environment. Below that bar, its extra quality never gets read because it never gets seen in time.
A pick that can't say what would change it isn't really a pick, it's a preference dressed up as a decision.

Two things worth stating directly, since this is where the real judgment sits. The alternative Ingemar's team considered and dropped was caching the strong model's most common completions to shave its latency, instead of switching the default suggestion to a smaller model. It lost because real work email is mostly unique sentences, not templates. In testing, fewer than 4 percent of live suggestions ever matched anything already sitting in the cache, so peak-hour latency barely moved and the two rush hours stayed exactly as invisible as before. The AI-specific failure worth naming by name is context staleness: a suggestion scored against a sentence that has since changed keeps sounding just as confident anyway, because the model has no way of knowing the world under it moved on before it finished answering. The guardrail is the freshness check itself, a plain check that a suggestion still matches the current sentence before it's ever allowed to render, run automatically on every single suggestion regardless of which model made it, plus a separate 500-example test set of risky spans, negations, dates, names, and numbers, that showed the fast model changing meaning about 1 in 40 times there against 1 in 250 for the slow model, which is why those specific spans get withheld rather than guessed on by either model.

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

Same four letters, a field technician's headset instead of a sales rep's keyboard, and this time the hidden cost isn't a sentence, it's a part that ships to the wrong address.

Coilnote is a diagnostic note assistant Wickfold Mechanical built for its HVAC field technicians. A tech talks while both hands are inside a unit, and Coilnote transcribes the visit and suggests the part number as she names the fault. Bronagh Amundsen is the technician whose crew tests every build before it reaches the whole company.

The build-up: Wickfold's techs log about 40 service visits a day across the company. The on-device weak model renders a part-number suggestion in about 150 milliseconds, fast enough to sit inside a normal pause in speech. The cloud-hosted strong model cross-checks the exact equipment model against the full manufacturer catalog, more accurate, but 2.5 to 6 seconds in a basement mechanical room with weak signal, an eternity when a tech is mid-sentence with a wrench in one hand.

The decision Bronagh's team would take back Coilnote originally auto-filled a part number silently once the weak model was confident enough, with no read-back at all, because early testers in a quiet office found a spoken confirmation "slow and annoying." That held fine for a dozen techs. It broke the month Wickfold scaled past a hundred, when a mishead fault name and a guessed part number, never spoken back, ordered the wrong compressor to a customer's site and cost a full extra visit to fix.

Same rank as before, a different lever: for Threadloom, the hidden cost was a sentence that quietly said the wrong thing to a person. For Coilnote, it's a physical part that quietly ships to the wrong place. The fix isn't a freshness check this time, since nothing about a part number goes stale mid-sentence the way a written sentence does. It's a spoken read-back: Coilnote repeats any part number out loud before it's logged, and the tech has to say "yes" or correct it, turning a silent auto-fill into a checked one without slowing down the note itself.

Swap the trigger and it still runs.
Speed: an interviewer caps you at ninety seconds. Skip straight to it: run the fast model for anything happening while someone's still mid-action, save the slow model for a moment they're already willing to wait on, and never let either one's guess through unchecked on the spans where being wrong actually costs something.
Cost: there's budget this quarter for either a bigger on-device model or a faster network link to the cloud model, not both. The bigger on-device model wins for Coilnote specifically, because a truck roll to fix a wrong part costs far more than the cloud model's extra accuracy is worth.
The model got better, for real: say the strong model's latency gets cut by two-thirds next year. That's real progress, and it narrows the gap. It doesn't remove the need for a freshness check or a read-back, since even a fast model can still be confidently wrong, just faster about it.

Where people run it wrong.
They treat "the fast model is less accurate" as the whole story, and never ask who actually pays for each kind of mistake.
They build a caching or infrastructure fix aimed at making the slow model faster, without first checking how often real usage would even hit that cache.
They design the guardrail once, at launch scale, and never revisit it once usage grows past the size it was tested at.

How to use it live. Say the real question out loud before naming a model: "before I pick one, is this asking what a suggestion should look like right now, mid-keystroke, or what it should look like once someone's already stopped to wait for it." That buys a beat to think instead of repeating whichever model got picked at launch.

Flashcards (tap any card to flip it)

1 · THE FRAMEWORK
What framework is this, and what's its one job?
Tap to flip
ANSWER
PICK: commit to a position, then show the asymmetry. Built for tradeoff questions, not a story about one person's habit.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Ingemar Riordan, the PM who owns what Threadloom's suggestion box feels like to use at Loomstead. Picked its original model himself.
3 · THE QUIET HABIT
What did Ingemar's team keep doing that felt safe at launch?
Tap to flip
ANSWER
Running Loomstead's biggest, best model everywhere, live suggestions included, because "our best model should write every sentence" sounded right when load was never a problem.
4 · THE POSITION
What's the actual position this answer takes?
Tap to flip
ANSWER
Run the fast weak model for the live, as-you-type suggestion. A better answer that lands after the rep already kept typing is worth exactly the same as no answer.
5 · THE OLD DECISION
What decision would Ingemar take back?
Tap to flip
ANSWER
Deciding, in a fifteen-minute launch meeting, to run the same big model everywhere without ever asking what happens once three hundred reps are typing at the same hour.
6 · THE NUMBER
Fill in the blank: during Threadloom's two busiest hours, acceptance on the strong model fell to ___ percent, while the fast weak model held around ___ percent all day.
Tap to flip
ANSWER
9 percent, and about 30 to 31 percent. The strong model's suggestions were just as good as ever. They simply weren't seen anymore.
7 · THE REPLAY
Same Tuesday morning, new design, what changes?
Tap to flip
ANSWER
The fast model renders in about 45 milliseconds and a freshness check drops anything scored against an older sentence, so the wrong "We can ship it by Thursday" completion never gets the chance to sit on screen waiting for a tab key.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what's the hidden cost there?
Tap to flip
ANSWER
Coilnote, a diagnostic note assistant for Wickfold Mechanical's field technicians. There, a wrong fast-model guess doesn't just misread, it can order the wrong physical part and cost a whole extra truck roll.

Check yourself Score: 0 / 0

True or false
1. True or false: because the strong model's suggestions stayed just as accurate as ever, the drop in acceptance during peak hours proves reps stopped trusting Threadloom's quality.
  • True
  • False
Show hint
Look at "the turn" paragraph in Section 1.
Show answer
False. It was never a trust or quality problem. The suggestion was just as good as before, it arrived after reps had already typed past it, so it went unseen rather than unliked.
Multiple choice
2. Why did a stale suggestion end up tab-accepted into an email that almost went out wrong?
  • A. The strong model produced a suggestion that was factually wrong from the start.
  • B. The suggestion box didn't check whether the sentence underneath had changed before letting a tab-accept insert whatever was already rendered, so an old completion answering an earlier, shorter sentence went in.
  • C. Loomstead's servers went down during the morning rush.
  • D. The client asked for the wrong delivery date first.
Show hint
Look at "the choice I would take back" and the story's Tuesday morning scene.
Show answer
B. The suggestion was scored against an earlier version of the sentence, before "can't" had been typed, and rendered late enough that it no longer matched what was actually on screen.
Fill in the blank
3. Fill in the blank: a fast typist moves to a new character about every ___ milliseconds, which is why a slower suggestion has usually already been typed past by the time it renders.
Show hint
Look at "the turn" paragraph and the dashed line on the first chart.
Show answer
About 170 milliseconds. That's roughly one keystroke's gap. Anything slower than that arrives after the moment it was aimed at has already passed.
Short answer, where it wouldn't matter
4. Name a place inside Threadloom itself where running the slow, strong model would NOT cause this same problem.
Show hint
Look at "what I'd leave alone" in Section 1.
Show answer
Model answer: The weekly digest email Threadloom drafts summarizing a rep's week for their manager. Nobody's mid-keystroke waiting on that one, it has whole minutes to render, so the big model stays exactly where it is.
Short answer, apply it yourself
5. Pick an AI product you use that suggests something while you're still acting, typing, driving, or talking. Name one thing that product's suggestion would cost you if it started arriving half a second later than it does now.
Show hint
Think of a product with a suggestion tied to a moment: a maps app, a search box, a messaging app's quick reply.
Show answer
Model answer: A maps app's spoken turn instruction. If "turn left" arrived half a second after the turn instead of before it, it wouldn't be a smaller error, it would be advice for a turn already missed, and the driver would have to backtrack.
Multiple choice
6. If the strong model's peak latency got cut in half, from 1,300 milliseconds to about 650, would that alone be enough evidence to flip the pick back to the strong model for live suggestions?
  • A. No, 650 milliseconds is still well past the roughly 170-millisecond gap between keystrokes, so most suggestions would still land after the rep had typed past them.
  • B. Yes, cutting latency in half always fixes a UX latency problem on its own.
  • C. Yes, because acceptance rate is the only number that matters here.
  • D. No, because the strong model's accuracy would also need to double first.
Show hint
Compare 650 milliseconds against the kill criteria stage's own bar.
Show answer
A. The kill criteria stage sets the bar at about 150 milliseconds, most of the time, at real peak load. Halving 1,300 gets nowhere near that, so the asymmetry would still hold.
Before you close the answer
Why this works
Tests whether you'll actually price which error is cheap and which is hidden, or just say "speed matters for autocomplete" and stop there. Most candidates never get past the vibe that fast feels better.
Follow-up traps
"Isn't withholding a suggestion on every negation or number going to make Threadloom feel less useful?" Response: no, that's only the small share of completions that touch a flagged risky span. Most sentences have no negation, date, name, or number in them at all, so the withhold rule barely touches typical use.

"Couldn't you just cache the strong model's common completions to make it fast enough?" Response: Ingemar's team tried exactly that. Real work email is mostly unique sentences, so fewer than 4 percent of live suggestions ever hit the cache, and peak-hour latency barely moved.
If pressed
The freshness check isn't a second model call. It's a plain text comparison between the sentence a suggestion was scored against and the sentence currently in the box. If they don't match exactly, the suggestion is dropped before it ever renders, which costs about 2 milliseconds, not another round trip to any model.
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