What should happen in the UI when the model returns nothing usable?
Halcyon Cove Hotels runs Aravel, an AI concierge tool its front-desk staff open on a shared tablet. Priya Nakashima has worked the evening desk at the Cove for six years. Here is what Aravel did the night it could not find a safe dinner match, and what should have happened instead.
- Never show a blank screen for "nothing usable." Show a named not-sure state with a next step.Why: a blank screen reads as "no options exist," not "the model failed."
- For anything safety-related, make the escalate-to-a-person path the default, not a second tap away.Why: the misses that can actually hurt someone are exactly the ones staff are least likely to go looking for on their own.
- Tell the person handling it what the model actually attempted, not just that it came up empty.Why: without that, staff either trust the blank screen too much or waste minutes guessing what broke.
- Log every "nothing usable" event by request category, not only as one failure rate.Why: a single number hides which category is quietly the dangerous one.
- Leave the fast, confident path alone for high-volume, low-stakes requests.Why: a fallback state on wifi passwords and checkout times is friction with nothing to protect.
- Route repeat "nothing usable" categories back to the product team weekly, not just to the front desk.Why: a gap the night shift quietly works around every week never gets fixed if it only ever lives in their heads.
How to answer this, stage by stage
Nobody is grading whether your empty state looks polished. They're grading whether it survives the one night a guest's safety was riding on it.
Let's learn
What should a screen say when it has nothing to say? Aravel is the case that answers it. It's an AI concierge tool a boutique hotel chain gives its front-desk staff, so they can answer guest questions fast without a phone call.
Before Aravel, an agent kept a laminated binder of partner restaurants and called ahead to confirm a dietary fit, a real answer, but it took Priya about six minutes per guest on a busy night.
Now Aravel answers most requests in about 20 seconds, checkout times, wifi passwords, local transit, no call needed.
Here's the turn: the speed was never the problem. The problem showed up on the rare, compound request, mixing an allergy with a specific cuisine, where Aravel sometimes has nothing usable to return. The screen just goes blank, or spins and times out, and staff, trained to trust the instant answer, read the blank screen as "there is nothing available" instead of "the tool couldn't finish the job."
At its worst, someone with a real allergy gets told, in effect, there is nowhere safe to eat tonight, when three partner restaurants down the street could have handled it easily. Nobody lied to that guest. A blank screen just did the job a lie usually does.
What I would leave alone: checkout times, wifi passwords, pool hours. These almost never come back empty, and even when one does, nothing bad happens if a guest waits thirty seconds for a human answer. They don't need a hard escalate path built around them.
The lesson: a blank screen is not neutral. It reads as an answer, "no," even though nothing was ever decided. If a screen has nothing to say, it has to say that, out loud, with somewhere to go next.
Now here is the same thing as a story
The short version above is what you'd say defending this redesign to Halcyon Cove's guest experience team. Read this one for how close the near miss actually came.
Priya can calm down an angry guest in under a minute flat, a skill six years on the evening desk will teach anyone. Aravel arrived about a year ago, and for months it made her job faster without changing how she thought about it at all.
A guest would ask about a good dinner spot nearby, Priya would tap it into the tablet, and an answer would come back in seconds, matching what she'd have told them anyway. Slowly, she stopped double-checking Aravel's answers against her own knowledge of the neighborhood, since it kept being right.
On a busy Friday night, a guest named Mr. Okonkwo-Hart stopped at the desk. He had a serious shellfish allergy, wanted something close by, and was hungry after a long travel day. Priya typed the request into Aravel. The screen loaded, spun for a few seconds, and then simply cleared, no card, no message, nothing.
Priya, seeing nothing on the screen and trusting Aravel's usual speed, told the guest she didn't have anything close by that could safely handle his allergy tonight. He thanked her and turned toward the elevator, planning to skip dinner.
The shift lead, walking past the desk, overheard the tail end of it and asked what Aravel had actually returned. Priya turned the tablet around: a blank card, nothing else. The shift lead knew of three partner restaurants within six blocks that handle shellfish allergies as a matter of routine, called one directly, and the guest was seated within fifteen minutes.
With the redesigned screen, Aravel now says: "Couldn't confirm a safe shellfish-free match nearby. Three partners worth calling directly: Marchetti's, Bellhaven Kitchen, The Tide Table. Or ring the on-call concierge lead, ext. 402." Run the same night forward: Priya calls Bellhaven Kitchen herself at 7:50pm, and Mr. Okonkwo-Hart is seated by 8:02pm, three minutes sooner than the version where a stranger happened to be walking by.
The old screen asked Priya to read a blank space and guess what it meant. The new one just tells her what it tried and who to call.
We built the empty state to be quiet, on purpose, so it wouldn't look broken. It took a shift lead's lucky timing to see that quiet and blank read as exactly the same thing to the person holding the tablet.
SPARK, in one screenNot a lecture on making an empty state feel gentle. SPARK is what forces you to design against the one night it actually matters.
The recap, one line per letter: situation is the laminated binder and the phone call, payoff is teaching staff that "not sure, call this person" is a real answer, anchor is the redesigned empty state and its always-visible next step, risk is the night the model has nothing on a dangerous request, and keep out is holding back auto-booking and AI-written medical explanations.
And if you want to be sure it really works, try it somewhere elseSame five letters, a veterinary triage assistant instead of a hotel concierge. A different anchor, aimed at a different empty screen.
Fernbrook Animal Clinic runs an intake assistant that helps front-desk staff triage phone calls about a sick pet before a vet is free to call back. Deja Whitfield answers those calls. Mapped onto SPARK: situation is a receptionist today, working from a printed symptom checklist and her own judgment about which calls need a vet immediately; payoff is the habit to build, treating "I can't tell from this description" as a real answer that gets a call escalated, instead of a guess dressed up as reassurance.
The anchor here aims at a different failure: when the assistant can't confidently rank how urgent a call is, given vague symptoms over the phone, it never shows a default "routine" label just to fill the screen. It shows "couldn't rank this call. Escalate to the on-call vet now," with the specific symptoms it couldn't reconcile listed underneath. The risk the clinic's team designed against was a receptionist seeing a blank urgency field, assuming that meant routine, and telling a worried owner to wait until morning for a pet that needed same-day care.
Swap the trigger and it still runs.
Speed: an interviewer caps you at sixty seconds. Say "never a blank screen, always what it tried and one next step, hard-coded for anything safety-related," and stop.
Cost: there's no time to redesign every empty state across the product this quarter. Say so honestly, and start with the categories where a miss can actually hurt someone, not the ones that are simply annoying.
The model gets better, for real: if Aravel's match rate improves and "nothing usable" becomes rare, that's still not a reason to remove the named next step, a rarer miss on a dangerous category is exactly the miss this design exists to catch.
Where people run it wrong.
They treat "no result" and "wrong result" as the same design problem, when a blank screen needs an entirely different fix than a mistaken one.
They bury the escalate path behind a "why didn't this work" link nobody taps under time pressure.
They wait for a complaint to notice the gap, when the person most at risk is the one least likely to know enough to complain.
How to use it live. When someone asks what should happen when the model has nothing, ask yourself one question first: what does the person in front of the screen do in the next ten seconds? Design the empty state to give them an actual next move, not a blank space to interpret on their own.
Flashcards (tap any card to flip it)
Check yourself Score: 0 / 0
Show hint
Show answer
Show hint
Show answer
Show hint
Show answer
Show hint
Show answer
Show hint
Show answer
Show hint
Show answer
"What if the agent ignores the escalate prompt anyway, the way Priya almost did?" Response: that's exactly why the redesign puts a name and a number directly in the message, not behind a link, so acting on it takes no extra decision.
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
More on Designing for failure and graceful degradation
- #2 Design the fallback experience for an AI feature when the provider is down.
- #3 Explain the difference between failing loudly and failing silently, and which you prefer.
- #4 How do you design a feature that degrades to a non-AI version rather than breaking?
- #5 Describe three failure modes to design for before launch.
- #6 What error message would you write for a model timeout, and what would you avoid saying?
- #7 How should the product behave when the model produces output that fails a safety filter?