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

How would you communicate a latency regression to users?

Latency budgets and UX tradeoffs

A route that goes quiet mid-calculation does not feel careful. It feels dead, and the guess a driver makes to fill that silence is exactly the guess a safer routing model was built to stop her from making.

The direct answer
The moment a route calculation runs past about twice its own normal time for that kind of trip, drop the blank spinner. Put a rough route on the screen right away, say in plain words that the safer route is still being found, and swap in the better one the instant it lands. Never leave the screen empty while the model is still thinking, and never name the model, the engine, or the word "latency" to the driver at all.
Do this, in order
  1. Trigger the message the moment a route crosses about twice its own normal time for that trip type, and put a rough route on screen right away.Why: a blank screen past a driver's patience is the real danger, not the extra second by itself.
  2. Give the fallback a real route, not just reassuring words.Why: a driver already moving needs something to follow, a sentence alone does not steer a car.
  3. Write the message in plain words, never the model or engine name.Why: "SafeRoute ML is running slow" means nothing at seventy miles an hour, "still finding the safest route" does.
  4. Log every threshold crossing to a live dashboard, split by trip type.Why: it catches a regression getting worse before a support ticket, or a near miss, does it for you.
  5. Leave short, already-fast trips alone, no message at all.Why: adding a status line to an eleven-hundred-millisecond wait invents a worry that was never there.
  6. Escalate past a second, longer threshold to a plainer banner and a cached last-known route.Why: the rare full slowdown needs a stronger fallback than the everyday one, or the driver is stuck twice.

How to answer this, stage by stage

Nobody is grading whether you can write a friendly loading message. They are grading whether "communicate a regression" turns into an actual, threshold-driven design, instead of a promise to be transparent someday.

1
Scope it to one real product and a real trip
Say it like this
"Let's use Farroute, from Bearing Labs. It gives turn by turn directions and route suggestions, and it just swapped its routing engine for a heavier model called SafeRoute ML, which checks live incident and construction data before it commits to a route. That extra checking is exactly why some routes now take longer to calculate. Britta Solberg is the PM who owns it."
Why this works
A generic "be transparent about delays" answer stays a slogan. One real product with a named, real cause for the slowdown gives you an actual message to design, not a feeling to express.
2
Name what a bad answer looks like, before giving the good one
Say it like this
"The easy answer is a banner that says 'we're working on it,' shown to everyone, all the time, as soon as the new model shipped. That's wrong twice over. It scares drivers on trips that are barely slower, and it says nothing useful to the one driver stuck on a genuinely stalled calculation right now."
Why this works
Naming the blanket-apology answer first shows you know the real question is not "should we say something," it's "who needs to hear it, and exactly when."
3
Lay out the two things that actually decide it
Say it like this
"There are two questions worth asking about any route calculation. One, how does this wait compare to that trip's own normal time, not a single number for every trip. Two, is the driver already moving, or still parked. If the wait is running past double its own baseline and the driver is moving, that's the case that needs a message and a fallback route, right now. If it's fast, or the car hasn't moved yet, silence is still the right answer."
Why this works
The question asked how to communicate a regression, not whether to. Naming both dimensions before picking a trigger proves you separated "this is slow" from "this is dangerous," which most candidates collapse into one thing.
4
Give the anchor, the actual message design
Say it like this
"Route every calculation through those two checks the moment it starts. Under about two seconds, keep the plain progress ring, say nothing. Past two seconds, and past double that trip's own normal time, plot a rough, fast route immediately using the old lightweight engine, and show one line: 'Still finding the safest route.' The second SafeRoute ML finishes, the better route swaps in and the line disappears. Past a second threshold, say four seconds, the line becomes a banner: 'Routing is running slower than usual. You're on the quickest route we have, we'll upgrade it automatically.'"
Why this works
This is the actual answer to the question. Everything else in the walkthrough defends it.
5
Prove it with the failure, cut to four sentences
Say it like this
"Here's what happens without this. Before the redesign, the screen stayed blank until SafeRoute ML fully finished, no matter how long that took. One driver, mid-trip on a highway with the screen still spinning, pulled onto the shoulder to wait it out, and a truck clipped past close enough to count as a near miss. The tool built to route her around danger had just put her in the middle of it, by saying nothing."
Why this works
Shows the real cost landed on a driver's safety, not just on a star rating, which is the part interviewers remember.
6
Say what happens when the anchor itself is wrong
Say it like this
"The two-second and four-second cutoffs have to survive a full backend slowdown too. If SafeRoute ML is down hard and nothing comes back for nine minutes, the driver isn't left staring at an upgraded banner forever. Past its own outer limit, Farroute drops back to the last route it ever calculated for that destination, cached on the phone, and says so plainly, instead of promising an upgrade that never arrives."
Why this works
Shows you're designing the message to survive the day the system is genuinely broken, not just the day it's a little slow.
7
Close on the decision, not the story
Say it like this
"So: silence under a trip's own normal time, a plain line and a fast fallback route past double that time, and a plainer banner with a cached route past the outer limit. That's the actual rule, not a promise to 'communicate delays better' that never says who sees what or when."
Why this works
Ending on the rule, not the anecdote, is what makes this reusable for the next slow feature instead of a story told once.

