Designing UX for a Confidently-Wrong Intern
Traditional UX assumes the system is correct and fast. An AI feature is neither guaranteed. Design for that.
Traditional UX gets to assume two things: the system is correct, and the system is fast. An AI feature gives you neither for free. The core is non-deterministic, its latency swings by seconds, and worst of all it is sometimes wrong and does not know it. So the design job is not "make the happy path pretty." It is to capture the model's real value while making its uncertainty legible and its errors survivable. This post is that design discipline, and it is the box most AI products under-build.
This is part twelve of the From Demo to Product series, and the companion to the reference architecture post. That one drew the boxes; this one is the box that faces the user.
The mental model: a brilliant, fast, confidently-wrong intern#
Design around what the model actually is: a capable, quick assistant that is sometimes wrong and, crucially, does not know it. You would not let a new intern email a customer or run a database migration unsupervised, but you would happily let them draft, summarize, and suggest, with a human glancing at anything consequential. The UX encodes exactly that contract. Make the output easy to check and easy to undo, surface how sure the system is, and match the amount of human friction to how bad a wrong answer would be.
A useful way to structure the work is to think in four phases of the interaction, a framing that comes out of the research on human-AI interaction guidelines: what you tell the user up front, what you show during the interaction, what happens when the system is wrong, and what the product learns over time. The "when it is wrong" phase is where most AI products under-invest, so most of this post lives there.
Latency and streaming: design for perceived time#
An AI response can take seconds, and users read a silent multi-second wait as "broken." The fix is to shape the wait, not just shorten it.
Stream tokens, because time-to-first-token matters more than time-to-completion. A response that starts in a fraction of a second and streams feels faster than one that lands complete a couple of seconds later, even when the streamed one finishes later. For multi-step work, show the steps: "searching," "reading three sources," the tool calls. An honest progress trace beats a spinner, because it tells the user the system is working and roughly where it is. Treat latency as a product requirement with real targets at the median and the tail, and treat a tail-latency breach as a defect, not a vibe.
One exception worth stating clearly, because it is a real trap: do not stream output that has to be validated before it is used. If the output is a structured payload feeding a downstream system, or an action to be gated, stream the human-readable explanation but hold the payload or the action until it has passed validation. Stream the text, gate the side effect.
Communicating uncertainty and building trust#
Trust is lost fast and regained slowly, so the UX's real job here is to keep the system's apparent confidence calibrated to how confident it should actually be.
| Move | What it does |
|---|---|
| Prefer "I'm not sure, here's what I found, and a handoff" over a confident answer | A hedge the user can act on beats a fabrication they cannot detect |
| Make outputs verifiable: cite the source, link the passage, quote the grounding span | Verifiability is the antidote to hallucination anxiety; the user can check |
| Signal confidence where you have it (retrieval score, a low-confidence badge) | Lets the user calibrate, as long as you are honest that fluent tone is not evidence |
| Set expectations up front about what the feature can and cannot do | Stops users over-trusting the feature into a failure it never claimed to handle |
The thread running through all four: a fluent, well-formatted answer reads as a correct answer, and that is the single most dangerous illusion in AI UX. Polish is not accuracy. The design has to actively counter the impression that confidence equals correctness, because the model will not do it for you.
Failure UX is the main design work, not an edge case#
Because a bad output can reach the user, the unhappy path is not a corner to tidy up at the end. It is the core of the design. Every path that can go wrong needs a designed response:
| Trigger | The UX response |
|---|---|
| Model or provider error, timeout | A canned response or a simpler non-AI path, never a hard dead-end |
| Low confidence | "Here's what I found, plus a way to reach a human," not a confident guess |
| Guardrail block (unsafe content or action) | Refuse clearly; never silently substitute a worse but confident answer |
| A wrong answer the user spots | One-click edit, reject, regenerate, or escalate |
Two principles make this concrete. Design error states that keep the user moving: "I couldn't answer that confidently, here's a related result or a way to reach a human" beats a spinner that never resolves. And make correction cheap, because the cost of a wrong answer is bounded by how fast the user can route around it. If rejecting or editing a bad output is one click, a wrong answer is a shrug; if it is a dead end, a wrong answer is a lost user.
Match the degradation to the stakes. A wrong autocomplete is a shrug and needs no ceremony. A wrong medical or financial answer needs a hard gate. Design the failure UX per action, not once for the whole product, the same way you scope autonomy per action rather than per product.
Human-in-the-loop without rubber-stamping#
For consequential actions, the model proposes and a human approves. But the surface design decides whether that approval is real or theatre.
Show the action, its arguments, and the rationale at the approval point, with approve, deny, and edit as real options, so the human can actually judge it rather than react to a vague "the AI wants to do something" prompt. Match the friction to impact and reversibility: reads flow through untouched, while irreversible actions like moving money or deleting data get a hard confirm.
The failure to watch for is approval fatigue. If everything asks for approval, humans start clicking "yes" reflexively, and the gate becomes a formality that protects nothing. Over-gating does not add safety; it trains people to rubber-stamp. So gate only what genuinely matters, and use review queues or batch approval for volume, so human attention lands where a wrong action would actually hurt. A gate that has trained the user to ignore it is worse than no gate, because it looks like safety on the org chart while doing nothing.
Feedback capture is UX that fuels the flywheel#
The interface is your primary data-collection instrument, and this is the part teams skip and then wonder why their product never improves on its own. Wire thumbs up and down, inline edits, accept and reject, and escalation into the surface itself. Each of those is two things at once: a trust feature for the user, and a labelled example for you. Over time the product should visibly learn from that behaviour, remembering preferences and repeating fewer mistakes.
Every captured signal feeds the data flywheel: production feedback becomes new golden-set rows, which become fixes, which pass the eval gate and re-ship. If the UX does not capture feedback, the flywheel has no fuel, and the moat never starts compounding. The thumbs button is not a nice-to-have you add later in an "analytics" project. It is the intake valve for the entire improvement loop, so it ships on day one.
Gotchas, or what actually bites teams#
- Fluency reads as correctness. A confident, well-formatted wrong answer is more dangerous than a hesitant one, because users trust the tone. Show uncertainty explicitly; never let polish stand in for accuracy.
- The confident dead-end. Shipping only the happy path means the first wrong, timed-out, or blocked response hits a hard error or a hallucination with no recovery. Build the fallback before you ship, not after the first incident.
- Approval fatigue quietly disables your safety. Over-gating trains rubber-stamping, so the gate exists but no longer protects anything. Gate by impact, not by default.
- Streaming the wrong thing. Streaming an action rather than an explanation can execute it before it is validated. Stream text, gate side effects.
- No feedback surface means no flywheel. "We'll learn from usage" on the roadmap with no thumbs button in the product means the moat never compounds. Wire capture in on day one.
- A confidence badge you do not trust is worse than none. Showing a "high confidence" signal that is often wrong teaches users to distrust every signal you show. Only surface confidence you have actually validated against outcomes.
Where this goes next#
That closes the architecture arc: the reference architecture drew the boxes, and this post designed the one that faces the user. Together they sit underneath everything else in the series, from shipping on containment to operating the loop to who owns quality. If you are starting the series here, go back to why the demo is only 5% of the product and read forward.

Folarin Akinloye is an AI Engineer based in London, UK. He builds production-ready agentic AI systems, multi-agent architectures, and sophisticated RAG implementations, and writes about the engineering decisions behind them.