Why AI-generated UI always looks the same
There's a recognizable look to AI-generated interfaces: a white or near-black canvas, one blue-to-purple gradient, cards with medium shadows and 8px radii, Inter everywhere. You've seen it. Once you notice it, you can't stop noticing it.
The tempting conclusion is that models can't do design. We think that's wrong, and the evidence is easy to produce yourself.
The defaults experiment
Ask an AI coding tool to "build a pricing page" and you get the house style above. Now give the same tool a real specification - exact palette with roles, a type hierarchy table, component measurements, motion rules - and ask again. The output changes completely. Same model, same request, different context.
What looked like a capability ceiling was a prior. A model generating UI without design context does what any of us would do when asked to guess: it produces the statistical center of every interface it has seen. The center of all design is, definitionally, generic.
Why prompting harder doesn't work
"Make it more distinctive" and "premium, modern feel" fail because they're directions without coordinates. The model doesn't lack effort; it lacks values. Distinctive how? Which hex, which typeface pairing, which radius, which 200ms curve? Adjectives ask the model to re-guess with more confidence - you get the same defaults, more decorated.
A specification succeeds because it replaces guessing entirely. "Primary action color is #5B5BD6, used only on CTAs; body text is 15px/1.6 in a grotesk; radius scale is 6/10/16; transitions are 200ms cubic-bezier(0.2, 0, 0, 1)" leaves nothing to the prior.
The practical loop
- Find a live design whose quality you want - that team already made a thousand good decisions.
- Extract the system as a document with exact values. This is what Mateo generates from a URL; you can also do it by hand.
- Put the document in the model's context as a standing rule, not a one-off paste.
- After generating, have the model audit its own output against the document - models are better at checking than at holding every rule mid-generation.
The sameness problem, it turns out, is a missing-file problem. The file is writable.