A community of operator-founders dropped their sites in Jack Roberts' Skool channel. 197 comments later, the same patterns failed across nearly every submission. This is the rulebook the thread wrote, distilled.
Jack Roberts ran a single Skool thread asking members to drop their websites for feedback. The thread became a corpus. Same operators, same stack (Astro, Next, Vercel, Cloudflare, Lovable, Antigravity, Webflow), same mistakes, over and over.
When 50 sites get the same critique from working professionals, the critique stops being subjective and starts being a checklist. The rules below are extracted directly from the thread, with quotes attached. Each one is a thing the community paid attention to without being asked. That's a strong signal.
This brief is not a style guide. It's a list of failure modes that every AI-built site is currently shipping by default. Use it to ship sites that pass community-grade muster on first paint.
Bounce risk lives in the first 1-2 seconds. Black hero, animating text, missing image fallbacks, slow video on mobile. The visitor leaves before your headline finishes typing itself in.
No opacity: 0 initial state on the hero <h1>. No char-stagger animation that leaves first letters invisible. No "wait for GSAP / IntersectionObserver / framer-motion to reveal." If the engine reveals it, the visitor doesn't get it.
"your animated headline starts mid-sentence. I landed and saw 'E CONTROL OF YOUR BUSINESS', it also only stays for like 1 second then disappears because the beginning was cut off and still animating in. First impressions count, and 'E CONTROL' looks like a typo."
Akki Shenoy · on aiwithdiego.com
A 3-4 second loading screen before any text appears reads as "site is broken" before it reads as "site is loading." The visitor is gone. Above-fold needs the headline, the value prop, and a CTA in the initial paint, not after a JS bundle resolves.
"70% of the first screen is pitch-black empty space before any text appears… cold visitor will absolutely bounce before reading your headline. You're a conversion-focused web designer. Your own homepage is losing the conversion war above the fold."
Akki Shenoy · on generussdesign.com
Every background-image needs a paired background-color drawn from the brand palette. A flat gray void with floating white text is worse than an honest deep-navy or warm-stone hero. Even when the image loads, the fallback covers the millisecond before paint.
"the hero background image never loaded for me. It's just a flat gray void with white text floating on nothing. If your hero image fails to load even once for a high-net-worth buyer, the deal might be lost. Use a CSS fallback background color that still looks intentional."
Akki Shenoy · on felicitytaylor.realtor
Mobile bandwidth is hostile to autoplay video. Default to a poster image at max-width: 768px. Lazy-load the video only if the visitor scrolls. The visitor who clicked through from an ad has a 5-second budget for "what is this site." Don't spend it on a black race-track shot loading.
"on mobile the hero is too slow to load. If I clicked via an ad or google search I would bounce right away because in the first 5 secs all I see is a race track."
Pat Senas · on aiwithdiego.com
Even when the first paint is clean, the page still has to earn the click. No logo, no founder, no testimonials, dead case-study links. Five signals visitors use to decide if you're real.
*.vercel.app, *.pages.dev, or *.netlify.app as canonical URLBuy the domain. Doubly true if you sell websites. A web design agency on a Netlify subdomain is the visual equivalent of a contractor showing up in a torn shirt. Every other rule on this list is downstream of being on a real domain.
"you're a web design agency still on a Netlify subdomain. That's like a dentist with bad teeth. Buy the domain, move the site over, and your credibility triples overnight."
Akki Shenoy · on itvisionsinc.netlify.app
Service businesses without a visible mark read as "still figuring it out." A wordmark is fine. A small symbol paired with type is better. The favicon is for browser tabs. It isn't a brand identity.
"There's no logo anywhere visible. The site takes so long to reveal content that a cold visitor will absolutely bounce before reading your headline."
Akki Shenoy · on generussdesign.com
For consultancies and freelance services, people don't hire the brand. They hire you. The pitch can describe a decade of expertise, but if the visitor can't find your face, your bio, or a way to verify you're real on LinkedIn, the trust gap stays open.
"where are you, my dude? The whole pitch is 'you're hiring a Software Engineering Manager with a decade in travel,' but there's no photo, no bio, no LinkedIn. People don't hire trendXmedia. They hire you."
Daniel Quintana · on trendxmedia.com
For any conversion page, social proof is non-negotiable. Logos with dead href="#" links are worse than no logos. Generic testimonials read as fake. Named people with attributed results, ideally with a number or a dollar figure, are the trust currency that closes the page.
"Your 'Selected Work' row is eight logos with eight dead links. Every one points to #. For a consultancy that runs on trust, broken case study links are worse than no case studies. Either build them out or pull the section."
Daniel Quintana · on trendxmedia.com
A hero that tries to appeal to everyone appeals to no one. The strongest pages on the thread named exactly who they were for in five words, and let the rest of the audience self-select out. Confidence is a trust signal. So is willingness to lose half the room.
"'Visual Branding for Misfits & Weirdos' might be the cleanest filter-positioning I've seen on a roast thread. Five words and you've already turned away the wrong clients and pulled in the right ones."
Daniel Quintana · on neogenesis.me
You're a web design agency still on a Netlify subdomain. That's like a dentist with bad teeth.
Em dashes, capital-letter slogans, stat-bombing, walls of text. Every one of these reads as "ChatGPT after a Hormozi binge" to a working operator. The thread had zero patience for any of it.
The em dash is the single most reliable AI-generation tell on the modern web. Use commas, periods, colons, parentheses, or restructure the sentence. Internal docs and code comments are exempt. Anything a human reads on a live page, a marketing email, or a proposal is in scope.
"I'd also get rid of the em dashes throughout the site to dodge AI generated radars."
Russ Gardner · on frictionandtoil.com
"Category of One." "The Unfair Advantage of Niche Depth." "The Infrastructure of Administrative Freedom." Every section header trying to sound profound dilutes the page. Plain English describing a real outcome lands harder than any capitalized abstraction.
"The copy reads like ChatGPT after a Hormozi binge. 'Category of One.' 'The Unfair Advantage of Niche Depth.' Every section header wants to sound profound. The niche is already good. You don't need to wrap it in capital-letter slogans."
Daniel Quintana · on trendxmedia.com
Three stats in a row stop landing. Mix in a story, a contradiction, a question, a named anecdote. Pick the two strongest stats for the homepage and let the rest of the cards earn the visitor's attention with structure variety, not repeated authority moves.
"There's also stat-bombing fatigue. '68% of employees... 77% have pasted... 88% of AI proofs... 80% of projects fail... only 7% have governance...' Every card opens with a percentage. By the third one they stop landing."
Daniel Quintana · on jamieoarton.com
Every paragraph past the third is read by 30% fewer people. Every section past the fifth gets scrolled past at speed. The site is not the brochure. It's the hook. Punchy beats exhaustive.
"reduce text, the User will never read too much text, they will just skip or leave."
Tabe Manguh · on cydenti.com
CTAs, mobile widths, sticky bars, cookie modals, chat widgets. The small UX details that separate "competent" from "amateur" on first impression. Every one of these failed at scale across the thread.
Two competing hero buttons split conversion attention. If both options matter, demote one to a small text link beneath the primary. The brand-colored, centered, dominant button should win every time. A/B test it if uncertain. Don't ship two equally-weighted CTAs.
"you have 2 CTA competing in the hero section, maybe. Have you measured which one gets more clicks?"
Diego Bauer · on flowly.lu
A max-w-3xl or max-w-4xl on the body or main without a responsive override leaves visitors with empty side gutters on phones. Every mobile layout starts full-bleed and only constrains width at md: or lg:. Never the reverse.
"The max-width on mobile doesn't span the entire screen."
Tabe Manguh · on cydenti.com
A sticky bottom CTA on first paint blocks the content the visitor came to read. Show it after the first 300px of scroll, hide it when a modal opens, and never let it cover the hero stats it's supposed to drive clicks toward.
"the sticky CTA is blocking your stats in the hero, maybe you can have it after the first scroll?"
Diego Bauer · on aiwithdiego.com
A full-screen cookie modal demanding consent before the visitor sees the page hits "back button" hard. A bottom banner with one accept button satisfies the law and respects attention. EU-strict configurations still allow this pattern.
"the thing that immediately threw me off was the cookie modal. full screen cookie warning will deter some people."
Russ Gardner · on cydenti.com
A chat widget popping the moment the page loads interrupts before the visitor has read the headline. If the site sells AI chat, the irony is brutal. Wait for engagement signals (10 seconds idle, scroll past hero, hover near widget) before announcing.
"a chatbot widget pops up IMMEDIATELY before I've read a single word. You're selling AI chat tools... and your first impression is an AI chat interruption. At least delay it 10 seconds so I can learn what GHOST is first."
Akki Shenoy · on digitalhandyman.xyz
When a single antipattern recurs across multiple sites in the same thread, it stops being individual oversight and starts being a stack-wide blind spot. These four are the ones to bake into the build standard, not flag in code review.
Ten active websites in our build root, audited against the 18 rules. Top-3 issues per site. The roasted site (generussdesign.com) gets P0 priority. Revenue-critical pages get P1. The rest is cleanup.
max-w-3xl with no full-bleed override.max-w-4xl on nav and hero.href="#" placeholders.opacity:0 with 0s/4s/8s staggered delays. Visitor stares at empty cards for 8 seconds. <h1> is sr-only.Not all roasts are equal. The ones below combined specific evidence, named patterns, and actionable fixes. Their structure is worth borrowing the next time we give feedback.
Opens with the strongest line in the page, then states the failure mode in one sentence, then names the fix. Doesn't soften. Doesn't pad. Reads every site against the same template: first paint, hero content, mobile, fallbacks.
"You're a conversion-focused web designer. Your own homepage is losing the conversion war above the fold. Fix the hero entry animation and add a logo."
Names what's working before naming what isn't. Dissects copy at the sentence level. Catches voice failures other roasters miss: Hormozi binges, GPT title generators, stat-bombing fatigue. Every roast ends with one specific thing to change first.
"The copy reads like ChatGPT after a Hormozi binge. Try rewriting one section in plain English and see how much stronger it lands."
Reads every site as if visiting from a paid ad with a 5-second budget. Catches the funnel breaks: hero too slow, CTA placement wrong, h1 hierarchy missing. Connects every flaw back to a measurable outcome: bounce rate, conversion rate, signup rate.
"On mobile the hero is too slow to load. If I clicked via an ad I would bounce right away. Check your bounce rate. If it's high it's because of that."
Pairs a human read with a Pharallax analysis report. Every roast comes with structured backend data the recipient can act on. Generous with positives, surgical with negatives. Most likely roaster to inspire other people to share their own work.
"I built a tool that analyzes websites visually and checks the back-end health. So here's the report for a more thorough analysis."
Standards exist when they fire automatically. Voice rules without mechanical enforcement leak. The four blocks below are the additions to our existing tooling so future builds can't ship the antipatterns above by default.
t=0ms asserts h1 has opacity: 1 and no transform. No .gsap-hidden, no opacity-0.href="#" outside in-page anchors. Replace with data-href until JS populates.*.pages.dev or *.vercel.app.from(...opacity:0...), framer-motion initial={{opacity:0}}, char-stagger animation on hero h1.browser.newContext({ javaScriptEnabled: false }) at 1440px and 375px.href="#" placeholders (now visibly broken), staggered-opacity reveals, content gated on JS hydration.qa-jsdisabled-1440.png + qa-jsdisabled-375.png in .tmp/. Diff vs JS-enabled = the gap to fix.$BUILD_ROOT in one command.package.json + framework config. Excludes _archive, _resources, stale projects..tmp/sweep-{date}.md. Site × eval × pass/fail. Sortable by failure count.Every operator in the thread had a moment where the roast confirmed something they already knew. The hero animation that always felt slow. The Vercel subdomain on the site they keep meaning to migrate. The mock testimonials they keep meaning to replace. The em dashes they let slip past.
Public feedback from working operators is cheaper than a UX audit, more direct than a focus group, and harder to ignore than internal QA. The signal in this thread was strong because the contributors had skin in the game. They were submitting their own sites for the same treatment.
The standards above are the rules the thread wrote without being asked. Bake them into the pipeline so future builds pass community-grade muster on first paint. Re-roast the portfolio in 30 days and watch the same critics nod.