Skip to main content
MindStudio
Pricing
Blog About
My Workspace

Claude Design: How to Build Branded Interfaces Without Generic AI Aesthetics

Claude Design builds code-based UIs fast, but defaults to AI slop. Here's how to set up a design system that actually looks like your brand.

MindStudio Team RSS
Claude Design: How to Build Branded Interfaces Without Generic AI Aesthetics

The Problem With Letting Claude Design Choose Its Own Aesthetic

Claude Design is genuinely fast at generating code-based UIs. Ask it to build a dashboard, a landing page, or a settings panel, and you’ll have something functional in minutes. That’s the upside.

The downside is what those outputs tend to look like: rounded corners, Inter or system-sans font stack, muted grays, a blue primary action button, and a card layout lifted straight from every SaaS app released in the last five years. It’s not bad design. It’s just not your design.

This is the core tension with Claude Design as a visual prototyping tool. The model has been trained on enormous amounts of web UI, which means it has extremely strong priors about what a “good interface” looks like. Left to its own devices, it’ll converge on those defaults every time. If you want something that actually looks like your brand, you have to work against those defaults deliberately.

This guide covers how to do that — from setting up a design system Claude can actually use, to specific prompting patterns that produce branded outputs instead of generic ones.


Why Claude Design Defaults to Generic Aesthetics

Understanding why this happens makes it easier to fix.

Claude Design generates code, not pixels. When you ask it for a UI, it’s writing HTML, CSS, and component logic based on patterns it has seen at scale. The most common patterns on the web — Tailwind utility classes, shadcn/ui components, Material-adjacent cards — show up constantly in its training data. So when you give it an underspecified prompt like “build me a user dashboard,” it fills the gaps with the most statistically common choices.

That’s not a bug. It’s a feature when you need something quick. But brand differentiation requires specificity, and specificity has to come from you.

The models don’t know your brand’s hex codes. They don’t know that your product uses a geometric sans instead of Inter, or that your CTA buttons are square-cornered instead of pill-shaped, or that your design language is deliberately dense and information-rich rather than whitespace-heavy. You have to tell it — and in enough detail that it can’t revert to defaults.


Step 1: Build a Brand Specification Document Before You Open Claude Design

The single most effective thing you can do is write a brand specification before prompting anything. Think of it as the context layer that everything else gets built on.

This doesn’t need to be long. It needs to be precise.

A workable brand spec has five sections:

Colors

List every color token you use. Don’t just say “navy blue” — give hex values, and name them semantically.

--color-brand-primary: #1A2B6D
--color-brand-accent: #E84545
--color-background: #F8F8F6
--color-surface: #FFFFFF
--color-text-primary: #111111
--color-text-secondary: #5C5C5C
--color-border: #E2E2E2

The more specific you are, the less room Claude has to substitute its own palette.

Typography

Name your typefaces and where they’re used. If you’re loading them from Google Fonts or a CDN, specify the import source.

Headings: "Syne", sans-serif (weights: 600, 700)
Body: "DM Sans", sans-serif (weights: 400, 500)
Mono: "JetBrains Mono", monospace

If you have size scales, include them. Ratios like 1.25 or fixed step sizes both work.

Spacing

Specify your base unit. Many design systems work in 4px or 8px increments. If yours does, say so. Claude will use it.

Border Radius

This is one of the most brand-defining properties and one of the most commonly overridden by AI defaults. Specify it explicitly.

--radius-sm: 2px
--radius-md: 4px
--radius-lg: 6px
--radius-full: 0px  /* no pill shapes */

Shadows and Elevation

If your brand uses flat design, say so. If it uses layered shadows, provide your shadow tokens.


Step 2: Format Your Spec as a Reusable Prompt Prefix

Once you have the spec, convert it into a prompt prefix you paste at the start of every Claude Design session. Don’t rely on Claude remembering previous conversations — it won’t. You need to inject your brand context every time.

A working prefix looks like this:

You are building UI components for [Brand Name]. Use the following design system exactly. Do not substitute defaults.

COLORS:
--color-brand-primary: #1A2B6D
--color-brand-accent: #E84545
[...]

TYPOGRAPHY:
Headings: Syne 600/700 (import from Google Fonts)
Body: DM Sans 400/500 (import from Google Fonts)
[...]

COMPONENTS:
- Buttons: background --color-brand-primary, no border-radius, padding 12px 24px
- Cards: 1px solid --color-border, no drop shadow, --radius-md
- Input fields: border --color-border, focus ring --color-brand-accent
[...]

Now build: [your actual request]

This approach works because it front-loads constraint. Claude Design will still make choices you haven’t specified — but you’ve narrowed the decision space significantly.


Step 3: Define Your Component Rules, Not Just Tokens

Color and typography tokens get you part of the way there. What actually makes a UI feel like a brand is how those tokens combine at the component level.

AI tools have strong priors about specific components. Left unconstrained, a “primary button” will get a rounded border, a medium shadow, and a blue background because that’s what primary buttons usually look like. If your brand’s buttons are different, you need to specify the component — not just the tokens that feed into it.

Work through the components you’ll use most:

