AHD Artificial Human Design

AHD · The taxonomy

Thirty-nine 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

  1. 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.

    Rule ahd/no-default-grotesque

    Top raw offenders
    @cf/moonshotai/kimi-k2.6 3%
    Regressed on compiled
    gpt-5.4 0% → 10%
  2. 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.

  3. 03

    Centred hero stack

    Pill badge, 48–72px headline, 18px subhead, two CTAs (one filled, one ghost), max-w-3xl, everything centred.

  4. 04

    Rounded-2xl on everything

    Uniform medium radius across buttons, cards, inputs, avatars, modals, images. No contrast between sharp and soft.

  5. 05

    Three equal feature cards

    Icon in a rounded square, 20px title, three lines of description. Always three, always equal, always in a row.

  6. 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.

  7. 07

    Emoji bullets

    ✨ 🚀 ⚡ 🎯 attached to list items that are already trying too hard.

  8. 08

    Glassmorphism panels everywhere

    backdrop-blur-xl applied to every card, not just one surface. Frosted for no reason.

    Rule ahd/no-indiscriminate-glass

    Top raw offenders
    gpt-5.4 7%
  9. 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.

    Rule ahd/no-flat-dark-mode

    Top raw offenders
    gemini-3.1-pro-preview 30% · @cf/google/gemma-4-26b-a4b-it 3% · @cf/moonshotai/kimi-k2.6 3%
    Best reduction
    gemini-3.1-pro-preview 30% → 0%
  10. 10

    One shadow style on everything

    The same soft beige drop shadow on every card. A shadow fingerprint, not a shadow system.

  11. 11

    Gradient text on the word AI

    Second place: gradient text on the word 'future'. Third: on both.

  12. 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. 13

    Trust bar of unrelated logos

    'Trusted by' over a row of desaturated SVGs of companies the product has no relationship with.

  14. 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. 15

    Symmetry everywhere

    Dead-centre compositions, equal gutters, cards of identical height. No tension, no reason to look anywhere first.

  16. 16

    Border-radius without hierarchy

    Buttons, cards and page wrapper all at 12px. The radius is a habit, not a decision.

    Rule ahd/radius-hierarchy

    Top raw offenders
    @cf/mistralai/mistral-small-3.1-24b-instruct 100% · @cf/openai/gpt-oss-120b 90% · @cf/google/gemma-4-26b-a4b-it 47%
    Best reduction
    claude-opus-4-7 43% → 0%
    Regressed on compiled
    @cf/meta/llama-4-scout-17b-16e-instruct 10% → 83%
  17. 17

    AI shimmer on non-loading surfaces

    The silver diagonal sweep used for loading, new features and hero text alike.

    Rule ahd/no-shimmer-decoration

    Top raw offenders
    claude-opus-4-7 33%
    Best reduction
    claude-opus-4-7 33% → 7%
  18. 18

    Fade-up-on-scroll on everything

    Staggered 100ms on every block, regardless of intent. Motion as decoration rather than meaning.

  19. 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. 20

    Three-tier pricing with a 'Most Popular' middle

    Tick-mark lists, a monthly/annual toggle, 'custom' on the third tier.

  21. 21

    Four-column footer

    Product, Company, Resources, Legal. Copyright, social icons in circles.

  22. 22

    Scroll-jacked hero with a 3D blob

    Usually the Spline default scene. Iridescent, inexplicable.

  23. 23

    prefers-reduced-motion ignored

    Motion nobody asked for and nobody can opt out of.

    Rule ahd/respect-reduced-motion

    Top raw offenders
    @cf/moonshotai/kimi-k2.6 7%
  24. 24

    Median SaaS copy

    'Build the future of X.' 'Ship faster.' 'Your AI-native Y.' The hedge 'may' used to avoid saying anything.

    Rule ahd/no-slop-copy

    Regressed on compiled
    claude-opus-4-7 0% → 10%
  25. 25

    Inline style='animation:...' on individual elements

    An LLM shortcut for putting motion into an SVG or card without round-tripping to a stylesheet. Bypasses prefers-reduced-motion, bypasses design tokens, concentrates motion policy where linters miss it.

    Rule ahd/no-inline-style-animation

    Top raw offenders
    @cf/moonshotai/kimi-k2.6 3%

