{"slug": "the-most-likely-page", "title": "The most likely page", "summary": "A new evaluation by Antithetical Labs of 239 AI-generated web pages from Claude Opus 5, GPT-5.6-sol, Kimi K3, and Gemini 3.1 Pro found that while the models produce high-quality pages, they converge on generic designs, with 19 of 20 dev-tool headlines opening with 'Watch' and three vendors independently writing nearly identical copy. The study, which cost $44.39, revealed that models retrieve genre-typical aesthetics—dark for dev tools, light for back-office—and that component choices vary by vendor, with Gemini avoiding uppercase kickers and pill buttons while Claude uses gradients and frosted glass on 100% of its pages.", "body_md": "I gotta confess: I have no design training and a pretty utilitarian taste, so when I need a UI I just ask a model and then squint at it until I am satisfied. Lately I've been squinting more. The output has a sameness to it that I can spot and couldn't describe, which is annoying, so I measured it.\n\nSpoiler for the whole post: the pages are good. Genuinely better than what I'd\nput together by hand. They're just all the same page. Which shouldn't surprise\nanyone, because a model reaching for the most likely next token is going to\nreach for the most likely design, and \"be distinctive\" is not a direction you\ncan point that at. Distinctive isn't a thing you can be. It's a thing you can be\n*towards*.\n\n## The setup\n\nFour models, all through OpenRouter on one key, mostly so I wouldn't have to babysit four billing dashboards:\n\n- Claude Opus 5\n- GPT-5.6-sol\n- Kimi K3\n- Gemini 3.1 Pro\n\nEvery model gets the same two briefs, and these stay fixed for the whole series:\n\n**Streamforge**, a dev tool. Live-streaming platform where developers broadcast themselves building software with AI assistants. Viewers watch the prompts, the model's output and the code evolve in real time, and can fork any stream's repo.**Backlot**, a back-office tool. Brand-deal contracts, invoices, sponsor deadlines and per-platform payouts for full-time content creators who are not finance people.\n\nTwo of them, rather than one, to separate what a model always does from what the product pulls out of it. Short version: the palette flips, the components don't.\n\nOutput format is pinned everywhere: one self-contained HTML document, all CSS in\na single `<style>`\n\nblock, no frameworks, no build step, and a fixed set of\nsections. Six prompting conditions, five runs each. 240 cells, 239 completed,\n$44.39.\n\nHarness, raw pages and every measurement:\n[antithetical-labs/llm-frontend-evals](https://github.com/antithetical-labs/llm-frontend-evals).\n\nThis post is the first two conditions: saying nothing, and saying \"avoid generic AI aesthetics.\"\n\n## What does a model do when you say nothing?\n\nThe briefs don't mention colour, type or layout. Not once. Here's the background lightness of all 40 untouched pages:\n\nSo it's not a dark mode preference. It's genre retrieval: dev tool means dark, back-office tool for non-technical people means light and editorial. The model looks up what your category is supposed to look like and ships that. Confident as hell about a product it met ninety seconds ago.\n\nThe copy converges too. Nineteen of twenty dev-tool headlines open with \"Watch\", and three vendors independently wrote a sentence within one word of \"Watch software get built, prompt by prompt.\" That one's on me though: my brief says \"Viewers watch the prompts\", so the word was already sitting there. The back-office headlines, no such verb in their brief, share zero words across models. Still funny how far a single word drags the copy behind it.\n\n## Do the four models actually differ?\n\nGenre sets the palette. Underneath that they're pretty different. Coral is the model's own rate, grey is the four-model average behind it:\n\nGradients are universal, ~90% everywhere. Everything else splits:\n\n**Gemini just doesn't do eyebrows.** That little uppercase kicker above a heading: 7 of its 60 pages. The other three run 55 to 58 out of 60.**Gemini won't make a pill button either.** Zero out of ten. Claude and Kimi are at 100%. Somewhere in that post-training there is an opinion about border-radius.**Claude cannot leave a surface alone.** Gradient, frosted glass and pill on 100% of its untouched pages.**Kimi is the only one that reaches for a serif headline**, and only sometimes (3 of 10).** Page weight varies 3x.**Gemini's median page is 88 DOM elements. GPT's is 261.\n\nWhich is the actually useful bit here. If you switch models and the output feels different in a way you can't name, this is it. The palette follows your product no matter who you ask. The component vocabulary is your vendor's.\n\nSo there isn't one most likely page. There are four, one per vendor. Each of them still only has the one, though.\n\n## Is the slop checklist still right?\n\nThere are real lists for this, not just vibes.\n[pbakaus/impeccable](https://github.com/pbakaus/impeccable) ships 59 detector\nrules and opens by naming the tells directly: \"Inter for everything,\npurple-to-blue gradients, cards nested in cards, gray text on colored\nbackgrounds, the rounded-square icon tile above every heading.\"\n[MindStudio's design-system post](https://www.mindstudio.ai/blog/claude-design-avoid-ai-slop-design-system)\nadds blue or indigo accents, rounded-full pills, 50px padding everywhere, drop\nshadows, glassmorphism and gradient hero sections.\n\nSix of those I can measure. Scorecard:\n\nOn texture they're dead right. Gradient 90%, pill 72%, glassmorphism 62%, shadow or glow 57%. No notes.\n\nOn colour they're stale. \"Blue or indigo as the primary accent\" lands on 28% of pages. Green and acid are the biggest group at 38%, red and orange next at 32%. Purple-to-blue was probably correct whenever those lists were written. Acid green has moved in since.\n\nWhich is the structural problem with ban lists. The mode moves. Whatever was most likely last year got written down, and by the time it's a rule the models have drifted somewhere else. You're always describing the previous convergence.\n\nThe font one I can't score fairly, and I want to be upfront about it: my output format required a system font stack, so I discouraged Inter myself. 30% of pages put it in the stack anyway.\n\nThen there's the half nobody names. Eyebrow labels 70%, dingbats 60%, numbered section markers 52%. Not on either list.\n\nThe dingbat row is my favourite. 60% of untouched pages have a `✓`\n\nor a `✦`\n\nin\nthe markup, mostly ticking off feature bullets. Real emoji are way rarer at 22%.\nI nearly shipped these as one number, which would have published the\ncheckmark's frequency under the rocket's name.\n\nHere's one page carrying nearly all of it:\n\nThree eyebrows (\"BUILT FOR PEOPLE WHO SHIP\", \"HOW IT WORKS\", \"OPEN BETA\"), pill buttons, a glass card over a gradient, a glow on the accent, three numbered steps, checkmarks down the feature list. Accent is orange, not indigo. Run it past a detector looking for purple-to-blue and it comes back clean.\n\nAs my own sidenote, I originally recorded *zero* rounded corners across all 239\npages. Great line. Completely wrong: I was taking the median corner radius over\nevery large element, and only ~10% of large elements are rounded, so the median\nnever sees them. Rounding is sparse, not absent.\n\nThat one had a second life, which is the more useful lesson. The classifier in\nthe next section tests for \"zero border-radius\", and it was testing it with that\nsame median. So the check passed on every page in the run, and the bucket that\nwas supposed to mean *broadsheet* quietly became a catch-all holding 65 pages,\nsome of them 45% rounded. A dead measure doesn't just give you one wrong number.\nIt gives you every number computed downstream of it, and those look fine.\n\n## Does \"make it distinctive\" do anything?\n\nObvious next move: just tell it not to. The folk remedy, in the wording people actually use, is \"avoid generic AI-generated aesthetics, make it distinctive.\" I appended exactly that and ran the 40 pages again.\n\nThe polish comes off hard. Pill buttons drop 57 points, frosted glass 45.\n\nThe right panel needs a word of setup. Anthropic ships a `frontend-design`\n\nskill\nwith Claude that names three looks AI design falls into: cream-and-serif,\nnear-black-with-one-bright-accent, and broadsheet. I classified every page\nagainst those three.\n\nThe nudge trades between them and doesn't get you out. Dark-and-neon halves, 25 pages down to 13, and broadsheet picks up 10 of the 12 it loses. The number sitting outside all three barely moves: 14 untouched, 13 nudged.\n\nThat list is missing one, though. Every near-white back-office page is hairline-ruled and dense but has rounded cards, which is the opposite of broadsheet, so it matches none of the three. That's just the ordinary light SaaS look, and it's most of what the second brief produces.\n\nTwo things go *up*. Numbered markers +30 points, eyebrows +5, median DOM\nelements 124 to 173. Told to be distinctive, every model added more stuff. \"Be\ndistinctive\" parses as \"add something.\"\n\nSame model, same brief, one sentence of difference:\n\nStill dark. Still one bright green accent. Buttons went square, glass card gone, type went mono, and there's a strikethrough gimmick in the headline. It looks different. It doesn't look like a different decision, it looks like the same decision with the gloss sanded off.\n\nWhich is about what I'd expect. Telling a model what not to do is a constraint, and a constraint narrows the distribution without moving it. You get the same design with fewer features on it. Removal is not direction.\n\nAnd this is the whole thing, I think. None of these models is bad at design.\nThey build a clean, competent, well-spaced page every single time, which is more\nthan I manage. What they can't do is be *distinctive* on request, because\ndistinctive means \"away from the mode\" and nothing in the prompt says which way.\nAsk for the most likely page and you get it. Ask for a less likely page and you\nstill get the most likely one, minus the pill buttons.\n\n## What this doesn't show\n\n**Reasoning is pinned low on every model.** At default settings one model burned 16k tokens thinking before writing a single tag and another took under a minute. Uncontrolled variable, not a feature.**Plain HTML and CSS only**, no Tailwind, no React. Utility classes push colour and spacing into class names and a framework's default scale, which is the exact thing I'm measuring. Most real frontend work happens in Tailwind, so this is a deviation from practice and I'd rather say so.**Two briefs separate genre from model. They don't characterise a genre.** Everything above about dev tools going dark rests on exactly one dev tool.**One cell never finished**, dying identically twice at 16,380 bytes with three reported completion tokens. Left it as a gap.\n\nNext up, the obvious follow-up: if vague negation does nothing, does a specific one work? I banned the four patterns by name, and separately gave one sentence of actual direction to aim at. One of those produces pages with no personality whatsoever. It's the one I expected to work.", "url": "https://wpnews.pro/news/the-most-likely-page", "canonical_source": "https://antithetical-labs.com/blog/the-most-likely-page/", "published_at": "2026-08-12 00:00:00+00:00", "updated_at": "2026-09-02 23:52:41.537188+00:00", "lang": "en", "topics": ["artificial-intelligence", "generative-ai", "ai-research"], "entities": ["Antithetical Labs", "Claude Opus 5", "GPT-5.6-sol", "Kimi K3", "Gemini 3.1 Pro", "OpenRouter"], "alternates": {"html": "https://wpnews.pro/news/the-most-likely-page", "markdown": "https://wpnews.pro/news/the-most-likely-page.md", "text": "https://wpnews.pro/news/the-most-likely-page.txt", "jsonld": "https://wpnews.pro/news/the-most-likely-page.jsonld"}}