Why Coding Agents Build the Same Landing Page Every Time
All 189 sites in the swaggin registry have a nav bar. All 189 have a hero. No single aesthetic style covers more than 21% of them. Your prompt is naming the layer that never varies.
Roshan · Published · 5 min read
189 sites.
One shared skeleton.
swaggin registry, September 2026
structure vs style
Ask four different coding agents for a landing page and you get four versions of the same page. Centered hero, gradient headline, three feature cards, a logo row, a three-tier pricing table. The output is competent and completely interchangeable. The usual explanation is that models average their training data, which is true but useless, because it does not tell you which word in your prompt to change.
The swaggin registry can answer that more precisely, because it tags two things separately. Screen patterns record what is on the page: a hero, a nav, a pricing table. Styles record how it looks: brutalist, editorial, terminal-dev. Counting both across every site shows which axis real designs agree on and which one they fight over.
How much do real landing pages actually share?
Almost all of their structure. Every one of the 189 sites has a navigation bar, and every one has a hero. 173 have a footer, 165 have a feature section, and 142 carry social proof. These are curated sites chosen for being good, and they still converge on the same furniture.
| Pattern | Sites | Share |
|---|---|---|
| Navigation / header | 189 | 100% |
| Hero section | 189 | 100% |
| Footer | 173 | 92% |
| Feature section | 165 | 87% |
| Social proof / logo wall | 142 | 75% |
So where do real sites differ?
In how they look, and there the agreement disappears. The most common style, gradient-vibrant, covers 21% of the registry. Nothing else reaches a quarter. 12 styles are in use and the distribution has no winner, which is the opposite of what the structure table shows.
| Style | Sites | Share |
|---|---|---|
| gradient-vibrant | 40 | 21% |
| elegant-consumer | 39 | 21% |
| playful | 35 | 19% |
| minimal-swiss | 25 | 13% |
| terminal-dev | 24 | 13% |
| luxury | 19 | 10% |
| editorial | 17 | 9% |
| enterprise-saas | 10 | 5% |
| glass-depth | 8 | 4% |
| data-dense | 7 | 4% |
| brutalist | 6 | 3% |
| retro-computing | 6 | 3% |
| mobile-native | 0 | 0% |
A gradient-vibrant page and a minimal-swiss page have the same skeleton and share almost no visual decisions. One resolves its hero with a mesh gradient and saturated CTA fills. The other resolves it with hairline rules, a strict grid, and no shadow anywhere. Same structure, opposite result.
Why does asking for a landing page return the average?
Because the words name the axis that does not vary. A landing page means a hero on top, feature sections below, a footer at the bottom, and the model has seen that skeleton enough times to reproduce it without thinking. Nothing in the request touches the axis where real sites disagree, so the model fills that in with its prior, and its prior is the average.
This is why adding more adjectives rarely helps. Clean, modern and professional describe the same average the model already reached for. They read like design direction and carry almost no constraint.
How do you get a different page out of an agent?
Spend the prompt on the axis that varies. Three changes do most of the work:
- 01Drop the word that means structure. "Landing page" is scaffolding, and the agent already has it. Saying it again buys nothing.
- 02Name a style that carries visual cues.
terminal-dev,editorial,brutalist,luxury. Each one implies specific decisions about type, density and colour.Modernimplies none. - 03Give it something to look at. A style name is still text, and the model resolves text with its priors. A screenshot in the vision context replaces the prior with an observation.
The third one matters most, and it is why swaggin returns image bytes instead of links. An agent cannot read typography off a URL it is unable to open. It can read it off a screenshot sitting in its context window while it writes the component.
Does naming a style actually change the output?
More than an adjective does, because a style id in this taxonomy is backed by written visual cues and by real sites carrying the tag. Ask for brutalist and it resolves to 6 specific sites. terminal-dev resolves to 24. The agent stops guessing what you meant and starts retrieving examples.
The honest limit is that 13 styles is a small vocabulary, and the registry does not cover everything the taxonomy can express. mobile-native currently has no sites at all, and settings, empty-state, notification, error-state have no screenshots whatsoever. Both gaps have the same cause. Marketing pages are easy to capture, and software behind a login is not.
The short version
- All 189 curated sites have a nav and a hero. Structure is close to universal.
- No style covers more than 21% of them. Look is where sites actually diverge.
- Prompting for structure returns the average of structure, because that is all you asked about.
- Style ids beat adjectives because they resolve to real sites you can go and look at.
- Images beat style ids because they remove the guess entirely.
Questions
- Why does AI-generated web design look generic?
- Because the usual prompt names the layer where real designs already agree. All 189 sites in the swaggin registry have a hero and a navigation bar, while the most common aesthetic style covers only 21% of them. Asking for a landing page describes the near-universal skeleton and says nothing about the part that varies, so the model fills in the rest with its average.
- What is the fastest way to make an agent's UI output less generic?
- Put a real screenshot in its vision context before it writes the component. A style name still gets resolved by the model's priors. A screenshot replaces the prior with something the model can look at directly.
- How many aesthetic styles does the swaggin taxonomy define?
- 13 styles, alongside 18 product categories, 28 screen patterns and 5 platforms. As of September 2026, 12 of the 13 styles are in use across the 189 curated sites.