AHD · The taxonomy
Thirty-eight tells.
Every rule in AHD traces back to one of these. The taxonomy is the product's spine. A page or image that would exhibit more than a handful of these entries is, statistically, AI-generated. A page that exhibits none of them is, probably, designed.
Twenty-eight entries are caught by the HTML and CSS linter. Three are caught by the SVG linter. Thirteen live behind the vision critic because they can only be decided from rendered pixels. Some taxonomy entries are covered by more than one rule — for example, Corporate Memphis is caught both by the vision critic and by the image compiler's negative prompt.
Web and UI
- 01
Inter as the whole system
Inter (or Roboto / Open Sans / Poppins / Lato / Nunito / Manrope / Plus Jakarta Sans) used for display and body alike. Voice-less grotesques chosen because they were already loaded.
- 02
Purple-to-blue hero gradient
from-indigo-500 via-purple-500 to-pink-500, or the blurred blob variant pushed behind a glass panel.
- 03
Centred hero stack
Pill badge, 48–72px headline, 18px subhead, two CTAs (one filled, one ghost), max-w-3xl, everything centred.
- 04
Rounded-2xl on everything
Uniform medium radius across buttons, cards, inputs, avatars, modals, images. No contrast between sharp and soft.
- 05
Three equal feature cards
Icon in a rounded square, 20px title, three lines of description. Always three, always equal, always in a row.
- 06
Lucide icon in a rounded gradient tile
Zap for speed, Shield for security, Sparkles for AI. Always Lucide, always the most obvious icon, always in a gradient-tinted square.
- 07
Emoji bullets
✨ 🚀 ⚡ 🎯 attached to list items that are already trying too hard.
- 08
Glassmorphism panels everywhere
backdrop-blur-xl applied to every card, not just one surface. Frosted for no reason.
- 09
#0a0a0a + one neon accent dark mode
Pure near-black background with a single high-chroma accent. No warm blacks, no paper-and-ink hierarchy.
- 10
One shadow style on everything
The same soft beige drop shadow on every card. A shadow fingerprint, not a shadow system.
- 11
Gradient text on the word AI
Second place: gradient text on the word 'future'. Third: on both.
- 12
Faked testimonials with faked avatars
DiceBear silhouettes, five-star ratings, 'John D., CEO at Acme'. Three columns because four would look like a list.
- 13
Trust bar of unrelated logos
'Trusted by' over a row of desaturated SVGs of companies the product has no relationship with.
- 14
Bento grid of equal cells
Every cell a rounded-2xl card with a gradient border. Nothing dominant; every cell wants to be the hero.
- 15
Symmetry everywhere
Dead-centre compositions, equal gutters, cards of identical height. No tension, no reason to look anywhere first.
- 16
Border-radius without hierarchy
Buttons, cards and page wrapper all at 12px. The radius is a habit, not a decision.
- 17
AI shimmer on non-loading surfaces
The silver diagonal sweep used for loading, new features and hero text alike.
- 18
Fade-up-on-scroll on everything
Staggered 100ms on every block, regardless of intent. Motion as decoration rather than meaning.
- 19
The canonical gradient CTA
44px tall, 12px radius, gradient fill, trailing arrow, faint glow on hover. Copy reads 'Get started' or 'Try it free'.
- 20
Three-tier pricing with a 'Most Popular' middle
Tick-mark lists, a monthly/annual toggle, 'custom' on the third tier.
- 21
Four-column footer
Product, Company, Resources, Legal. Copyright, social icons in circles.
- 22
Scroll-jacked hero with a 3D blob
Usually the Spline default scene. Iridescent, inexplicable.
- 23
prefers-reduced-motion ignored
Motion nobody asked for and nobody can opt out of.
- 24
Median SaaS copy
'Build the future of X.' 'Ship faster.' 'Your AI-native Y.' The hedge 'may' used to avoid saying anything.
Graphic and brand
- 25
Corporate Memphis
Flat illustration, pastel palette, one accent colour, big-headed figures floating through space with no ground plane. Alegria and its descendants.
- 26
AI illustration glow
Marginally too smooth, slightly too symmetrical, subsurface scatter on everything, six fingers when you zoom in.
- 27
Iridescent 3D hero blob
Stripe reference lifted out of Stripe's reasons for using it.
- 28
Stock team-at-laptop photography
Diverse team looking at a laptop in a sunlit office. If the laptop is open to a dashboard the tell is complete.
- 29
Mesh gradients without counterforce
Stripe's grammar without Stripe's sentences — a mesh backdrop with no typographic anchor to answer it.
- 30
Lowercase grotesque + dot wordmark
productname. Every Y Combinator batch since 2021.
- 31
Monoline default icon set
Feather or Lucide at uniform 1.5px stroke with rounded caps. Zero visual authorship.
Typography and system
- 32
Two weights, no more
Regular and semibold. No thin, no black, no italic, no small caps, no tabular figures.
- 33
One line-height for everything
1.5 on body, headline, caption, button. One number does not fit all sizes.
- 34
Measure blown out to 80–100ch
Text set for screens rather than reading.
- 35
Default tracking everywhere
No negative tracking on display sizes. No opened tracking on all-caps labels. Letters sit where the font delivered them.
- 36
Single typeface for the whole page
No pairing, no contrast of genre, no moment where type changes voice.
- 37
Tailwind defaults applied flatly
4, 8, 16, 24, 32, 48, 64. No compressed rhythms. No dramatic jumps. Nothing to make one section feel different from another.
- 38
Single column, no grid
Elements stacked but not aligned to a shared structure. Every page a todo list.
The canonical source lives in docs/SLOP_TAXONOMY.md in the framework repository, with citations for every entry. This page is a view on that source; the repository is authoritative.