Designing for LLM-Powered Products
Practical principles for building interfaces around large language models — covering mental models, hybrid UI, failure states, and trust architecture.
9 min read
The full lesson
Large language models (LLMs) have moved from demos into real products used by millions. Yet most teams still reach for the same pattern: a chat box and a blinking cursor. That instinct produces products that frustrate users, expose liability, and undermine trust. Not because LLMs are bad — but because chat is a poor fit for most tasks. Designing well for LLM-powered products means understanding how the model actually behaves, building interfaces that set honest expectations, and giving people the controls they need to stay in charge.
Why Chat-as-Default Fails
The first instinct — “make it a chatbot” — optimizes for novelty, not usability. A blank chat input is maximally flexible and minimally helpful. It gives users no signal about what the system can do, no sense of its scope or limits, and no graceful recovery when their request doesn’t match what the model can handle.
Structured UIs encode intent. A form with dropdowns, date pickers, and a constrained text field communicates scope, reduces ambiguity, and produces better model outputs because the inputs arrive pre-processed and normalized. The modern pattern is a hybrid structured + conversational UI: structured screens for bounded tasks (search, configuration, filtering), with natural language as an accelerator for complex or exploratory requests — not as the only interface.
Do
Don't
Setting Honest Expectations
LLMs hallucinate. They give confidently wrong answers in ways that are hard to catch in the moment. This is not a bug that will get patched away — it is a fundamental property of how these models work. The UX implication is direct: products that present LLM output as ground truth are already betraying user trust.
Calibrating confidence in the interface
The interface must carry uncertainty signals that the model’s text often lacks. In practice, this means:
- Source citations: when the model draws from documents you’ve given it (a retrieval-augmented generation, or RAG, pipeline), surface those sources inline so users can verify the answer.
- Confidence tiering: visually distinguish responses grounded in real documents from responses drawn from the model’s trained knowledge. The two deserve different visual treatment.
- “I don’t know” paths: design explicitly for graceful refusal. A system that says “I couldn’t find a reliable answer — here’s where you can look” is more trustworthy than one that fills every gap with confident-sounding text.
- Version and knowledge cutoff disclosure: if the model’s knowledge has a cutoff date, tell users that upfront — don’t bury it in documentation.
Hybrid UI Architecture
A practical way to think about LLM product UI is as a state machine with four modes. Each mode needs its own interaction design.
| Mode | Description | UI Pattern |
|---|---|---|
| Input capture | User specifies intent | Structured form, templated prompts, or constrained natural language |
| Processing / generation | Model is working | Skeleton or streaming output; explicit progress indicator |
| Output review | User evaluates the result | Inline editing, regenerate, accept/reject, source view |
| Action confirmation | System is about to do something irreversible | Explicit confirmation step with a summary of what will happen |
Never collapse these modes into a single undifferentiated stream. Users need distinct affordances at each stage. The “action confirmation” mode deserves special attention: for any operation that writes data, sends a message, charges a card, or cannot be undone, the interface must pause and require an explicit confirmation. Never silently execute.
Streaming output UX
Most LLMs return text token by token. Streaming feels responsive and alive, but it creates a real design challenge: users start reading and acting on content before the output is complete. Design for this reality:
- Render text as it streams, but hold back action buttons (copy, insert, accept) until generation is complete or a natural semantic unit is finished.
- Use a visual in-progress indicator — a pulsing cursor or a subtle animation on the last token — so users know the output is not final.
- Provide a stop-generation button that is always visible during streaming.
- Avoid layout shifts: pre-allocate vertical space or use skeleton placeholders so the page does not reflow as tokens arrive.
Designing for Failure
LLM failure modes are different from traditional software failures. A database query either returns data or throws an error. An LLM always produces output — the failure is often invisible and about meaning, not mechanics.
The taxonomy of LLM failures
- Hallucination: plausible-sounding content that is factually wrong. The interface cannot prevent this, but it can make verification easy.
- Refusal: the model declines to answer, often with vague language. Design a helpful, specific refusal message with clear next steps.
- Scope drift: the model answers a different question than the one asked. Show the interpreted intent back to the user for confirmation before proceeding.
- Stale output: the model’s knowledge is outdated. Surface the knowledge cutoff date near any output that involves recent events.
- Context overflow: the conversation has grown beyond the model’s context window (the maximum amount of text it can process at once). Warn the user before quality degrades, and provide a “start fresh” affordance.
Recovery affordances
Every failure state needs a recovery path. The minimum viable set:
- A human escalation path when the model cannot help.
- A retry with modified input — offer prompt suggestions, not just a retry button.
- Undo/redo for any action the model took on the user’s behalf.
Trust Architecture and Transparency
Trust in an LLM product is not binary. It builds over time through consistent, honest behavior. The design patterns that build trust are different from those that signal sophistication.
What builds trust
- Explain the basis for the output: “Based on your project brief from March” is more trustworthy than an answer that appears from nowhere.
- Surface the model’s interpreted intent: before executing, show what the model understood the user to want. A one-line restatement like “Drafting a refund email to a customer who was charged twice” lets users catch misinterpretation early.
- Make override easy: every AI-generated value should be editable. Users who can correct the model without friction are more likely to trust the parts they leave alone.
- Be consistent about capabilities: scope the system clearly in onboarding and reinforce it through affordances, not just documentation.
What destroys trust
- Showing chain-of-thought reasoning as a trust signal. Most users do not find “thinking…” tokens reassuring — they find them confusing or anxiety-inducing. Show reasoning only when it directly helps the user make a decision, not as a performance of intelligence.
- Pretending uncertainty does not exist.
- Executing actions without confirmation.
- Using dark patterns to prevent users from turning off AI features.
Do
Don't
Prompt UX and Interaction Design
Users are not prompt engineers. The burden of crafting effective inputs should sit with the product, not the person using it.
Scaffolding the input
- Prompt templates: pre-structured inputs that let users fill in key variables without writing a prompt from scratch. “Write a [document type] for [audience] about [topic]” is far more accessible than a blank text field.
- Example prompts: seed the empty state with real examples of what works, not generic placeholder text.
- Progressive disclosure for advanced options: power users can adjust tone, length, format, and model parameters — but hide these controls by default and reveal them on demand. Don’t clutter the primary interface.
- Input validation before submission: if the system has defined constraints (maximum length, required context), surface them before the user hits send — not after a failed generation.
Conversation history and context
As conversations grow, maintain a clear picture of what the model knows about the current session. Provide:
- A visible summary of the active context (attached files, relevant memory, selected tools).
- The ability to clear or edit context without restarting the entire session.
- Persistent session history so users can return to prior conversations.
Permissions, Data, and Ethical Guardrails
LLM products often request broad permissions — access to email, calendar, files, browsing history — to improve output quality. This creates real ethical obligations and legal exposure.
- Apply data minimization: request only the data needed for the current task, not a blanket scope granted once at onboarding.
- Make data use legible at the point of use: “Using your last 3 emails to this contact to draft a reply” is more trustworthy than invisible context injection.
- Provide granular controls: users should be able to revoke individual data permissions without disabling the entire feature.
- Never use user inputs to train or improve the model without explicit, informed opt-in. Pre-checked consent boxes are legally actionable dark patterns under GDPR and the EU AI Act (effective August 2026).
- Design the opt-out path to be as easy as the opt-in path: roach-motel cancellation flows for AI features create regulatory risk and destroy trust.
Measuring Success in LLM Products
Engagement metrics are especially misleading for LLM products. A user who sends 30 messages trying to get a simple task done is not engaged — they are frustrated.
The right measurement stack:
| Metric | Why it matters |
|---|---|
| Task completion rate | Did the user accomplish what they came to do? |
| Correction rate | How often do users edit or reject AI output? A high rate signals poor model quality or poor scope calibration. |
| Time to first useful output | How long before the user gets something actionable? |
| Escalation rate | How often do users abandon the AI and seek human help? |
| Trust indicators | Do users act on AI output without verifying, for appropriate tasks? |
Avoid using session length, messages sent, or feature activation as primary success metrics. These are vanity metrics that optimize for engagement over outcomes — the same anti-pattern that produced attention-economy social media design. Use CES (Customer Effort Score) paired with task-completion rate as your core operational signal.