CaseAdvancedQuality, Cost & Token Economics / Latency budgets and UX tradeoffs / #10

Design the loading experience for an agent that runs for two minutes.

Latency budgets and UX tradeoffs

A frozen line for two minutes doesn't feel like patience. It feels like nothing is happening, and empty hands go looking for something to do.

The direct answer
Show the agent's own checkpoints live: what it's reading, what it suspects, what it's testing, what just got confirmed, the moment each one is true. Label every claim hypothesis until a real check proves it, and let the time estimate widen honestly instead of faking a smooth percentage. A two minute wait with a visible trail keeps a person watching it instead of quietly redoing the work by hand in a second tab.
Do this, in order
  1. Show the run as a live, staged narrative built from the agent's own checkpoints, not a frozen spinner with one label.Why: a blank screen for two minutes is what sends a person's hands back to tracing the problem by hand, on top of the two minutes the agent was supposed to save.
  2. Label every claim hypothesis until a real verification step confirms it.Why: a trail where every line looks equally certain makes a wrong final answer land harder, since each step along the way looked proven.
  3. Let the time estimate widen honestly instead of faking a smooth percentage.Why: the stages of a real diagnosis run wildly different lengths, so a fake percentage either races ahead or stalls, and a stall reads as broken.
  4. Never stream the agent's raw reasoning as if it were already fact.Why: raw thinking narrated live is the fastest way to hand someone a wrong cause dressed up as a confirmed one.
  5. Skip the staged narrative for anything that resolves in a few seconds.Why: five stages of theater on a three second check reads as noise, not reassurance.

How to answer this, stage by stage

Nobody is grading whether you can name loading screen patterns. They're grading whether you know a silent wait teaches a person not to trust it, and whether your design survives the moment the agent's first guess is wrong.

1
Scope it to one agent and one person
Say it like this
"Let's ground this in Fluxmend, an agent at Corvantel that watches the nightly data pipelines. When one breaks, it reads the logs and the schema itself, works out what changed, and tests a fix. That whole check takes about two minutes. Dmitri Aabel is the data platform engineer who gets paged when it runs."
Why this works
A vague "design a loading screen" question turns into a list of spinner tricks fast. One real agent and one real person makes it a real design problem instead.
2
Say your structure out loud
Say it like this
"This is a design question, so I'll use SPARK. I'll ground it in what Dmitri does today without the agent, name the one decision the loading screen hangs on, then show it surviving the day the agent's first guess is wrong."
Why this works
Tells the interviewer you have a method before you start describing screens.
3
Reframe the question before answering it
Say it like this
"This isn't really asking me to design a nicer spinner. It's asking whether I know that two minutes of silence trains a person to stop trusting the wait, and sends them off to do the work themselves in a second tab, which ends up costing more than the two minutes ever did."
Why this works
Stops the answer from turning into a grab bag of loading screen patterns with no real judgment behind picking any of them.
4
Give the anchor, the actual design decision
Say it like this
"Show the agent's own checkpoints as they land. 'Reading the pipeline, fourteen nodes found.' Then, 'Hypothesis: region_code got renamed upstream six hours ago,' clearly marked as a guess, not a fact yet. Then, 'Testing the fix on the failed batch.' Then, 'Confirmed: zero errors, fix verified.' If a step runs long, the time estimate widens and says so, instead of a bar that just freezes."
Why this works
This is the actual answer to the question. Everything else defends it.
5
Prove it with the failure, cut to four sentences
Say it like this
"Here's what happens without this. The first version just showed 'Diagnosing pipeline failure...' for the full two minutes, no change at all. One night the run took three minutes forty because of a retry loop, and by minute three Dmitri assumed it had hung and started tracing the break by hand in a second tab. His fix and the agent's own fix landed four minutes apart and collided, and the pipeline broke a second time before sunrise."
Why this works
Shows the real cost of silence, not just the mechanism behind the fix.
6
Say what you'd watch after launch
Say it like this
"I'd watch how often someone opens a second tab while Fluxmend is still running, call it the duplicate work rate. If that number doesn't drop once the staged narrative ships, the narrative isn't earning trust yet, and I'd go look at whether the labels are too vague to act on."
Why this works
Shows you think about the design as something to check after launch, not something you ship once and forget.
7
Say what you'd leave alone
Say it like this
"Anything that resolves in a few seconds, a single file check, a quick requery, doesn't get this treatment. A small plain spinner is honest there. Building a five stage narrative for a three second wait would just be theater."
Why this works
Shows judgment instead of applying the same fix everywhere out of habit.
8
Close on the decision, not the story
Say it like this
"So: a live staged narrative built from the agent's own checkpoints, claims labeled hypothesis until they're proven, and a time estimate that widens honestly instead of freezing. That's what makes two minutes feel like progress instead of a hang."
Why this works
Ending on the decision, not the anecdote, is what makes this sound like something you'd reuse, not a story you told once.