Let's learn

Farroute is Bearing Labs' navigation app. A driver opens it, taps a destination, and it gives turn by turn directions, picking a route it thinks is fastest and safest given traffic, construction, and reported incidents.

Before Bearing Labs added SafeRoute ML, Farroute used a lighter, purely graph-based engine. It found a route fast, a median of three tenths of a second, and even its slow one-in-twenty case finished under a second. It didn't check for a crash reported four minutes ago, or a lane closure that started an hour back. Drivers trusted it fully, glanced at the screen once, and drove.

Knowledge spark: what actually counts as a regression? Not "the app feels slow today." A regression is a step that now runs meaningfully past its own past baseline, for that same kind of trip. A route that always took two seconds and still takes two seconds isn't regressed, even if two seconds feels long. A route that used to take a third of a second and now takes four is.

SafeRoute ML checks live incident feeds and a short-term hazard model before it commits to a route, which is exactly why it catches things the old engine missed. That checking has a cost: a median of just under a second for a simple point-to-point trip, but a slow one-in-twenty case that can run past four seconds during peak traffic, and past seven or eight seconds on a multi-stop commercial route with several deliveries queued.

The mistake worth worrying about was never that some routes now take four seconds instead of one. It was that every one of those seconds looked exactly like nothing on screen, a blank spinner with no route line, so drivers filled the silence with their own guess: keep going off memory of the last route, or pull over and wait.

We did not just add three seconds to a route calculation. We handed a driver, alone at highway speed, a decision the app used to make for her.
Farroute route calc time, typical vs slow case, before and after SafeRoute ML
8s 5s 2s 0 2s message line 0.3s 0.9s Old graph engine 1.1s 2.6s SafeRoute, simple trip 2.4s 7.8s SafeRoute, multi-stop
typical run, its own medianslow case, one in twentywhere the message kicks in
Only the old engine and SafeRoute's simple-trip median stay under the line. Everything else, including one in twenty simple trips, now needs the fallback route and the message.

At its worst, that silence turned into a driver on the shoulder of a highway with a stalled calculation, and a truck clipping past close enough to count as a near miss. No one was hurt. But complaints tagged "app froze" rose sharply the same month, and one in every thirty peak-hour sessions ended with the driver leaving Farroute mid-calculation, switching to another map app to get moving again.

Hand sketched timeline titled the Tuesday that started the fix. Four milestones: normal trip with the route line showing fine, calc stalls and the screen goes blank, pulls over and waits on the shoulder, a truck clips past inches from the car.
The small moment that made the silent wait impossible to leave alone.
Sessions ended mid-calculation per week, before and after the staged message shipped
260 130 0 staged message ships 240 / week 90 / week 21 / week Week 1 Week 8
Before, blank spinner onlyAfter, staged message plus fallback route
Nothing about SafeRoute's own compute time changed across these eight weeks. Only what the screen said while it worked did.
The decision that mattered Farroute's routing pipeline ran the base route and SafeRoute's safety pass as one merged call, so nothing could show on screen until the whole thing finished. That made sense when the pipeline was one fast step. It stopped making sense the day a second, slower step got bolted onto the front of it and nobody split the two apart.

What I'd leave alone: short trips under a couple of miles with no live incidents nearby, where SafeRoute's own median stays around a second. Adding a status line to a wait that short invents a worry that was never there, and trains drivers to distrust a message that, most of the time, means nothing.