Buttons

  • Primary: exact background color, border-radius, padding, font weight, hover state
  • Secondary: outlined or ghost? Border color? Text color?
  • Destructive: what color? Same radius?

Form inputs

  • Border style: 1px or 2px? What color on focus?
  • Label position: above, inside floating, or placeholder-only?
  • Error state: red border, red text below, or icon?

Navigation

  • Sidebar or top nav? Fixed or sticky?
  • Active state: background highlight or left border indicator?

Cards and surfaces

  • Bordered or shadow-only?
  • Header separator or continuous surface?
  • Padding density (compact vs. spacious)?

The more you define these, the less Claude has to invent, and the more consistent your outputs will be across sessions.


Step 4: Use System Prompts for Persistent Projects

If you’re running Claude Design through the API or building a workflow around it, system prompts are your most powerful tool for consistency. Instead of pasting a brand prefix every time, you embed it at the system level so it applies to every generation automatically.

This is the approach that makes sense for teams — one person maintains the design system document, and everyone who generates UI automatically works within that system.

The concept is similar to Google Stitch’s Design.md file, which lets you define your design system in a structured markdown document that AI tools can reference. The core idea translates directly to Claude Design: a single source of truth for design decisions, consumed at generation time.

If you’re using Claude Design alongside Claude Code, you can share the same design spec document between both tools, which keeps your prototypes and your production code visually aligned.


Step 5: Prompt for Reference, Not Just Description

Descriptive prompts produce generic outputs. Reference-based prompts produce targeted ones.

Instead of: “Build a settings page with a clean, professional design”

Try: “Build a settings page in the visual style of Linear — dense information hierarchy, monochrome palette, sans-serif typography, no decorative shadows. Use the design tokens above.”

Or give it an explicit reference type: “This is enterprise software for finance teams. Think Bloomberg terminal density, not consumer SaaS spaciousness.”

Aesthetic references give Claude a conceptual anchor that’s harder to override with defaults than a vague instruction like “modern” or “clean.” Every AI tool will produce something “modern.” Fewer will produce something that looks like it belongs in an investment banking dashboard.

Combine this with your token spec and you get two layers of constraint working together: one that tells the model what values to use, and one that tells it the spirit of what you’re going for.


Step 6: Establish a Feedback Loop and Iterate on the Spec

Your first few outputs will probably still miss something. The spec is never complete after one session — it evolves as you identify gaps.

When Claude reverts to a default you didn’t want, treat it as a missing spec entry. If it used pill-shaped buttons after you said square-cornered, add border-radius: 0 to your button component definition. If it used Inter despite you specifying a different font, make the font import explicit in your prefix (include the actual @import or <link> tag you want injected).

Over time, your brand spec becomes a tested, hardened document. The more you use it, the more reliable your outputs get — not because Claude is learning, but because you’ve closed every gap where it could make its own choice.

This is where AI-assisted design starts working the way it should: the model handles the generation speed, you handle the design decisions, and the spec mediates between them.


Step 7: Think About Typography Rendering, Not Just Specification

One thing that catches people off guard: specifying a font family in your prompt doesn’t guarantee it renders correctly in the generated output. Claude Design will write the CSS, but if the font isn’t loaded, the browser will fall back to a system font that looks nothing like your brand.

Always verify that your font import is present in the generated code. For Google Fonts, the generated HTML should include the appropriate <link> tag in the <head>. For custom fonts, you’ll need to either include the font files in your project or use a CDN link.

Also check that font weights are loaded. Many font families require explicit weight parameters in the import — if you’re using DM Sans 500 but only loaded weight 400, you’ll get a synthesized bold that looks slightly wrong.

This sounds like a minor detail but it’s one of the most visible ways branded outputs get degraded after generation.


Step 8: Use Claude Design for Exploration, Not for Production-Ready Output

There’s a mental model shift that makes Claude Design much more useful: treat it like a fast-sketch tool, not a final-output tool.

The goal isn’t to get one perfect generation that goes straight to production. The goal is to iterate through layouts, explore structural options, and establish visual patterns quickly — then refine.

Claude Design’s animated prototype capabilities make it especially useful in early stages where you’re testing whether an interaction flow makes sense before investing in polishing the design. Speed is the feature at that stage.

Once you have a structure you like, you can manually clean up the CSS, swap in precise token values, and push it closer to your actual design system. Or you can deploy it to Vercel as a working prototype and use real-browser testing to identify what needs refinement.

Either way, the question isn’t “did Claude Design get it perfect?” — it’s “did Claude Design get me to a useful starting point faster than I’d have gotten there otherwise?” If yes, the workflow is working.


Where Remy Fits Into This

The approach described in this guide — spec first, generation second — maps directly to how Remy handles application development.

Remy compiles full-stack apps from annotated specs: markdown documents where the readable prose describes what the app does and the annotations carry precision like data types, edge cases, and rules. The spec is the source of truth. The generated code is derived from it.

That’s the same discipline you need with Claude Design. When your design spec is clear and complete, your outputs are consistent and on-brand. When you prompt ad hoc without a spec, you get whatever the model defaults to.

