I Got Sick of My Claude Code UI Slop, So I Crystallized It into a Go CLI "uislop," a Go CLI tool created by a developer frustrated with the repetitive, AI-generated design patterns found on startup landing pages. The tool scores a webpage from 0 to 100 by analyzing its HTML and JavaScript for common AI aesthetic markers, such as specific fonts (Inter, Space Grotesk), color schemes (purple gradients), and UI elements (shadcn/ui, Lucide icons). The author emphasizes the tool is not for shaming but serves as a "forcing function" to encourage more unique design choices. Every time I asked Claude Code to "build me a landing page," I got the same page back. Centered hero. Inter font for everything. Maybe Space Grotesk if it felt artsy. A purple-to-blue gradient on the H1. A small pill badge floating above the headline "New," "Beta," "Now with AI" . Three identical feature cards underneath, each with a Lucide icon on top, usually zap , shield-check , sparkles . A numbered 1-2-3 steps row. Glassmorphism on the nav. shadcn/ui everywhere. Dark mode with grey-on-darker-grey body text that fails contrast checks but "looks clean." After about the twentieth one I started seeing it in my sleep. So I stopped complaining and built a tool. uislop : a Go CLI that scores how AI-generated a page looks It takes a URL, fetches the HTML and linked JS, runs a pile of regexes against it, and prints a single number between 0 and 100. bash $ uislop https://some-ai-startup.ai font:Inter hits=12 weight=2 add=24 color:purple hits=8 weight=3 add=24 color:gradient hits=14 weight=2 add=28 css:shadcn hits=4 weight=4 add=16 icon:svg lucide hits=11 weight=2 add=22 layout:centered hits=7 weight=2 add=14 layout:allCaps hits=9 weight=1 add=9 ---- 87 0 means "looks human-built or pre-2022." 100 means "this was vibe-coded last Tuesday." Why Go? Same reason I defaulted my new projects to Go. One binary, runs anywhere, no virtualenv, no dependency drift. I can scp it to anything and grep the entire web. The signals I crystallized After eyeballing a few hundred AI startup landing pages, the patterns are weirdly consistent. Fonts - Inter on literally everything - Space Grotesk when feeling fancy - Geist Sans / Geist Mono in the year-of-Vercel - Instrument Serif for one italic word in the H1 "the only ~platform~ you need" - CameraPlainVariable served from cdn.gpteng.co , basically a Lovable fingerprint Colors - VibeCode purple 8b5cf6, 7c3aed - Gradients on the H1, the CTA, the icon backgrounds, the nav border, everywhere - Dark mode with bg-zinc-950 - Body text at text-zinc-400 over bg-zinc-900 , 3.8:1 contrast, fails WCAG, "looks clean" - Soft colored glows behind every primary button Layout - Centered hero with max-w-3xl text-center - Tiny pill badge above the H1 rounded-full bg-primary/10 - Three feature cards, grid-cols-3 gap-8 , each with an icon on top - Numbered 01 - Sign up / 02 - Get started / 03 - Win steps - All-caps section labels with tracking-wider - Stat banner row "10k+ users," "99.9% uptime," "$0 cost" The icons Always Lucide. Always the same five: zap , shield-check , bot , sparkles , rocket . If a page has all five visible above the fold, it is a tell. The CSS giveaways - shadcn primitives in the bundle - backdrop-blur-md bg-white/10 on the nav - Tailwind utility soup - cdn.gpteng.co in the asset URLs What I learned shipping it A few things surprised me. - The signal is loud. I expected to need ML. Regex on the HTML and one pass of linked JS gets you to 90%+ accuracy on the obvious cases. - Geist Sans skews the score harder than I thought. Half the false positives are real human-built sites that just happen to use Vercel's font. - The pattern travels. Once you have the score, you start seeing it everywhere. Half the recent YC batch lands in the 80s. - The cure for being part of the problem is to look at your own page. Mine scored 72. I shipped the tool anyway. What this is and is not It is not a tool to shame anyone. Shipping anything is hard. If shadcn + Lucide + purple gradient is what gets you to revenue, ship it. It is a forcing function. When the default output of every model converges on the same aesthetic, "looks like everyone else" becomes the new "looks unstyled." The score is just a mirror. One weird trick to drop your score: swap Inter for a real typeface, pick a color that is not on the violet wheel, and delete one feature card. Three minutes, ten points off.