Let's learn

Fluxmend is an agent that watches Corvantel's data pipelines overnight. When one breaks, it reads the logs and the schema itself, works out what most likely changed, tests a fix against the real failed batch, and reports back. The whole check takes about two minutes.

Before Fluxmend, tracing a broken pipeline by hand took Dmitri about forty five minutes: pull the logs, diff yesterday's schema against today's, guess at a fix, rerun, and hope. Fluxmend cut that same search down to about two minutes.

The first version of Fluxmend showed one line for the full two minutes: "Diagnosing pipeline failure..." The wait really had dropped, from forty five minutes to two. But the number of Slack messages asking "is this thing stuck" didn't drop. It went up, to about three a week across the on call rotation.

Fluxmend's two minute budget, checkpoint by checkpoint
0s 60s 120s Replay failed batch, 60s Diagnose, 20s Test fix, 30s
Read the DAG, 5s Replay failed batch, 60s Diagnose hypothesis, 20s Test the fix, 30s Confirm, 5s
Replaying the failed batch against yesterday's schema is half the whole budget on its own, and it's exactly the stage the frozen spinner used to hide.

The two minutes were never the problem. Two minutes is a fair trade for forty five. The problem was a frozen line with nothing behind it, and a frozen line reads exactly like a hang. So people stopped waiting and started doing the trace themselves, in a second tab, the same forty five minute habit Fluxmend was built to end.

A frozen line for two minutes doesn't feel like patience. It feels like nothing, and empty hands go looking for something to do.

On the worst night, two engineers on call each traced the same broken join by hand, in two separate tabs, while Fluxmend was still running its own check. Both landed a fix within four minutes of each other. One fix undid the other's, and the pipeline broke a second time before sunrise.

Knowledge spark: what's a checkpoint in an agent run? A point where the agent has actually finished a real step, not just spent time thinking. Reading the logs is a checkpoint. Guessing a cause is not, until something checks the guess and it holds.
The choice I'd take back We let the loading screen collapse five real checkpoints the agent already passes through into one static label, "Diagnosing pipeline failure...", for the whole two minutes. The checkpoints existed in the code the whole time. Nobody thought to show them.

What I'd leave alone: anything that resolves in a few seconds, like a single schema check on a small pipeline, doesn't need this. A plain small spinner is honest there, and a five stage narrative for a three second wait would read as noise, not care.

The lesson: a loading screen isn't slow because of the clock on it. It's slow because a person watching it has nothing to hold onto, so their mind fills the gap with the worst guess it can make. Give the gap something true to look at, and the same two minutes stops feeling like a hang.

Now here is the same thing as a story

Read the story below when you want to feel why a live trail earns more trust than a fast, silent agent, not just be told that it does.

Corvantel's nightly pipeline run finishes around 3 a.m., and for two years, Dmitri Aabel was the one who found out first when it didn't. He knew the logs cold. Give him a stack trace and a schema diff and he could usually name the broken join before his coffee finished brewing.

Fluxmend arrived to do that same trace for him. The first month was good. A pipeline would break at 2 a.m., Fluxmend would spend its two minutes reading, testing, confirming, and by the time Dmitri opened his laptop the fix was already applied. He started using those two minutes to answer one Slack message or pour a coffee, trusting the agent completely, the way you trust a coworker who has been right ten times running.

