AI features don't fail like software — they fail confidently, plausibly and politely. This playbook maps your feature's real failure modes — wrong-but-plausible, stale, refused, timeout — designs a distinct state for each, and calibrates confidence display to help users decide, not to perform trustworthiness.
Workflow area: Trust & Failure States · Tier: Advanced · Hands-on time: ~45 minutes
Traditional error design assumes the system knows when it's wrong. Generative systems break that assumption: the most dangerous output isn't the crash, it's the fluent answer with a fabricated citation. One generic "Something went wrong" state — or worse, no failure design at all — leaves users to discover each failure mode in production, at their own expense. PAIR's guidance on errors and graceful failure and HAX guidelines 6–9 (mitigate, explain, support dismissal and correction) give the principles; this playbook turns them into a concrete kit: one designed state per failure mode, with copy, affordances and a recovery path each.
Map failure modes from your pipeline, not your imagination. Walk the feature's actual chain — input, retrieval, generation, action — and list what breaks at each link. The core six for most features: wrong-but-plausible (fluent fabrication — the hallmark failure), stale (true then, false now: outdated index, cached world), incomplete (answered the easy half, silently dropped the hard half), refused (safety or policy decline), out-of-scope (asked for something the feature doesn't do), and timeout/degraded (infrastructure failure mid-generation). For each, note detectability: can the system know, can only the user know, or can nobody know in the moment?
Generate the failure inventory for your specific feature.
You are a failure-mode analyst for AI products, working from
Google PAIR's error guidance and Microsoft HAX guidelines 6-9.
Feature: [DESCRIPTION: inputs, retrieval sources, model task,
actions taken on output]
Users and stakes: [WHO uses it, what a wrong answer costs them]
1. List this feature's 8-12 most likely failure modes, sorted by
(likelihood x user cost). For each: a realistic example, who
can detect it (system/user/nobody), and the user's cost if
undetected.
2. Flag the modes where the system CANNOT know it failed — these
need preventive design (source display, verification prompts),
not error states.
3. For each detectable mode, propose the state: what the UI says,
what it offers next.
Be specific to this feature; no generic error-handling advice.
The "nobody can detect" rows are the important output — those failures can't get an error screen, so they get provenance UI instead: sources shown by default, dates on retrieved facts, and phrasing that keeps the user's verification reflex alive.
Design one distinct state per detectable mode. Each state answers three questions in this order: what happened (plain language, no model anatomy), why — when known ("my sources for this are from 2023"), and what now (the recovery affordance). Recovery differs per mode: stale offers "search live sources"; incomplete offers "continue with the remaining items"; timeout offers resume-from-partial (pb-43's mid-stream failure); out-of-scope redirects to what the feature does do (pb-40's redirect). States must be visually distinct from each other — if refused and timeout look the same, users learn to read neither.
Calibrate confidence display — or refuse to show it. The test: does the display change what a reasonable user does next? Useful confidence is actionable and grounded: "Based on 2 sources that disagree" (→ user checks sources), "I couldn't verify the dates" (→ user verifies dates). Harmful confidence is decorative: an "87% confident" badge no user can act on, derived from a number that doesn't mean what it implies. Default to qualitative, evidence-linked signals; show numbers only where users are trained to consume them (analysts, clinicians with calibrated tools). And never let hedging become the persona — a system that hedges everything is as uninformative as one that hedges nothing (pb-39's hedge genre rules apply).
Write the refusal states in your product's voice. A refusal needs: the decline itself without moralizing, the boundary named where safe to do so ("I can't draft medical dosage advice"), and a constructive adjacent offer where one honestly exists. Ban the apology spiral and the lecture. Then pressure-test: paste your refusal copy into Claude and ask for the five user reactions each is likely to provoke — copy that reads as judgmental or evasive fails here, cheaply, instead of in production.
Failure states often quote the user's own input back ("I couldn't process 'Q3 payroll for Meera'") — check that error surfaces, logs and screenshots of them don't leak sensitive input into channels with broader access than the original conversation.
Design the failures as deliberately as the successes — one distinct state per real failure mode, provenance where no state can fire, and confidence shown only when it changes what the user does next.