Every screen you design is secretly eight screens — empty, loading, error, offline, long-content, RTL, permission-denied, and the happy path you actually drew. This playbook has AI enumerate the full state matrix per screen, then you curate which states are real and draft the ones that matter.
Workflow area: Figma AI & Prototyping · Tier: Foundation · Hands-on time: ~25 minutes per flow
Missing states are the highest-volume design defect in shipped products, and they're missing for a boring reason: enumeration is tedious and happens under deadline. This is the exact shape of task AI is best at — exhaustive, mechanical, checklist-like — and the exact shape designers skip. The judgment stays with you: which enumerated states are real for this product, and what each one should actually do. The model brings the completeness; you bring the truth.
Describe the flow to the model, screen by screen. Screenshots plus text beat text alone. In Claude or ChatGPT, attach screens and run:
You are doing a state-completeness sweep on a product flow.
Flow: [e.g. "expense submission: form → receipt upload → review →
confirmation"]
Platform: [web/iOS/Android] · Data source: [e.g. "REST API, can be
slow or down"] · Users: [e.g. "includes RTL locales, offline field
staff"]
Screens attached: [ATTACH SCREENSHOTS OR PASTE DESCRIPTIONS]
For EACH screen, enumerate the state matrix:
empty / loading / partial-load / error (each distinct error cause) /
offline / permission-denied / long-content & overflow / zero-results
/ first-use / RTL / slow-connection / stale-data.
For each cell: LIKELY (real for this product), EDGE (possible,
decide), or N/A (impossible here — say why).
Then list states MY HAPPY-PATH SCREENS ALREADY HANDLE so I can see
the true gap. Do not invent screens I didn't provide.
Curate the matrix — this is the design judgment step. Walk every LIKELY and EDGE cell and mark it: design it, defer it (ticketed), or kill it (with the reason recorded). Good curation output looks like:
Upload screen · error: file-too-large → DESIGN (support data:
top-3 ticket driver)
Upload screen · offline → DESIGN (field staff,
§research Q2)
Review screen · RTL → DEFER (no RTL locale
until FY26 — ticket DS-412)
Form · stale-data → KILL (form is
client-side only; no server state to go stale)
Draft the DESIGN states with AI assistance, decide the content yourself. For each state you're designing, the layout is usually mechanical (your empty-state pattern exists) but the content is judgment. Draft copy in the model — cause, consequence, next action per pb-28's rubric — then build the states in Figma from your design-system patterns, as component variants where your system supports them, not as detached one-off frames.
Attach the matrix to the file. Paste the curated matrix (including KILL reasons) on a page beside the flow. This is half of pb-12's spec pack already written — and the KILL reasons are what save the next designer from re-litigating them.
Re-sweep when the flow changes. A new data source, a new permission, a new platform target each add a matrix column. Sweeps age like personas do; the trigger is any change to what the screen depends on.
Screenshots of internal flows can expose real user data lurking in test environments — scrub names, emails and account numbers from screens before uploading to any AI tool, and use your approved tenant for unreleased product surfaces.
AI enumerates, you adjudicate — the machine's completeness plus your judgment about which states are real is what turns the happy path into an actual product.