The habit thinned in three small beats. First he watched the spinner the whole two minutes, a little anxious, waiting for the line to change. Then, after a run of clean fixes, he stopped watching at all and walked away for the full two minutes without a second thought. Then one ordinary Tuesday, a run took a little longer than usual, and the label never moved to say why. Nothing about that one run was a disaster. But after it, Dmitri started opening a second tab out of habit on every run that followed, even the ones that finished clean in ninety seconds.

The real trigger was smaller than that. One run's second stage simply took eleven seconds longer than the runs before it. That's the whole thing. The spinner said the same six words it always said, and eleven quiet seconds was enough to plant the thought that it might be stuck.

From then on, Dmitri's hands went back to the old forty five minute habit, in parallel, on almost every run, whether Fluxmend needed the help or not. Most nights this cost him nothing but wasted attention. Then came the night the retry loop actually did run long, three minutes forty against a two minute budget, spinner unchanged the whole time. By minute three he was elbow deep in the logs himself. His fix and Fluxmend's fix landed four minutes apart, disagreed with each other, and the pipeline broke a second time before sunrise. Sorting that out cost another twelve minutes and one very awkward stand up.

We didn't take two minutes away from Dmitri. We took the one thing that told him whether to trust it.

The real cost was never the twelve extra minutes that one night. It was that Dmitri quietly stopped trusting every run after that, clean or not, and started doing the work twice as a matter of habit, which meant Fluxmend's two minutes had stopped saving anyone anything.

The decision worth taking back happened in a fifteen minute planning meeting, months before any of this. Someone asked what the loading screen should say while Fluxmend worked. Someone else said, reasonably, "just a friendly line so it doesn't look hung," and the team picked one label and moved on, worried that showing the agent's internal steps would overwhelm people with logs nobody wanted to read.

Run that same bad night with the old design, and Dmitri's hands go straight to the keyboard the moment the spinner sits still too long. Run it with the new one: at one minute forty, past where Dmitri's old trigger used to fire, the screen doesn't freeze. It says, "still testing fix, no verified result yet," and widens its own estimate by thirty seconds. Dmitri reads it, and waits. At two minutes five, it confirms: fix verified, zero errors. No second tab. No collision. No second break that night.

One design gave him nothing to look at for two minutes and he filled the gap with his own hands. The other gave him a running trail he could actually watch, and his hands stayed still.

What I'd tell the version of me in that planning meeting: hiding the checkpoints wasn't protecting anyone from noise. It was just moving the guessing from the screen to the person, and a person will always fill a silent two minutes with their worst assumption.

SPARK, built for a wait nobody could see into

Not a checklist to recite. Each letter has to survive the same retry loop that the story just walked through.

