İçeriğe atla
Back to Saglitz

/ AI & design

Why AI-generated UI looks generic

A gradient hero, three feature cards, a glass panel, soft shadows, one more dashboard. Different agent, different project, same interface. It is tempting to read that as a taste problem, and it is not — it is precisely what a model returns when nothing tells it otherwise.

Four things cause it, and they compound. Only the last one is usually noticed.

/ What is actually happening

01

It returns the middle of what it has seen

A model asked for a landing page with no further direction gives you the most probable landing page. That is not a bug in the model, it is the model working — and the most probable one, across everything ever scraped, is a gradient hero over three feature cards.

This is why every agent converges on the same look regardless of which agent it is. They are all averaging roughly the same corpus.

02

Nothing in the objective says "designed"

The agent is rewarded for producing something that runs and matches the request. Nobody scores it on hierarchy, rhythm, restraint, or whether the third screen still holds together.

So it optimises for plausible-at-a-glance. Screenshots well, falls apart the moment you use it.

03

It builds what is cheapest to build

Between a layout that needs measured spacing and one that is a flex row of rounded cards, the agent picks the one with fewer ways to go wrong. Repeat that a hundred times and the constraint becomes the aesthetic.

Glass, gradients and floating cards are not a style choice here. They are the path of least resistance made visible.

04

One shot, and nobody measures the result

The agent generates, you look at it, you fix the same three things by hand, and next session it makes them again. Even the tools that critique a design stop at a report — nothing re-checks.

Which is how the same failures survive every time: focus states missing, contrast under the threshold, empty and error states never designed at all.

/ What actually changes it

Not a better adjective. “Clean and modern” describes the average of the training data almost exactly, which is why asking for it returns the average. What moves an agent off the centre is direction with numbers in it — a type scale, a spacing step, a contrast floor, a named rule about what this interface does not do. Give it something specific to anchor on and the most probable output stops being the generic one.

The second half is measurement. A model asked whether its own contrast passes will give you an opinion; the ratio is a calculation. Anything that can be computed should be computed, and checked again after the fix rather than reported once.

That is what SaglitzDesign is: an open-source MCP server that hands your agent prescriptive, sourced rules for web, iOS, Android and macOS design at the moment it is deciding — plus tools that measure rather than opine. Its tools are deterministic: the same input gives the same output, contrast ratios are computed from the pixels, and the server makes no network calls at all. MIT-licensed, no account, no key, works offline.

  • The rules are readable without installing anything — 88 documents, sourced and dated, published in full.
  • Deterministic tools: contrast computed, palettes extracted from a real screenshot, not estimated by a model.
  • It reads the design system you already have rather than replacing it.
  • No network calls, no account, no subscription — it runs on your machine, offline.

/ What none of this fixes

Rules remove the failures that are objectively failures — contrast under the threshold, a focus state that was never drawn, an empty state nobody thought about. That is worth having and it is not design. What the thing is for, who it is for, and the one decision that makes it worth using instead of the alternative: none of that is in a knowledge base, and an agent with better rules will produce a well-built version of whatever you asked for. Ask for something average and you will get it, correctly spaced.

Frequently asked

Is this a problem with the model or with the prompt?

Mostly the prompt, in the sense that a vague request has one statistically obvious answer and the model gives it to you. "Make it clean and modern" describes the average of the training data almost exactly. The fix is not a better adjective — it is giving the model something specific enough that the average stops being the best answer.

Does asking for a specific style fix it?

Partly, and it moves the problem rather than solving it. Naming a style gets you the average of that style. What holds up is direction with numbers in it: a type scale, a spacing step, a contrast floor, a stated rule about what the interface does not do.

What does an MCP server change here?

It changes what the agent has to hand. MCP is the standard way to give a coding agent tools and knowledge it does not carry itself; a design MCP server gives it prescriptive, sourced rules at the moment it is deciding, instead of leaving it to recall an average.

Isn't using AI to fix AI design just the same problem again?

It would be, which is why the useful tools here are deterministic rather than generative. A contrast ratio should be computed from the pixels, not estimated by a model — same input, same answer, every time, and checkable by you afterwards. That is the difference between a measurement and a second opinion.

Will any of this design the thing for me?

No, and be suspicious of anything claiming otherwise. Rules and measurements remove the failures that are objectively failures. What the interface is for, and what makes it worth using, is still yours.