posthog.com
scanned 2026-09-15 06:58 UTC · defs 2026.09
category overview
the breakdown
4 of 27 patterns flagged✓ clean, no tells in this category.
VibeCode Purple — filled indigo/violet CTAs
Vibe purple
Tailwind's `indigo-600` (#6366f1) and `violet-500` (#8b5cf6) became the de-facto primary color for v0.dev, Cursor, Bolt, and Lovable templates.
Cards nested inside cards
Nested cards
Cards inside cards (a bordered/shadowed/rounded container holding more bordered/shadowed/rounded containers) create visual noise and excessive depth — a reflexive AI layout move where every group gets wrapped in its own panel.
Numbered "1 · 2 · 3" step sequences
Numbered steps
Numbered 1·2·3 'How it works' sections are AI's go-to filler.
Glassmorphism (backdrop-filter blur on translucent layers)
Glass
`backdrop-filter: blur()` on translucent layers is a 2021 trend that AI templates kept reproducing.
✓ clean, no tells in this category.
the four axes
slop: lower is better · system & AEO: higher is better
design slop
19/100
Mild
copy slop
not run
system · DESIGN.md
none
no DESIGN.md
AEO · agent-readable
not run
scan to evaluate
You've seen the score. Now fix it.
4 tells, heaviest first.
VibeCode Purple — filled indigo/violet CTAs+8
whyTailwind's `indigo-600` (#6366f1) and `violet-500` (#8b5cf6) became the de-facto primary color for v0.dev, Cursor, Bolt, and Lovable templates. Any saturated purple/indigo CTA in the HSL 240–295° range reads as 'AI-coded'.fixPick a primary color anchored to your actual brand, not the LLM default. Avoid HSL hue 240–295 entirely for filled CTAs. High-contrast neutrals (pure black, off-white, rich brown) are the safest reset. If you want color, pick one saturated accent that has *meaning* (Stripe purple has a 10-year story; yours probably doesn't yet).ruleNo #6366f1, #8b5cf6, or any HSL hue in 240–295° on filled CTAs.
Glassmorphism (backdrop-filter blur on translucent layers)+4
why`backdrop-filter: blur()` on translucent layers is a 2021 trend that AI templates kept reproducing. It always reads as decorative-for-the-sake-of-it and signals 'theme.css from a Bolt starter'.fixRemove all backdrop-filter blur. Use opaque surfaces with strong contrast. If you need depth, a single subtle box-shadow (0 1px 2px rgba(0,0,0,0.05)) does more with less.ruleNo `backdrop-filter: blur()` anywhere on the page.
Cards nested inside cards+4
whyCards inside cards (a bordered/shadowed/rounded container holding more bordered/shadowed/rounded containers) create visual noise and excessive depth — a reflexive AI layout move where every group gets wrapped in its own panel.fixFlatten the hierarchy. Pick ONE level to be the card and use spacing, typography, and dividers for the inner structure instead of nesting more containers. A card holding three sub-cards should usually be a card holding three text blocks separated by space or a hairline.ruleNo card-like container inside another card-like container. One level of elevation, max.
Numbered "1 · 2 · 3" step sequences+3
whyNumbered 1·2·3 'How it works' sections are AI's go-to filler. They almost never describe an actual product flow — they describe a generic 'sign up / use it / love it' loop.fixReplace the numbered steps with the actual product flow shown in real UI. A single annotated screenshot or 15-second video tells the user more than 1-2-3 generic verbs. If steps are essential (e.g. an actual checkout flow), make them visual — show the screen at each step.ruleNo numbered steps section with generic verbs like 'Sign up / Connect / Get started'. If you keep numbered steps, each must include a real product screenshot.
npx slop-detect posthog.com --fix