Blog Colour, type and surface

The site that invented the look fails its own vibe check

tailwindcss.com scores 75 out of 100 here, the second-highest in the set. Working out why it deserves that and also doesn't is the best available lesson in what this kind of scanner can and cannot know.

By

Of the 28 homepages published as worked examples on this site, the second-highest score belongs to tailwindcss.com. It lands at 75 out of 100, which puts it in the top verdict band: shipped straight from the chat window. Only base44.com, an actual AI app builder, scores higher at 82.

Tailwind is not vibe coded. It's a mature open source project with a full-time team and a design sensibility strong enough that this entire aesthetic is downstream of it. So either the scanner is broken, or the score means something narrower than the label suggests. It's the second one, and the gap between those two readings is the most useful thing on this whole site.

What it actually trips

It's the only site in the set to trigger the indigo-to-violet gradient detector, which is a fact with a certain poetry to it, given that detector exists because of Tailwind's default colour scale. It also trips accent riot with eight distinct accent hues at the same volume, backdrop blur, cards inside cards, rounded corners with soft shadows on everything, and a handful more.

Every one of those hits is real. The detectors are not malfunctioning. The page genuinely contains all of it.

Why a showcase looks exactly like a template

Tailwind's homepage has a job that almost no other homepage has: demonstrate as many utilities as possible, immediately, so a visitor can see what the framework does. Eight accent hues isn't a failure of colour discipline. It's a colour palette being displayed. Nested cards and glassmorphism and gradient text are the product, rendered.

A pattern matcher reading raw HTML has no access to that intent. It sees the same markup a generated page produces, because in a real sense it is the same markup. The difference lives entirely in why, and why is not in the document.

The other two that keep this honest

vercel.com sits at 21 and trips the v0 detector, because it serves assets from v0.dev, because Vercel owns v0. That's an asset host doing exactly what an asset host does, not a confession.

More alarming: an earlier version of this scanner scored vercel.com at 82, and a later run scored it 21, an hour apart, on a full 522 KB response both times. Same tool, same site, wildly different verdict. That instability is why the worked examples here are pinned to a stored snapshot and only refreshed by running a script deliberately, rather than rescanned on every deploy. Otherwise published pages would silently rewrite themselves and nobody would notice a number had moved 60 points.

What got changed because of this

The floors, the small set of findings allowed to override everything else, used to be much broader. vercel.com, stripe.com, and lovable.dev were all convicted by an earlier version: Vercel for the v0 asset host, Stripe for saying "grow your company" and meaning it literally, Lovable for writing "built with Lovable" in its own marketing copy.

All three were wrong, and all three got fixed the same way. A floor now needs an artefact rather than an association. A /__l5e/ path or a data-lovable attribute settles it where a bare lovable.dev asset host doesn't. A badge counts when it's a short label linked back to the builder, not a phrase inside a sentence. "Your Company" counts when it's the entire text of an element, not four words in a paragraph. The weaker forms still fire as signals. They just don't get to deliver the verdict.

The score is strength of evidence, not probability. 49 out of 100 means roughly 47 points of net evidence. It does not mean 49 percent AI.

How to read a high score on a site you trust

Where it shows up

Related signals

Checking whether your own page does this takes one paste, not a manual audit.
Scan a page for this signal →