The lesson: a quiet screen isn't neutral. It reads as either "nothing is happening" or "something is wrong," and a driver moving at speed will always pick one of those two and act on it, whichever one you didn't design for.

Now here is the same thing as a story

Read the story below when you want to feel why a wait has to say something specific, not just eventually say something. The short version is above. This is the long one.

For most of the two years Britta Solberg had run Farroute's routing product, the best part of her week was watching the trip-completion graph hold flat, high, and boring.

Britta had joined Bearing Labs when Farroute was still finding its footing against two much bigger map apps, and she'd earned her seat on every routing decision the slow way, by shipping small, careful fixes that never broke anyone's trip. Drivers didn't think about Farroute. They opened it, tapped a pin, and drove. That was the whole point.

SafeRoute ML shipped quiet and confident. It checked live incident reports and short-term hazard patterns before committing to a route, catching things the old engine simply couldn't see, a lane closed twenty minutes ago, a crash still being cleared. Early tests loved it. Wrong-turn complaints, the kind caused by routing someone straight into a closure, dropped by nearly half in the first month.

For a while, that was the whole story, and it was a good one. Traffic was light during the beta, SafeRoute answered quickly on most trips, and the extra second or two barely registered next to how much better the routes had gotten. The habit thinned out slowly after that: a slow Tuesday evening commute here, a driver muttering "did it freeze" under her breath, a second driver doing the same thing the following week without telling anyone. Nobody filed a ticket. Waiting a beat longer for a good route felt like nothing worth mentioning.

The trigger wasn't a single catastrophe, at first. It was a delivery driver, mid-route on a highway on-ramp during peak traffic, watching the screen sit blank for what felt, to her, like far too long. She pulled onto the shoulder to wait it out, the way anyone reasonably would with no line on the map and no way to know if it was still working. A truck clipped past close enough that she felt the draft of it. Nobody was hurt. She filed a support ticket that used the word "scared."

We did not just make one route take four seconds longer. We put a driver on the shoulder of a highway, alone, guessing whether a safety feature had quietly stopped working.

The real cost was never the four seconds. It was that Farroute, a tool built specifically to route people around danger, had gone silent at the exact moment a driver needed it to say something, and her sensible response to that silence, pulling over, was the more dangerous of her two choices.

The decision Britta would take back happened in a routing review, months before SafeRoute ever shipped. An engineer asked whether the safety pass should run separately from the base route calculation, so something could show on screen while the safety check kept going. "It's one pipeline," Britta said. "Keep it one call, we ship faster and there's less to maintain." Nobody pushed back. It made complete sense in that room, back when the whole pipeline still finished in under a second.

Run that Tuesday over again the old way, and it repeats: a stalled screen, a driver on the shoulder, a truck too close for comfort. Run it the new way: the moment SafeRoute crosses double its own normal time for that trip, a rough route appears immediately from the fast engine, with one plain line saying it's still finding the safest route. The driver keeps driving. By week eight, sessions ending mid-calculation had fallen from two hundred forty a week to twenty one, and the shoulder-pullover pattern in the logs had all but disappeared.

One design trusted that a single blocking call, once fast, would stay simple forever. The other trusted that the moment a second, slower step joins the first one, the screen owes the driver a sentence, not just an eventual answer.

What I'd tell myself, back in that routing review: "one pipeline, ships faster" was true the day we said it, and false the day SafeRoute made the pipeline slow enough that silence stopped being free.

SPARK, for a wait that has to say something

Not a checklist to recite. Each letter has to survive the same near miss the story just walked through, a driver alone on a shoulder with a blank screen.