SSituation. Who is this person, and how does the job get done today, without you?
Dmitri Aabel, data platform engineer at Corvantel, gets paged when a nightly pipeline breaks. Before Fluxmend, tracing the break by hand took him about forty five minutes: pull logs, diff schemas, guess, rerun.
Name the real person this loading screen has to hold the attention of, or the design floats free of anyone actually watching it.
Hand sketched labeled parts diagram titled a broken pipeline before Fluxmend. Center icon a document labeled nightly revenue pipeline down. Five callouts around it: pull logs by hand, diff yesterday's schema, guess at a fix, rerun and hope, forty five minutes gone.
What Dmitri did alone, before any agent touched the pipeline.
PPayoff. What habit do you want this to build?
Not "trust the agent because it finished fast." Specifically: Dmitri watches the trail build for two minutes, trusts each claim because it shows how it was reached, and lets the agent run unattended on the nights it's telling the truth about being unsure.
A named habit produces a named screen. A vague goal like "build trust" produces nothing anyone can actually design on a Tuesday.
AAnchor. The one design decision everything else hangs on.
Render the two minute run as a live, append only log of the agent's real checkpoints: what it's reading, what it suspects, what it's testing, what got confirmed, each line landing the moment it's true. Every claim is labeled hypothesis until a verification step actually runs and proves it. We considered a single progress bar with a rising percentage instead, and rejected it: ETL stages run wildly different lengths, a five second schema diff next to a sixty second batch replay, so a fake smooth percentage would either race ahead of the real work or stall, and a stall reads exactly like a hang.
This is the actual design decision. If it doesn't visibly survive the next letter, it's a slogan, not an anchor.
Hand sketched icon list diagram titled the anchor, a live narrative not a spinner. Row one reading pipeline DAG, fourteen nodes found. Row two hypothesis, region code renamed upstream. Row three testing fix on the failed batch. Row four confirmed, zero errors, fix verified.
Four real checkpoints, each landing on screen the moment it's true.
RRisk. What breaks the first time you're wrong?
The agent's first hypothesis is sometimes wrong, or a fix test runs long inside a retry loop. If every line in the trail looks equally certain, a wrong hypothesis narrated as fact lands harder than a plain wrong final answer would, because Dmitri watched it get "confirmed" step by step. The design has to survive both: a wrong guess, and a slow step, without either one reading as a hang.
A trail that only works when every hypothesis is right isn't a design. It's a demo that hasn't met a bad night yet.
Hand sketched flow diagram titled the day the hypothesis is wrong. Five boxes in sequence: hypothesis shown labeled unproven, fix test runs against real batch, test fails hypothesis rejected, agent widens the search, right cause found one minute later.
The hypothesis label is what keeps a wrong guess from ever reading as a confirmed fact.
KKeep out. What do you deliberately not build?
No raw chain of thought streamed live, that's a compliance risk and a hallucination risk dressed up as transparency. No pause or steer controls on day one, the team hasn't built real failure handling for a live control loop yet. Just the staged narrative, the hypothesis labels, and an honest, widening estimate.
A screen that shows everything the model is thinking doesn't build trust. It just moves the confusion earlier and dresses it up as detail.

Three things worth stating directly, since this is where the real judgment sits. The alternative rejected was a smooth animated percentage bar, which lied about a process that doesn't move at a steady rate, five seconds here, sixty there. The AI specific failure worth naming by name is confident wrongness: an agent narrating a hypothesis in the same tone it uses for a confirmed fact, which is exactly how a person ends up trusting a wrong cause. The guardrail is the hypothesis label itself, cleared only once a real verification step runs, never on the agent's say so alone. And the trade off worth naming too: emitting a human readable status line at each checkpoint costs a small amount of latency and a few extra tokens over working silently. That's the cost being accepted, on purpose, in exchange for a person who stays out of a second tab.

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

Same five letters, a law firm instead of a data team, and this time the wait varies by document length instead of retry loops.

Clauseline is an agent at Oakspire Legal that reads a batch of documents before disclosure and flags anything that looks privileged or irrelevant, so a human reviewer doesn't have to open every file cold. A typical batch takes about ninety seconds. Torkel Ostrowski runs paralegal operations there.

S, situation: before Clauseline, paralegals skimmed every document by hand for privilege markers, slow and exhausting on a large batch, and Torkel had never had to design what shows on screen while an AI agent works, only reviewed its final flags once done.

P, payoff: the habit worth building isn't "trust the flag count because the run finished fast." It's the review team watching the trail build on a batch that's about to go to opposing counsel, and trusting each flag because it shows how it was reached.

A, anchor: the same live checkpoint log. "Reading batch, three hundred forty documents." "Hypothesis: twelve flagged for privilege, checking against the custodian list." "Confirmed: nine of twelve are genuine privilege hits, three are false positives, external CC only." The estimate widens per document, not per generic stage.

R, risk: documents in one batch can vary wildly in length, a two hundred page contract sitting next to fifty one page emails, so a uniform progress read would be even more dishonest here than at Corvantel, and a wrongly confirmed privilege flag risks a real document reaching the other side.

K, keep out: no auto redaction and no auto send to opposing counsel on day one. The agent flags and narrates. A person still decides.

