Skip to content
BrandCloud

Anti-AI guide

41 rules for the visual tells of AI-generated design. Each one has a made-up page in two versions, the same except for the tell, so you can see exactly what to change.

Run the detector

The detector renders a page in headless Chromium and reports which rules fire, with a score from 0 to 100. It needs a local Chrome or Chromium (setCHROME_PATH to choose one).

Terminal

pnpm add -D ../brandcloud/packs/brandcloud-antipatterns-0.9.0.tgz   # packed from the repository, see Getting started
pnpm exec brand-detect https://your-site.co.uk     # desktop, 1440 by 900
pnpm exec brand-detect dist/index.html --mobile       # 390 by 844
pnpm exec brand-detect dist/index.html --json         # machine-readable
pnpm exec brand-detect dist/index.html --max-score 9 --fail-on high   # CI gate: exit 1 on failure

Scoring: high 12, medium 7, low 4, capped at 100.0 to 9: clean; 10 to 29: some tells; 30 to 59: reads as AI; 60 to 100: obviously AI. Aim for 0 to 9 and no high-severity rule.

Pages that use absolute asset paths (most built sites) need to be served, not opened as files, so the detector sees their CSS. Rules can be extended with addRules()or a JSON pack named by AP_EXTRA_RULES, in the same shape as rules.json.

The example pages with the tell are shown here as screenshots on purpose, so this page itself stays clean. Each pair also opens as a live page.

Colour and gradient

Hue-shifting 'AI' gradient

AP-GRAD-01, high severity

Gradients that travel across hues (indigo to violet, purple to pink, blue to cyan to pink) on buttons, backgrounds or badges.

Why it reads as generated: Indigo and violet gradients are the default accent of Tailwind demos and the training data behind most generators, so they became the signature colour of generated sites. There is no light source that produces them, so they read as decoration.