SSituation. Who is this person, and how does the job get done today, without you?
Before Farroute existed at all, a delivery driver worked from a printed route sheet and local knowledge, checking a paper map at red lights and backtracking when a shortcut turned out to be closed. Roughly twelve minutes lost per run to wrong turns and rechecking, no app, no model, anywhere in the loop.
Ground the anchor in the workflow that existed before any of this, or the design floats free of any actual driver's day.
Hand sketched icon list titled a delivery run before Farroute existed. Four items: read a paper route sheet, ask locals for shortcuts, backtrack after a wrong turn, pull over to check the map.
The whole job, done by hand, before Farroute or any routing model existed.
PPayoff. What habit do you want this to build?
Not "drivers feel less anxious while it loads." Specifically: a driver sees the screen respond within about two seconds, always, and keeps driving on whatever it shows, trusting that a better route will swap in on its own if one is coming, instead of needing to check.
A named habit, keep driving and trust the swap, produces a specific design. "Communicate delays" produces nothing anyone can build by Friday.
AAnchor. The one design decision everything else hangs on.
Route every calculation through two checks the moment it starts: has it passed about two seconds, and has it passed double that trip's own normal time. Under both, stay silent. Past either, show a rough route immediately from the fast fallback engine, with one plain line, "still finding the safest route," and swap in the better route the instant it's ready.
This is the actual design decision. If it doesn't visibly survive the next letter, it's a slogan, not an anchor.
Hand sketched labeled parts diagram titled the anchor, close up, what the screen actually shows. Center icon a gauge labeled Farroute screen. Four callouts: rough route shown at once, line still finding safest route, badge lights up when it upgrades, banner past four seconds still checking.
The one screen a reader should be able to point at and say, that's the decision.
RRisk. What breaks the first time you're wrong?
A full backend slowdown can push SafeRoute ML's response time from four seconds to nine minutes without warning. If the design only planned for "a little slower," a driver watching the same upgraded-soon banner for nine straight minutes ends up more suspicious than if nothing had been said at all.
A message that only works when the system misbehaves politely isn't a design. It's the old blank spinner wearing a sentence instead of a number.
Hand sketched comparison diagram titled the day the whole backend slows down. Left panel, no second stage, still blank at nine minutes, no way out. Right panel, with the escape hatch, past four seconds it switches to the last known route.
The anchor is allowed to be wrong once, as long as it says so within its own four seconds instead of nine minutes of silence.
KKeep out. What do you deliberately not build?
No push notification apologizing for the regression, that's a bigger interruption than the wait itself for something most drivers never notice. No mention of "SafeRoute ML" or "latency" anywhere in the message, a driver mid-turn has no use for an engine name. No settings toggle to switch back to the old fast engine permanently, since that quietly turns the exact safety check SafeRoute exists for back off.
A wait message that explains the machinery doesn't build trust. It borrows attention the driver doesn't have to spare at highway speed.
Hand sketched icon list titled what Farroute leaves for later. Three items: no push alert about the regression, no model name shown to drivers, no toggle back to the old engine.
What stayed off the day one build, and why each one waits.

Three things worth stating directly, since this is where the real judgment sits. The alternative Britta rejected was a permanent settings toggle letting drivers opt back into the old, faster engine whenever they wanted. It lost because the trade SafeRoute makes, a few extra seconds for routes that account for a crash reported four minutes ago, is exactly the trade the app is supposed to make on a driver's behalf, and a quiet opt-out would let the slowest, most cautious routes get skipped by whoever got annoyed first, which defeats the entire point of shipping it. The AI specific failure worth naming by name is silent degradation: a genuine model regression looks, on screen, identical to an app that has simply frozen, and a driver has no way to tell the two apart without being told. The guardrail is the two-check trigger itself, since every request that crosses double its own baseline gets flagged the same way regardless of cause, so a slow model and a broken one both surface the same honest message instead of staying invisible. And the quality, latency, and cost trade-off worth naming too: SafeRoute ML trades a few extra seconds of calculation time for routes that account for live hazards the old engine couldn't see, and the fallback route shown during that wait is deliberately the less-informed one, a small, stated cost, accepted openly, rather than hidden behind a spinner that pretends nothing is being traded at all.

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

Same five letters, a radiology scan instead of a highway, and this time the reversal is a merged pipeline again, but the person on the other end is a physician, not a driver.

ScanQueue is a triage assistant built for Corvinus Imaging. It reads an incoming scan, runs a deep anomaly check for things like a possible bleed, and re-sorts the reading queue so a radiologist sees the most urgent cases first. Fabian Oyelaran is the engineer who redesigned its wait after a model upgrade made the deep check noticeably slower.

S, situation: before ScanQueue, a technologist logged each scan into a plain first-in-first-out queue by hand, and a radiologist worked straight down the list, sometimes reading a routine scan well before a genuinely urgent one that happened to arrive later.