The difference is that in Remy, the spec is the actual program — not just context you paste before a prompt. It stays in sync with the code as the project evolves, which means you can iterate without your design decisions drifting. For teams building full-stack applications where the UI has to match a real design system across every screen, that structure matters.

If you’re already using Claude Design for frontend exploration and want to connect it to a proper backend with persistent data, auth, and real deployment, Remy is worth a look.


Comparison: Claude Design vs. Other AI UI Tools

Claude Design isn’t the only tool in this space, and the branding problem isn’t unique to it. But different tools handle it differently.

Vercel v0 has a similar tendency to default to shadcn/ui aesthetics because the tool is built around that component library. Great if your design system aligns with shadcn — frustrating if it doesn’t.

Lovable and Bolt are more full-app builders than UI generators, but they face the same issue: without a design spec, the AI picks aesthetics from its defaults.

Google Stitch is the most explicit about the design system problem — its Design.md file is a first-class artifact specifically designed to give AI tools persistent brand context. It’s the clearest example in the space of treating the design spec as infrastructure rather than just prompt context.

The pattern across all of these tools is the same: the ones that produce branded output are the ones where you’ve given the AI structured, specific constraints to work within. The tool matters less than the discipline of specifying your design system before you generate anything.


Common Mistakes That Produce Generic Output

Here’s a quick list of what causes branded UI attempts to revert to generic defaults:

  • Vague color descriptions — “dark blue” produces whatever the model thinks dark blue is. Hex codes don’t.
  • Unspecified border-radius — Will default to 4–8px rounded corners unless you say otherwise.
  • No font import in the generated code — Your font spec gets ignored because the asset isn’t loaded.
  • Missing hover states — If you don’t specify interactive states, the model fills them with defaults that may not match your system.
  • Starting fresh each session — Without persistent context, you get fresh defaults every time.
  • Underspecified density — “Spacious” and “compact” mean different things to the model than they do to you. Give explicit padding values.
  • Generic component requests — “A card component” vs. “A card component with 1px solid #E2E2E2 border, 16px padding, 2px border-radius, no drop shadow.”

Every vague term is a gap the model fills with its own judgment. Fill those gaps yourself.


FAQ

Does Claude Design remember my brand settings between sessions?

No. Claude Design doesn’t persist brand context between conversations. You need to paste your design spec at the start of each session, or use a system prompt if you’re accessing it through the API. Think of your spec document as something you maintain separately and inject every time.

Can I use a Figma design system with Claude Design?

Not directly — Claude Design doesn’t have a native Figma import. But you can export your design tokens from Figma (as JSON or CSS variables) and paste them into your Claude Design prompt as a token spec. Tools like Tokens Studio can help you export a structured token file that you can adapt into a prompt prefix. The comparison between Claude Design and Figma covers the workflow gaps between the two tools in more detail.

How specific do I need to be in my prompts to avoid generic output?

More specific than feels necessary at first. The model has strong priors. For anything where brand identity matters — colors, typography, border-radius, spacing density — you need explicit values, not descriptions. “Professional” and “minimal” are not constraints. border-radius: 0 and font-family: 'Syne', sans-serif are constraints.

Can Claude Design produce designs that don’t look like SaaS dashboards?

Yes, but it requires deliberate framing. The model’s defaults skew toward SaaS aesthetics because that’s what dominates its training data. To get something different — editorial, e-commerce, data-dense enterprise, retro — you need both a visual reference point and explicit token overrides. Giving it both is usually sufficient to break out of the SaaS default.

What if Claude Design keeps ignoring parts of my spec?

Check for ambiguity. Usually the model reverts when a spec item conflicts with a strong default pattern. For example, if you specify square buttons but also say “modern,” the model may weight “modern” as “rounded” and override your explicit spec. Remove ambiguous descriptors and make your spec entries as literal as possible. Also verify that any fonts or assets specified in the spec are actually loadable in the generated output.

Is this approach better than using a dedicated design tool?

It depends on what you’re optimizing for. For design exploration and rapid prototyping, Claude Design with a solid spec is genuinely faster than most dedicated tools. For production-ready UI with precise pixel control, the design-to-code handoff still benefits from a designer reviewing outputs before they ship. The tools work best when you’re clear about which phase you’re in.


Key Takeaways

  • Claude Design defaults to generic SaaS aesthetics because it has strong priors from training data. The fix is structured constraints, not better prompts.
  • A brand spec with explicit hex codes, font families, border-radius values, and component-level rules is the most reliable way to get consistent branded output.
  • Paste your spec at the start of every session, or embed it in a system prompt for API-based workflows.
  • Treat Claude Design as a fast-sketch tool, not a final-output tool. Iteration and refinement are expected parts of the process.
  • Every vague descriptor in your prompt is a gap the model fills with its defaults. Replace descriptions with values wherever brand identity matters.

If you want to connect your branded UI work to a full-stack application — real backend, real database, auth, deployment — try Remy at mindstudio.ai/remy. The spec-first approach to building apps maps directly to the design discipline described here.

Presented by MindStudio

No spam. Unsubscribe anytime.