The decision Torkel would take back An early version of Clauseline widened its estimate per stage, not per document, so a single two hundred page merger contract buried inside an otherwise quick batch looked stuck for a full minute past budget. A paralegal, assuming it had hung, started hand reviewing that contract in a second window before the agent finished it on its own.
Hand sketched decision tree diagram titled Clauseline, does the ETA hold or widen. Root question how uneven is this document batch. Three branches: short emails only leads to ETA holds steady, one long contract mixed in leads to ETA widens stage marked in progress, batch runs past budget leads to stage marked stuck escalate.
Same anchor, a different reason the estimate has to widen honestly.

Same method, a different weak spot: Fluxmend's wait varies by which stage hits a retry loop. Clauseline's wait varies by which single document in the batch happens to be long, so the estimate has to widen for one oversized file the same way it widens for a slow stage, or the trail quietly stops telling the truth about what's actually taking the time.

Swap the trigger and it still runs.
Speed: an interviewer caps you at ninety seconds. Skip straight to the anchor, live checkpoints, hypothesis labeled until confirmed, an estimate that widens honestly, and give the one example line, "Confirmed: nine of twelve are genuine privilege hits."
Cost: there's no budget this quarter for a polished live dashboard. Ship the plain staged text log first. The trust comes from the labels, not the animation.
The model got better, for real: say Fluxmend's model gets faster and the whole run drops to forty five seconds. That's not a reason to collapse it back into one frozen spinner. The same silence problem returns at any duration once it crosses a few seconds, it just returns sooner.

Where people run it wrong.
They animate a percentage that always glides smoothly to one hundred, which teaches people the number means nothing.
They stream the model's raw internal reasoning as if it were already true, which is how a wrong cause reaches a person dressed as a fact.
They build the narrative once and never update the labels when a run actually gets stuck, so a genuinely broken run still says "diagnosing..." forever.

How to use it live. Say the real tension out loud before answering: "is this asking me for a nicer spinner, or for what happens the moment the agent's first guess is wrong." That buys a beat, and it's almost always the second one.

Flashcards (tap any card to flip it)

1 · THE FRAMEWORK
What framework is this, and what's its one job?
Tap to flip
ANSWER
SPARK: design against the failure before you build. Here that means designing the loading screen against the failure of a wrong first guess, before it ever gets narrated as if it were true.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Dmitri Aabel, a data platform engineer at Corvantel who has traced Corvantel's broken pipelines by hand for years and knows the logs cold.
3 · THE HABIT
What did Dmitri stop doing once Fluxmend worked, then start doing again?
Tap to flip
ANSWER
He stopped tracing pipelines by hand once Fluxmend took over, then started doing it again in a second tab, out of habit, once the frozen spinner gave him nothing to trust.
4 · THE ANCHOR
What's the one design decision the loading screen hangs on?
Tap to flip
ANSWER
Show the agent's own checkpoints live as they happen, reading, hypothesis, testing, confirmed, each claim labeled hypothesis until a real check proves it, with an estimate that widens honestly instead of freezing.
5 · THE OLD DECISION
What decision would you take back?
Tap to flip
ANSWER
Letting the loading screen collapse five real checkpoints the agent already passes through into one static label, "Diagnosing pipeline failure...", for the whole two minutes.
6 · THE NUMBER
Fill in the blank: tracing a pipeline by hand took Dmitri about ___ minutes. Replaying the failed batch, the longest stage in Fluxmend's own run, takes about ___ seconds.
Tap to flip
ANSWER
Forty five minutes by hand. Sixty seconds for replaying the failed batch, half of the whole two minute budget.
7 · THE REPLAY
Same bad night, new design, what changes?
Tap to flip
ANSWER
At one minute forty, the estimate widens and says it's still testing the fix, no verified result yet. Dmitri doesn't open a second tab. At two minutes five, the fix is confirmed. No duplicate fix, no second break that night.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what's the shared anchor?
Tap to flip
ANSWER
Clauseline, a legal discovery agent at Oakspire Legal. Same anchor: live checkpoints, claims labeled hypothesis until confirmed, an estimate that widens honestly, this time against a batch of documents instead of a data pipeline.