P, payoff: the habit worth building isn't "physicians feel informed while it processes." It's a physician glancing at a live status and trusting that an urgent flag, once it appears, is already true, so they act on it the moment they see it.

A, anchor: split the pipeline into two lanes. A fast, coarse triage pass, urgent or not, runs first and blocks, typically under eight seconds, and shows a status the instant it's done. The deep anomaly check, the part that got slower, keeps running in the background afterward, updating the same status line when it finishes instead of holding the urgent flag hostage to it.

R, risk: the deep model occasionally times out on an unusually dense scan. Without a limit, a case could sit "reviewing" for twenty minutes with no signal at all, which is worse than no AI triage in the first place, since a physician might assume it had already been checked and cleared.

K, keep out: no automatic sign-off from the deep check alone, a radiologist still reviews every flagged case by eye; and no patient-facing wait estimate, that's a feature for later, this fix is about the clinical queue, not the waiting room.

The decision Fabian would take back ScanQueue's first version ran the fast triage question and the deep anomaly check as one call, so even an obviously routine scan waited on the slow deep check every time, because the two questions had never been split apart.
Hand sketched flow diagram titled ScanQueue's two lanes after the split. Five boxes in sequence: scan arrives, fast triage pass blocks briefly emphasized, urgent flag to radiologist now, deep review runs in background, status updates live on the chart.
Same two-check shape as Farroute's anchor, applied to a scan instead of a route.

Same method, a different weak spot: Farroute's slow step is an added safety pass on every single trip. ScanQueue's slow step only bites on a dense, unusual scan, so the fix wasn't picking one threshold, it was noticing that a fast, always-needed question, urgent or not, had been bundled into the same blocking call as a slow, deeper one that didn't need to hold it up.

Swap the trigger and it still runs.
Speed: an interviewer caps you at ninety seconds. Skip straight to the anchor, silence under a trip's own normal time, a plain line and a fast fallback past double that, and the one number, sessions ending mid-calculation fell from 240 a week to 21.
Cost: there's no budget this quarter to build a fancy live status screen. Ship the plainest version, one line of text and a rough route, it costs almost nothing and it's the part that actually earns the trust back.
The model got better, for real: say SafeRoute ML gets twice as fast next quarter. That's not a reason to remove the message system. A route that still crosses double its own new, faster baseline still deserves the same honest line, it will just fire less often.

Where people run it wrong.
They write one message for every wait, so a driver on a two-second trip and a driver on a nine-minute outage see the exact same reassuring sentence.
They set the trigger off a single fixed number instead of each trip's own baseline, so a naturally slow trip type trips the message on every single run.
They explain the cause, the model name, the word "latency," instead of the fix, which spends a driver's attention on something they can't act on anyway.

How to use it live. Name the real split before answering: "is this asking me what to say, or asking me when to say it." Say that out loud, and it buys a beat while making clear you're not going to answer with a single friendly sentence.

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 regression message and its fallback to survive the day the slowdown is far worse than planned for.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Britta Solberg, PM at Bearing Labs, owns Farroute's routing pipeline after SafeRoute ML made route calculation slower on some trips.
3 · THE HABIT
What habit did the redesign have to build in drivers?
Tap to flip
ANSWER
Keep driving on whatever the screen shows and trust the route will upgrade on its own, instead of pulling over or guessing the turn from memory.
4 · THE ANCHOR
What's the one design decision the whole message hangs on?
Tap to flip
ANSWER
Past double a trip's own normal time, show a rough fallback route immediately with one plain line, then swap in the better route the instant it lands. Stay silent below that line.
5 · THE OLD DECISION
What decision would you take back?
Tap to flip
ANSWER
Running the base route and SafeRoute's safety pass as one merged call, so nothing could show on screen until the whole thing finished, long after that made sense.
6 · THE NUMBER
Fill in the blank: sessions ending mid-calculation fell from ___ a week to ___ a week after the staged message shipped.
Tap to flip
ANSWER
Two hundred forty a week, down to twenty one, over eight weeks, with no change to SafeRoute's own compute time.
7 · THE REPLAY
Same Tuesday, new design, what changes?
Tap to flip
ANSWER
A rough route appears within two seconds with one plain line, the driver keeps driving instead of pulling over, and the shoulder-pullover pattern all but disappears from the logs by week eight.
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
ScanQueue, a radiology triage tool at Corvinus Imaging. Same anchor: split a fast, always-needed check from a slower deeper one so the fast answer never waits on the slow one.

