Brent Haskins / Applied AI
Claude Design Broke the UI Contract — Here's How to Fix It
Anthropic's Claude Design, released in April 2026, marked the first time an LLM delivered design artifacts directly — not prose. It went viral but stayed closed-source and locked to Anthropic's model. This post argues that the real breakthrough isn't the artifact generation itself, but the new interface contract it demands: what the prompt promises vs what the backend can prove. Drawing on shipped product experience with RAG UX, latency budgets, and agent handoffs, Brent Haskins explains how to design for this new paradigm without breaking user trust.
The short answer
In April 2026, Anthropic released Claude Design — the first time an LLM stopped writing prose and started delivering design artifacts directly. It went viral. But it stayed closed-source, paid-only, cloud-only, locked to Anthropic's model. The open-source community responded quickly with alternatives like Open Design, which decouples the generation engine from the artifact format and supports multiple model backends.
The real breakthrough isn't the artifact generation itself. It's the new interface contract it demands: what the prompt promises vs what the backend can prove. In traditional design tools, that contract is deterministic — you drag a button, you get a button. With LLM-generated design, the contract becomes probabilistic. The prompt suggests intent, but the model may misinterpret layout, hierarchy, or brand constraints. Good product engineering means making that contract explicit — showing confidence, offering undo, and letting users adjust before committing.
Key takeaways
- Decouple generation from format. Don't lock your design pipeline to one model's output. Use a layer that normalizes artifacts so you can swap models without rewriting parsers.
- Stream, don't batch. Show progress token by token with meaningful copy — "Generating layout…", "Placing components…" — not a generic spinner. Set hard timeouts: 15 seconds for wireframes, 30 for full pages.
- Surface confidence, not certainty. If the model is unsure about a layout decision, show it. Offer alternatives or ask clarifying questions rather than hallucinating a polished but wrong artifact.
- Build undo into the generation flow. Every generated artifact should have a one-click revert to the previous state. Users need to explore without fear of losing work.
- Design for model fallback. When the primary model fails or times out, fall back to a cached template or a simpler model. The user should never see a broken state.
- Treat latency as a product decision. The time it takes to generate an artifact is a UX constraint, not just an infrastructure metric. Optimize for perceived speed — show partial results, use optimistic updates.
The real problem: the UI contract is broken
Most discussions about LLM-generated design focus on output quality — "Can it make a good landing page?" That misses the point. The harder problem is the interface contract: what the user sees vs what the model can actually deliver.
When a user types "Make me a dashboard for sales metrics," the prompt implies a specific layout, data hierarchy, and visual style. The model might generate a beautiful chart-heavy page that ignores the user's unspoken need for a table view. The contract is broken not because the output is bad, but because the interface didn't surface the gap between promise and delivery.
In RAG systems, we handle this by showing citations and confidence scores. In design generation, we need similar mechanisms: a "confidence map" that highlights which parts of the layout the model is sure about and which are guesses. This is a product engineering challenge, not a model training problem.
Tradeoffs and when the conventional wisdom breaks
The conventional wisdom says: "Let the model generate the whole artifact, then let the user edit." That works for simple outputs like hero sections or single-page landings. It breaks for multi-page flows, responsive layouts, or brand-constrained designs.
Consider a dashboard with 12 data widgets. If the model generates all 12 at once, the user can't easily rearrange them without starting over. A better approach: generate the layout skeleton first, let the user approve or adjust it, then populate each widget incrementally. This mirrors how we handle agent handoffs in production — break the task into stages with human approval gates.
The tradeoff is speed vs control. Generating incrementally takes longer but produces higher-quality results. The product decision is: where in the flow does speed matter more than precision? For initial exploration, batch generation is fine. For final production artifacts, incremental generation with user checkpoints is safer.
How this looks in a shipped product
Open Design, the open-source Claude Design alternative, gets this right. It runs locally, supports 20+ model backends via BYOK, and exports to real file formats (HTML, PDF, PPTX, MP4). The key architectural decision: it separates the generation engine from the artifact format. You can use Claude for wireframes, Gemini for copy, and a local model for layout — all feeding into the same artifact pipeline.
This decoupling is the product engineering lesson. When you own the interface contract, you can optimize each stage independently. Want faster wireframes? Swap in a smaller model. Need better visual polish? Route to a larger model. The user never sees the backend — they just see a design that gets better over time.
What to evaluate when choosing a design generation tool
If you're evaluating Claude Design, Open Design, or any LLM-powered design tool, look beyond output quality. Ask:
- Can I swap the model without rewriting my artifact pipeline? If the answer is no, you're locked in.
- Does the tool show confidence or uncertainty in its outputs? If it always looks certain, it's hiding failure modes.
- Can I undo a generation step without losing all my work? If not, the tool encourages fear-based editing.
- What happens when the model times out? If the UI breaks or shows an error, the product is immature.
- Does it support incremental generation? Batch-only tools are fine for exploration, but production work needs staged approval.
Closing: ship the contract, not the artifact
Claude Design broke the UI contract by making it invisible. The user types a prompt and gets a polished artifact — but the gap between intent and output is hidden. The next generation of design tools will win not by generating better artifacts, but by making the contract explicit: showing confidence, offering undo, and letting users guide the generation process.
As a product engineer, your job is to design that contract. Start with a simple rule: every generated artifact should come with a "confidence map" and a one-click revert. The rest is iteration.
FAQ
Questions people ask about this topic.
What is the 'UI contract' in the context of LLM-generated design artifacts?
The UI contract is the implicit promise between the user's prompt and what the interface delivers. In traditional design tools, that contract is deterministic — you drag a button, you get a button. With Claude Design, the contract becomes probabilistic: the prompt suggests intent, but the LLM may misinterpret layout, hierarchy, or brand constraints. Good product engineering means making that contract explicit — showing confidence, offering undo, and letting users adjust before committing.
How should product engineers handle the latency of LLM-generated design artifacts?
Stream the output token by token, not batch. Show a progress indicator that communicates what's happening — 'Generating layout…', 'Placing components…' — rather than a generic spinner. Set a hard timeout of 15 seconds for initial wireframes and 30 seconds for full pages. If the model exceeds that, fall back to a cached template and let the user iterate. Latency budgets are product decisions, not infrastructure ones.
What's the biggest risk of closed-source, model-locked design generation?
Vendor lock-in that kills iteration speed. If your design pipeline depends on a single model's output format, you can't swap in a cheaper or faster model without rewriting your artifact parser. Open-source alternatives like Open Design already support multiple model backends via BYOK. The product lesson: decouple the generation engine from the artifact format early, or you'll be stuck with one provider's latency, pricing, and failure modes.
How do you handle 'I don't know' in a design-generation UI?
The same way you handle it in RAG: be honest. If the model can't generate a responsive layout from a vague prompt, don't hallucinate a bad one. Surface a clear message: 'I need more detail — specify a layout type (e.g., dashboard, landing page) or upload a reference.' Then offer a few structured options to guide the user. This builds trust faster than a polished but wrong artifact.
Sources