Graphic and brand

  1. 26

    Corporate Memphis

    Flat illustration, pastel palette, one accent colour, big-headed figures floating through space with no ground plane. Alegria and its descendants.

  2. 27

    AI illustration glow

    Marginally too smooth, slightly too symmetrical, subsurface scatter on everything, six fingers when you zoom in.

  3. 28

    Iridescent 3D hero blob

    Stripe reference lifted out of Stripe's reasons for using it.

  4. 29

    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.

  5. 30

    Mesh gradients without counterforce

    Stripe's grammar without Stripe's sentences. A mesh backdrop with no typographic anchor to answer it.

  6. 31

    Lowercase grotesque + dot wordmark

    productname. Every Y Combinator batch since 2021.

  7. 32

    Monoline default icon set

    Feather or Lucide at uniform 1.5px stroke with rounded caps. Zero visual authorship.

Typography and system

  1. 33

    Two weights, no more

    Regular and semibold. No thin, no black, no italic, no small caps, no tabular figures.

    Rule ahd/weight-variety

    Top raw offenders
    gemini-3.1-pro-preview 97% · @cf/google/gemma-4-26b-a4b-it 97% · @cf/moonshotai/kimi-k2.6 90%
    Best reduction
    claude-opus-4-7 47% → 3%
    Regressed on compiled
    @cf/qwen/qwen3-30b-a3b-fp8 13% → 87%
  2. 34

    One line-height for everything

    1.5 on body, headline, caption, button. One number does not fit all sizes.

    Rule ahd/line-height-per-size

    Top raw offenders
    @cf/openai/gpt-oss-120b 100% · gemini-3.1-pro-preview 87% · @cf/google/gemma-4-26b-a4b-it 87%
    Best reduction
    gemini-3.1-pro-preview 87% → 0%
    Regressed on compiled
    @cf/meta/llama-4-scout-17b-16e-instruct 13% → 57%
  3. 35

    Measure blown out to 80–100ch

    Text set for screens rather than reading.

  4. 36

    Default tracking everywhere

    No negative tracking on display sizes. No opened tracking on all-caps labels. Letters sit where the font delivered them.

    Rule ahd/tracking-per-size

    Top raw offenders
    gpt-5.4 43%
    Best reduction
    gpt-5.4 43% → 0%
    Regressed on compiled
    @cf/mistralai/mistral-small-3.1-24b-instruct 0% → 40%
  5. 37

    Single typeface for the whole page

    No pairing, no contrast of genre, no moment where type changes voice.

    Rule ahd/require-type-pairing

    Top raw offenders
    @cf/meta/llama-4-scout-17b-16e-instruct 100% · @cf/mistralai/mistral-small-3.1-24b-instruct 90% · @cf/qwen/qwen3-30b-a3b-fp8 83%
    Best reduction
    gemini-3.1-pro-preview 47% → 0%
  6. 38

    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.

  7. 39

    Single column, no grid

    Elements stacked but not aligned to a shared structure. Every page a todo list.

    Rule ahd/require-named-grid

    Top raw offenders
    @cf/mistralai/mistral-small-3.1-24b-instruct 100% · @cf/meta/llama-4-scout-17b-16e-instruct 93% · @cf/moonshotai/kimi-k2.6 43%
    Best reduction
    @cf/meta/llama-4-scout-17b-16e-instruct 93% → 0%
    Regressed on compiled
    @cf/meta/llama-3.3-70b-instruct-fp8-fast 10% → 17%

Per-rule frequencies above are re-linted continuously against the current AHD ruleset. Numbers here reflect three post-22-April corrections: commit 6952b6e fixed a tracking-per-size false positive on CSS custom properties, commit 8717ccd fixed a JSON-escape bug in the codex-cli runner that stored gpt-5.4 samples as encoded strings, and v0.8.1 moved the em-dash and slop-copy rules off regex to a parse5 AST walker that handles nested prose correctly. Full accounting on the 22 April run report.

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.

The rules also come as stickers. Request one.