Check yourself Score: 0 / 0

Fill in the blank
1. Tracing a broken pipeline by hand used to take Dmitri about ___ minutes. Fluxmend's own diagnosis takes about ___ minutes.
Show hint
Look at the second paragraph of "Let's learn," right after the product is introduced.
Show answer
Forty five minutes by hand, about two minutes with Fluxmend. The wait really did drop. The design problem was never the two minutes, it was the silence inside them.
Multiple choice
2. Fluxmend's early version showed one static line, "Diagnosing pipeline failure...", for the full two minutes. What actually happened?
  • A. Engineers trusted it completely and waited out every run without complaint.
  • B. Engineers started opening a second tab and tracing the pipeline by hand in parallel, just in case it had hung.
  • C. The pipeline ran faster because nobody was watching the screen.
  • D. Corvantel removed Fluxmend from the nightly pipelines entirely.
Show hint
Think about what a frozen line with no change gives a person to hold onto for two full minutes.
Show answer
B. A silent wait doesn't read as patience, it reads as a hang, so people went back to the forty five minute habit Fluxmend was supposed to end, and did both at once.
True or false
3. True or false: the anchor design shows every claim as already confirmed, since a two minute wait needs the reader to feel certain the whole time.
  • True
  • False
Show hint
Check the Anchor step in the SPARK recap for how claims are labeled before a verification step runs.
Show answer
False. Claims start labeled hypothesis and only move to confirmed once a real verification step proves them. Showing everything as already certain is exactly what makes a wrong guess land harder later.
Short answer, name the rejected alternative
4. What alternative did the team consider for showing progress during Fluxmend's two minute run, and why did it lose?
Show hint
Look at the Anchor step in the SPARK recap, right where the design decision is stated.
Show answer
Model answer: A single progress bar with a rising percentage. It lost because ETL stages run wildly different lengths, a five second schema check next to a sixty second batch replay, so a fake smooth percentage would either race ahead of the real work or stall, and a stall reads exactly like a hang.
Short answer, apply it yourself
5. Pick an AI product you use yourself. Name one feature in it with a wait of ten seconds or more, and how you'd redesign what shows on screen during it.
Show hint
Think of a feature that does several real things in sequence, not one single instant call.
Show answer
Model answer: A coding assistant that scans a whole repository before answering a question shows one spinner labeled "Thinking..." for up to thirty seconds. Redesigned, it would show its real checkpoints: "Reading twelve files," "Found the function you're asking about," "Checking two other files that call it," each landing the moment it happens, so a slow scan reads as working, not stuck.
Multiple choice
6. Fluxmend's two minute budget breaks into five checkpoints. Which one takes the largest single share of the 120 seconds?
  • A. Reading the pipeline DAG.
  • B. Replaying the failed batch against yesterday's schema.
  • C. Testing the fix.
  • D. Confirming the fix at the end.
Show hint
Check the chart in "Let's learn." One segment takes up exactly half the bar.
Show answer
B. Replaying the failed batch takes about sixty seconds, half of the whole two minute budget, and it's exactly the stage the old frozen spinner used to hide.
Before you close the answer
Why this works
Tests whether you know a silent wait doesn't feel like patience, it feels like nothing is happening, and empty hands go find something to do. Most candidates redesign the spinner. Few design what happens the moment the agent's own first guess turns out wrong.
Follow-up traps
"What if a step genuinely runs long, isn't showing that worse than hiding it?" Response: no, because the estimate is allowed to widen and say so, "still testing fix, no verified result yet," which is exactly what caught the retry loop in the story before it turned into a second broken pipeline.

"Isn't narrating the agent's own reasoning live just a shortcut to showing hallucinated causes as fact?" Response: that's why every claim is labeled hypothesis until a real verification step runs and confirms it, and why the raw reasoning itself is never streamed, only the checkpoints the agent has actually passed.
If pressed
The narrative comes from the agent calling a small status function at each real checkpoint as it happens, not a separate model summarizing the transcript afterward, so what's on screen can never say more than what's actually been checked.
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