Check yourself Score: 0 / 0

True or false
1. True or false: the redesign shows the same status message to every driver the moment SafeRoute ML ships, regardless of how long any individual route takes to calculate.
  • True
  • False
Show hint
Check the anchor step, what happens to a route that stays under about two seconds.
Show answer
False. The message only appears once a specific route crosses about double its own normal time. A fast route stays silent, on purpose, so a message that always appeared would be lying about most trips.
Multiple choice
2. A short trip near home has always taken about one second to calculate, and today it still takes one second. What should the driver see?
  • A. A message saying the safety model is being extra careful today.
  • B. Nothing, the normal quiet progress ring, since the wait matches its own baseline.
  • C. A banner naming SafeRoute ML and its current response time.
  • D. A prompt asking whether to switch back to the old engine.
Show hint
Look at what "what I'd leave alone" says about short, already-fast trips in Let's learn.
Show answer
B. A trip running at its own normal time stays silent by design. Adding a status line to a wait that short invents a worry that was never there.
Fill in the blank
3. Sessions ending mid-calculation fell from ___ a week in week one to ___ a week by week eight, after the staged message and fallback route shipped.
Show hint
Look at the line chart in Let's learn, right after the trigger diagram.
Show answer
Two hundred forty a week, down to twenty one. Nothing about SafeRoute's own compute time changed in those eight weeks. Only what the screen said while it worked did.
Short answer, name the rejected alternative
4. What alternative did Britta reject for handling the slower routes, and why did it lose?
Show hint
Look at the paragraph right after the K step in the framework recap, where the three closing points are stated directly.
Show answer
Model answer: A permanent settings toggle letting drivers switch back to the old, faster engine whenever they wanted. It lost because the extra seconds SafeRoute costs are the price of catching hazards the old engine missed, and a quiet opt-out would let the most cautious routing get skipped by whoever got annoyed first.
Multiple choice
5. ScanQueue's first version ran the fast triage question and the deep anomaly check as one blocking call. What does that reveal?
  • A. AI triage tools do not belong in a radiology department at all.
  • B. Bundling a fast, always-needed check with a slow, deeper one forces the fast answer to wait for the slow one every time.
  • C. Corvinus Imaging should have kept the original first-in-first-out queue instead.
  • D. Only urgent scans should ever get a deep anomaly check.
Show hint
Read the key point block right under Fabian's steps, "the decision Fabian would take back."
Show answer
B. Merging the two checks meant even an obviously routine scan waited on the slow deep check every time, since the two questions had never been split apart.
Short answer, apply it yourself
6. Pick an AI product you use yourself. Name one step in it that sometimes runs slower than usual, and say what it should show you while it's happening.
Show hint
Think about whether that product currently shows you nothing, a generic spinner, or something specific, while you wait.
Show answer
Model answer: A photo-editing app's AI background removal usually finishes in two seconds but can run past ten on a busy, cluttered photo. Instead of a plain spinner, it should show the original photo with a rough, low-quality cutout preview right away, and swap in the clean version once the fuller pass finishes, so the person can already start placing it instead of staring at a wheel.
Before you close the answer
Why this works
Tests whether "communicate a regression" turns into an actual, threshold-driven message design, and whether you know a silent wait can push a person into a riskier workaround than the delay itself. Most candidates propose a single friendly sentence. Few tie the trigger to the trip's own baseline, and fewer still connect a quiet screen to a real safety incident.
Follow-up traps
"Why double the baseline specifically, and not a fixed number like three seconds?" Response: a fixed number either fires constantly on naturally slow trip types, like multi-stop routes, or misses a genuine regression on a trip that's normally near instant. Doubling each trip's own baseline catches both without a separate rule for every trip type.

"Isn't showing a worse fallback route also risky?" Response: yes, and that's named directly, it's a small, stated trade, a less-informed route shown openly while a better one keeps computing, not a hidden one. It's still safer than a driver improvising her own route from memory or pulling over on a live highway.
If pressed
Every threshold crossing gets logged with the trip type, the wait length, and whether the driver was moving at the time, feeding a live dashboard split by trip type, so a regression that's getting worse shows up there days before it shows up as a support ticket or a near miss report.
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