Fix: Use a single-hue tonal gradient that models light: lighter top, deeper bottom, thin sheen, same-hue shadow (e.g. #3b82f6 to #1d4ed8). Take it from tokens (action-depth-*, level-*), never hard-coded hex.

With the tell

Example page showing hue-shifting 'ai' gradient (AP-GRAD-01, the version with the tell).

Fixed

The same example page with hue-shifting 'ai' gradient fixed (AP-GRAD-01).
AP-GRAD-01: the same page with the tell (left) and fixed (right).

Gradient text and gradient accent words

AP-GRAD-02, high severity

Headline words filled with a gradient via background-clip: text.

Why it reads as generated: The single most repeated hero treatment in generated landing pages: one or two words of the H1 clipped to an indigo or purple gradient.

Fix: Solid ink headline. Let the wording and the size carry the emphasis. If a word must stand out, change the sentence, not the paint.

With the tell

Example page showing gradient text and gradient accent words (AP-GRAD-02, the version with the tell).

Fixed

The same example page with gradient text and gradient accent words fixed (AP-GRAD-02).
AP-GRAD-02: the same page with the tell (left) and fixed (right).

Blurred glow blobs behind the hero

AP-GRAD-03, high severity

Large absolutely positioned circles with heavy blur or soft radial gradients floating behind content.

Why it reads as generated: Generators add 'depth' by dropping two or three blurred coloured orbs behind the hero. They carry no information and are the same on every page.

Fix: Remove the blobs. Create depth with real content: a photograph of the work, a tonal brand section, or a clear contrast step between paper and ink.

With the tell

Example page showing blurred glow blobs behind the hero (AP-GRAD-03, the version with the tell).

Fixed

The same example page with blurred glow blobs behind the hero fixed (AP-GRAD-03).
AP-GRAD-03: the same page with the tell (left) and fixed (right).

Mesh, aurora or rainbow backgrounds

AP-GRAD-04, medium severity

Section backgrounds built from several layered radial gradients or a conic gradient in different hues.

Why it reads as generated: Mesh and aurora backgrounds are a stock generator move to make an empty section feel designed.

Fix: One brand colour section with a single-hue tonal gradient (e.g. deep navy top to slightly deeper bottom), or a flat colour. Never more than one hue family.

With the tell

Example page showing mesh, aurora or rainbow backgrounds (AP-GRAD-04, the version with the tell).

Fixed

The same example page with mesh, aurora or rainbow backgrounds fixed (AP-GRAD-04).
AP-GRAD-04: the same page with the tell (left) and fixed (right).

Coloured glows on everything

AP-GRAD-05, medium severity

Centred, saturated box-shadow or text-shadow glows on buttons, cards, icons and headings.

Why it reads as generated: Neon glow shadows are the generator's way of signalling 'premium' or 'AI'. On real objects light casts a shadow below, not a halo all round.

Fix: Neutral or same-hue shadows with a vertical offset (light from above). At most one soft halo, on the primary action.

With the tell

Example page showing coloured glows on everything (AP-GRAD-05, the version with the tell).

Fixed

The same example page with coloured glows on everything fixed (AP-GRAD-05).
AP-GRAD-05: the same page with the tell (left) and fixed (right).

Gradient borders on cards

AP-GRAD-06, medium severity

Cards outlined with gradient borders via border-image, mask-composite or the padding-box / border-box background trick.

Why it reads as generated: A favourite 'shimmer card' pattern from component galleries; repeated on every card it becomes noise.

Fix: Plain hairline borders in a neutral line colour, or separate content with spacing and rules instead of boxes.

With the tell

Example page showing gradient borders on cards (AP-GRAD-06, the version with the tell).

Fixed

The same example page with gradient borders on cards fixed (AP-GRAD-06).
AP-GRAD-06: the same page with the tell (left) and fixed (right).

Glassmorphism on text containers

AP-GRAD-07, medium severity

Semi-transparent panels with backdrop-filter: blur() holding body text.

Why it reads as generated: Frosted glass cards over gradient blobs are a 2021 Dribbble trend that generators still reach for. Text over a blurred, moving background loses contrast.

Fix: Solid surfaces for anything with text. Contrast checked against the actual background (WCAG 2.2 AA).

With the tell

Example page showing glassmorphism on text containers (AP-GRAD-07, the version with the tell).

Fixed

The same example page with glassmorphism on text containers fixed (AP-GRAD-07).
AP-GRAD-07: the same page with the tell (left) and fixed (right).

Dark mode with neon accents

AP-GRAD-08, medium severity

Near-black page with neon cyan, magenta, lime or violet text, borders and glows.

Why it reads as generated: The 'Linear look' gone generic: dark by default with saturated neon accents is one of the most cited vibe-coded tells.

Fix: If the brand is dark, use a calm dark (ink or deep navy) with off-white text and one brand accent used sparingly. No neon text, no glow.

With the tell

Example page showing dark mode with neon accents (AP-GRAD-08, the version with the tell).

Fixed

The same example page with dark mode with neon accents fixed (AP-GRAD-08).
AP-GRAD-08: the same page with the tell (left) and fixed (right).

Layout

Everything centred

AP-LAY-01, medium severity

Every heading, paragraph and list centre-aligned down the whole page.

Why it reads as generated: Centring is the safest default for a model that does not know the content. Long centred text is harder to read and makes every section look the same.

Fix: Left-align text on a grid. Use asymmetry (wide headline column, narrower body column) and centre only short, standalone moments.

With the tell

Example page showing everything centred (AP-LAY-01, the version with the tell).

Fixed

The same example page with everything centred fixed (AP-LAY-01).
AP-LAY-01: the same page with the tell (left) and fixed (right).

Walls of identical icon cards

AP-LAY-02, high severity

Three, six or nine cards of identical size, each icon + short heading + one-line blurb.

Why it reads as generated: The 3-up feature row is the most common generated section. Equal weight for every item says the author did not decide what matters.

Fix: Rank the points. Lead with the one that matters most, give it room and a specific example; list the rest as plain rows. Drop the decorative icons.

With the tell

Example page showing walls of identical icon cards (AP-LAY-02, the version with the tell).

Fixed

The same example page with walls of identical icon cards fixed (AP-LAY-02).
AP-LAY-02: the same page with the tell (left) and fixed (right).

Bento grid of rounded tiles

AP-LAY-03, low severity

A grid of rounded tiles of mixed spans, each holding a feature blurb or a fake widget.

Why it reads as generated: Bento grids became the default 'features' layout after Apple keynotes and component libraries. Generators fill them with filler tiles because the format demands a tile count, not content. Counter-evidence: a Reddit-mined ranking puts bento grids near the bottom of complaints, so this is a weak tell on its own.

Fix: Lay out what you actually have. Real content of different kinds deserves different treatments, not equal tiles.

With the tell

Example page showing bento grid of rounded tiles (AP-LAY-03, the version with the tell).

Fixed

The same example page with bento grid of rounded tiles fixed (AP-LAY-03).
AP-LAY-03: the same page with the tell (left) and fixed (right).

The template section order

AP-LAY-04, medium severity

Hero, logo strip, features, testimonials, pricing, FAQ, closing CTA, in that order.

Why it reads as generated: Every generated SaaS page uses the same skeleton, so a visitor can predict the next section before scrolling.

Fix: Order sections by the visitor's questions for this business (what is it, is it for me, proof, price, how to start). Merge or drop sections that have nothing specific to say.

With the tell

Example page showing the template section order (AP-LAY-04, the version with the tell).

Fixed

The same example page with the template section order fixed (AP-LAY-04).
AP-LAY-04: the same page with the tell (left) and fixed (right).

Same large radius on every box

AP-LAY-05, low severity

Every card, image, input and panel uses the same big rounded corner (rounded-2xl / rounded-3xl).

Why it reads as generated: One radius everywhere is a utility-class default, not a design decision. It flattens hierarchy and gives the soft 'template' look.

Fix: A small radius scale with roles (e.g. 4px controls, 8px cards, 0 for full-bleed media). Fewer boxes overall.

With the tell

Example page showing same large radius on every box (AP-LAY-05, the version with the tell).

Fixed

The same example page with same large radius on every box fixed (AP-LAY-05).
AP-LAY-05: the same page with the tell (left) and fixed (right).

01 / 02 / 03 numbered steps

AP-LAY-06, low severity

Three or four 'How it works' columns, each topped by a big zero-padded number.

Why it reads as generated: Zero-padded step numbers are a stock generator section. Most processes are not three equal steps.

Fix: Describe the real process with real timings in sentences or a plain ordered list. Only number things the reader needs to do in order.

With the tell

Example page showing 01 / 02 / 03 numbered steps (AP-LAY-06, the version with the tell).

Fixed

The same example page with 01 / 02 / 03 numbered steps fixed (AP-LAY-06).
AP-LAY-06: the same page with the tell (left) and fixed (right).

Typography

Untouched default type and greys

AP-TYPE-01, medium severity

Inter, Geist or the system stack with Tailwind slate / gray / zinc text colours on pure white.

Why it reads as generated: These are the defaults of Tailwind, shadcn and every generator. Nothing in the type says who the business is.

Fix: Choose a typeface with character for the brand, a warm or brand-tinted neutral scale and an off-white or brand canvas.

With the tell

Example page showing untouched default type and greys (AP-TYPE-01, the version with the tell).

Fixed

The same example page with untouched default type and greys fixed (AP-TYPE-01).
AP-TYPE-01: the same page with the tell (left) and fixed (right).

Mono or tracked caps kicker above headings

AP-TYPE-02, medium severity

A small monospace or wide-tracked uppercase label sitting on top of each section heading ('FEATURES', '// HOW IT WORKS').

Why it reads as generated: Kickers on every section are a generator habit borrowed from developer-tool sites. They repeat the heading and add a third type style for no reason.

Fix: Delete the kicker and make the heading say the specific thing. If navigation context is needed, use a breadcrumb or the section's own wording.

With the tell

Example page showing mono or tracked caps kicker above headings (AP-TYPE-02, the version with the tell).

Fixed

The same example page with mono or tracked caps kicker above headings fixed (AP-TYPE-02).
AP-TYPE-02: the same page with the tell (left) and fixed (right).

Accent words in headlines (colour or italic serif)

AP-TYPE-03, medium severity

Headlines with one phrase in the brand colour, a muted grey second half ('Ship faster. Without the chaos.') or one italic serif word in a sans headline.

Why it reads as generated: Two-tone headlines are the non-gradient version of gradient text. The 2026 variant is a single Fraunces or Instrument Serif italic word inside an Inter headline.

Fix: One colour and one typeface per headline. Emphasis comes from the words, the size and the line break.

With the tell

Example page showing accent words in headlines (colour or italic serif) (AP-TYPE-03, the version with the tell).

Fixed

The same example page with accent words in headlines (colour or italic serif) fixed (AP-TYPE-03).
AP-TYPE-03: the same page with the tell (left) and fixed (right).

Components

Eyebrow pill above the H1

AP-COMP-01, high severity

A rounded-full badge above the hero headline ('New: AI-powered insights', with a sparkle or arrow).

Why it reads as generated: Shipped by default in most hero templates. It is usually invented news to fill the space above the headline.

Fix: Remove it. If there is real news, put it in the headline or as a plain dated line near the action.

With the tell

Example page showing eyebrow pill above the h1 (AP-COMP-01, the version with the tell).

Fixed

The same example page with eyebrow pill above the h1 fixed (AP-COMP-01).
AP-COMP-01: the same page with the tell (left) and fixed (right).

Chip walls

AP-COMP-02, medium severity

Rows of pill-shaped tags listing services, technologies or industries.

Why it reads as generated: A cheap way to look comprehensive. Six or more equal pills say nothing about what matters.

Fix: A short sentence or a plain list with a line of detail per item. Group and rank.

With the tell

Example page showing chip walls (AP-COMP-02, the version with the tell).

Fixed

The same example page with chip walls fixed (AP-COMP-02).
AP-COMP-02: the same page with the tell (left) and fixed (right).

Floating chips around the hero visual

AP-COMP-03, medium severity

Small absolutely positioned cards ('+38% conversions', 'Payment received') stuck over the corners of a hero image.

Why it reads as generated: Fake notifications floating over a mockup are a stock hero composition. The numbers are invented and the cards hide the image.

Fix: Show the image unobstructed. Put one real, sourced fact in the caption.

With the tell

Example page showing floating chips around the hero visual (AP-COMP-03, the version with the tell).

Fixed

The same example page with floating chips around the hero visual fixed (AP-COMP-03).
AP-COMP-03: the same page with the tell (left) and fixed (right).

Icons in tinted rounded squares

AP-COMP-04, medium severity

Line icons (usually Lucide) centred in a pale tinted rounded square, repeated on every card.

Why it reads as generated: The shadcn / Tailwind UI feature card signature. The icon is chosen to match a word, not to inform.

Fix: Drop decorative icons. Use numbers, photographs, or icons only where they carry meaning (status, file type, action).

With the tell

Example page showing icons in tinted rounded squares (AP-COMP-04, the version with the tell).

Fixed

The same example page with icons in tinted rounded squares fixed (AP-COMP-04).
AP-COMP-04: the same page with the tell (left) and fixed (right).

Emoji bullets and emoji headings

AP-COMP-05, medium severity

Lists and headings that start with emoji (rocket, lightning, check, fire) as icons.

Why it reads as generated: Chat models use emoji as visual bullets and generated pages inherit the habit. On a business site it reads as unedited model output.

Fix: Plain bullets or numbered rows. Use real icons only with a purpose and a text label.

With the tell

Example page showing emoji bullets and emoji headings (AP-COMP-05, the version with the tell).

Fixed

The same example page with emoji bullets and emoji headings fixed (AP-COMP-05).
AP-COMP-05: the same page with the tell (left) and fixed (right).

Component library defaults left untouched

AP-COMP-06, medium severity

shadcn/ui default theme variables, slate-900 6px-radius buttons and grey-bordered cards exactly as installed.

Why it reads as generated: A component kit is a starting point. Shipping its default theme means the site looks like thousands of others built from it.

Fix: Theme the kit with brand tokens: colour, type, radius scale, shadows, button family (depth / solid / ink).

With the tell

Example page showing component library defaults left untouched (AP-COMP-06, the version with the tell).

Fixed

The same example page with component library defaults left untouched fixed (AP-COMP-06).
AP-COMP-06: the same page with the tell (left) and fixed (right).

Cards with a coloured side or top stripe

AP-COMP-07, medium severity

Cards with a thick coloured left or top border, often a different colour per card.

Why it reads as generated: Called out by several reviewers as being 'almost as reliable a sign of AI-generated design as em dashes for text'.

Fix: Separate items with spacing and hairlines. Use colour only where it encodes something (status), with a text label.

With the tell

Example page showing cards with a coloured side or top stripe (AP-COMP-07, the version with the tell).

Fixed

The same example page with cards with a coloured side or top stripe fixed (AP-COMP-07).
AP-COMP-07: the same page with the tell (left) and fixed (right).

Imagery and decoration

Fake UI built from divs

AP-IMG-01, high severity

A pretend app window (traffic-light dots, skeleton bars, fake chart columns) drawn in HTML as the hero visual.

Why it reads as generated: Generators cannot show the real product so they draw a plausible one. Visitors learn nothing and it signals there is no product to show.

Fix: A real screenshot or photo of the real thing, with a caption saying what it is. If nothing exists yet, show the outcome in words or a real example.

With the tell

Example page showing fake ui built from divs (AP-IMG-01, the version with the tell).

Fixed

The same example page with fake ui built from divs fixed (AP-IMG-01).
AP-IMG-01: the same page with the tell (left) and fixed (right).

Decorative grid or dot pattern behind the hero

AP-IMG-02, medium severity

Faint graph-paper lines or dot grids, often faded out with a radial mask, behind the headline.

Why it reads as generated: A default 'technical' texture from component galleries. It fills space without saying anything.

Fix: Plain canvas, or a real image. Texture only if it belongs to the brand (e.g. a material the business works with).

With the tell

Example page showing decorative grid or dot pattern behind the hero (AP-IMG-02, the version with the tell).

Fixed

The same example page with decorative grid or dot pattern behind the hero fixed (AP-IMG-02).
AP-IMG-02: the same page with the tell (left) and fixed (right).

Sparkles as the 'AI' signifier

AP-IMG-03, low severity

The sparkles emoji or icon on buttons, badges and headings.

Why it reads as generated: Sparkles became the universal 'AI feature' icon, so it marks the page as AI-made even when the product is not AI.

Fix: Remove it. Say what the feature does in words.

With the tell

Example page showing sparkles as the 'ai' signifier (AP-IMG-03, the version with the tell).

Fixed

The same example page with sparkles as the 'ai' signifier fixed (AP-IMG-03).
AP-IMG-03: the same page with the tell (left) and fixed (right).

Motion

Everything fades up on scroll

AP-MOT-01, medium severity

Every block starts invisible and slides up as it enters the viewport (AOS, framer-motion whileInView, .reveal classes).

Why it reads as generated: Generators wrap every section in the same entrance animation. Content hides from people who scroll fast, print or use reduced motion.

Fix: Content visible by default. Motion only where it explains a change (a state, an order, a reveal the user asked for), and none under prefers-reduced-motion.

With the tell

Example page showing everything fades up on scroll (AP-MOT-01, the version with the tell).

Fixed

The same example page with everything fades up on scroll fixed (AP-MOT-01).
AP-MOT-01: the same page with the tell (left) and fixed (right).

Staggered entrance on every card

AP-MOT-02, low severity

Sibling cards animate in one after another with incrementing delays (0.1s, 0.2s, 0.3s).

Why it reads as generated: The stagger is the default 'polish' a model adds to any repeated element. It slows reading and repeats on every list.

Fix: Show lists at once. If an order matters, show the order with numbers, not timing.

With the tell

Example page showing staggered entrance on every card (AP-MOT-02, the version with the tell).

Fixed

The same example page with staggered entrance on every card fixed (AP-MOT-02).
AP-MOT-02: the same page with the tell (left) and fixed (right).

Hover lift and scale on every card

AP-MOT-03, low severity

Cards that jump up or grow on hover even though they are not links.

Why it reads as generated: hover:-translate-y-1 hover:scale-105 is pasted onto every card. Motion on non-interactive things signals a click that does nothing.

Fix: Hover feedback only on interactive elements, and keep it calm (colour, underline, a 1px press).

With the tell

Example page showing hover lift and scale on every card (AP-MOT-03, the version with the tell).

Fixed

The same example page with hover lift and scale on every card fixed (AP-MOT-03).
AP-MOT-03: the same page with the tell (left) and fixed (right).

Endless floating and pulsing decoration

AP-MOT-04, medium severity

Infinite float, bob, pulse or shimmer animations on badges, blobs, icons and buttons.

Why it reads as generated: Looping motion is added to make static generated pages feel alive. It pulls the eye away from the content and ignores reduced motion.

Fix: No looping decoration. Loops only for real progress (a spinner while something loads) and stopped under prefers-reduced-motion.

With the tell

Example page showing endless floating and pulsing decoration (AP-MOT-04, the version with the tell).

Fixed

The same example page with endless floating and pulsing decoration fixed (AP-MOT-04).
AP-MOT-04: the same page with the tell (left) and fixed (right).

Infinite logo marquee

AP-MOT-05, high severity

A strip of client logos scrolling sideways forever, often duplicated to loop.

Why it reads as generated: The marquee makes a short or invented logo list look long. It is the most copied social-proof component in generated pages.

Fix: A static, short list of real clients you have permission to name, ideally each with what you did for them.

With the tell

Example page showing infinite logo marquee (AP-MOT-05, the version with the tell).

Fixed

The same example page with infinite logo marquee fixed (AP-MOT-05).
AP-MOT-05: the same page with the tell (left) and fixed (right).

Cursor-following glow or spotlight

AP-MOT-06, medium severity, checked by the CLI only

A radial glow that follows the pointer across the page or across cards.

Why it reads as generated: Spotlight cards and cursor glows are copied from a handful of developer sites. They add work for the GPU and nothing for the reader.

Fix: Remove it. Use standard hover and focus-visible states.

With the tell

Example page showing cursor-following glow or spotlight (AP-MOT-06, the version with the tell).

Fixed

The same example page with cursor-following glow or spotlight fixed (AP-MOT-06).
AP-MOT-06: the same page with the tell (left) and fixed (right).

Typewriter or rotating-word headline

AP-MOT-07, medium severity

The H1 types itself out, or a word in it cycles through options with a blinking caret.

Why it reads as generated: A stock trick to make a generic headline feel dynamic. Screen readers and slow readers get a moving target.

Fix: One fixed headline that says the specific thing. If there are several audiences, write for the main one and route the rest.

With the tell

Example page showing typewriter or rotating-word headline (AP-MOT-07, the version with the tell).

Fixed

The same example page with typewriter or rotating-word headline fixed (AP-MOT-07).
AP-MOT-07: the same page with the tell (left) and fixed (right).

Parallax-scrolling decorative shapes

AP-MOT-08, medium severity, checked by the CLI only

Blobs, orbs or shapes that move at a different speed from the page as you scroll.

Why it reads as generated: Scroll-linked parallax on decoration is a generator flourish that costs performance and can trigger motion sickness.

Fix: Static layout. If scroll-linked motion is needed for a story, tie it to content and respect prefers-reduced-motion.

With the tell

Example page showing parallax-scrolling decorative shapes (AP-MOT-08, the version with the tell).

Fixed

The same example page with parallax-scrolling decorative shapes fixed (AP-MOT-08).
AP-MOT-08: the same page with the tell (left) and fixed (right).

Purposeless spinning hero object

AP-MOT-09, high severity

A large orb, globe, cube or 3D shape rotating forever in the hero.

Why it reads as generated: A spinning shape is the generator's stand-in for 'technology'. It does not show the product or the work.

Fix: Show the actual work, team or result. A still photograph beats an abstract shape.

With the tell

Example page showing purposeless spinning hero object (AP-MOT-09, the version with the tell).

Fixed

The same example page with purposeless spinning hero object fixed (AP-MOT-09).
AP-MOT-09: the same page with the tell (left) and fixed (right).

Trust and fake proof

'Trusted by' strip of placeholder logos

AP-TRUST-01, high severity

A 'Trusted by teams at' row of company names typed out as text wordmarks, often Acme, Globex, Initech or invented brands, usually greyed out.

Why it reads as generated: Generators always add a logo strip and fill it with placeholders. Visitors recognise the names, and fake proof costs more trust than none.

Fix: Only real clients you may name. One named client with what you did beats twelve grey logos.

With the tell

Example page showing 'trusted by' strip of placeholder logos (AP-TRUST-01, the version with the tell).

Fixed

The same example page with 'trusted by' strip of placeholder logos fixed (AP-TRUST-01).
AP-TRUST-01: the same page with the tell (left) and fixed (right).

Inflated stat band

AP-TRUST-02, high severity

A row of big round numbers ('10x', '99.9%', '50K+', '24/7') with one-word captions.

Why it reads as generated: Generated pages invent metrics to fill the stats section. Round numbers with no source or date are read as made up.

Fix: One specific, sourced figure in a sentence with its context and date ('41 kitchens fitted in 2025, all in Wessex').

With the tell

Example page showing inflated stat band (AP-TRUST-02, the version with the tell).

Fixed

The same example page with inflated stat band fixed (AP-TRUST-02).
AP-TRUST-02: the same page with the tell (left) and fixed (right).

Avatar stack with 'Loved by 10,000+'

AP-TRUST-03, medium severity

Overlapping circular avatars next to a star row and a user count.

Why it reads as generated: Standard hero social proof in generated templates, usually stock faces and a made-up count.

Fix: A named review with a link to where it was posted, or the real review score from a platform with its count and date.

With the tell

Example page showing avatar stack with 'loved by 10,000+' (AP-TRUST-03, the version with the tell).

Fixed

The same example page with avatar stack with 'loved by 10,000+' fixed (AP-TRUST-03).
AP-TRUST-03: the same page with the tell (left) and fixed (right).

Placeholder testimonials

AP-TRUST-04, high severity

Five-star quote cards from 'Sarah Johnson, CEO at TechCorp' with generic praise.

Why it reads as generated: Models generate the same handful of names and job titles. Generic praise with no detail reads as invented.

Fix: Real quotes with permission: full name or first name and town, the job done, and one specific detail from their experience.

With the tell

Example page showing placeholder testimonials (AP-TRUST-04, the version with the tell).

Fixed

The same example page with placeholder testimonials fixed (AP-TRUST-04).
AP-TRUST-04: the same page with the tell (left) and fixed (right).

Template and builder leftovers

AP-TRUST-05, high severity

Stale copyright years, site builder badges, dummy Latin text, bracketed name placeholders, example.com links, default favicons.

Why it reads as generated: Leftovers show nobody read the page before it shipped, which undoes any other trust signal.

Fix: Search the build for placeholders before launch. Copyright year from the build date, real company details, builder badges removed.

With the tell

Example page showing template and builder leftovers (AP-TRUST-05, the version with the tell).

Fixed

The same example page with template and builder leftovers fixed (AP-TRUST-05).
AP-TRUST-05: the same page with the tell (left) and fixed (right).