PHARALLAX ROAST BRIEF // 50+ SITES // 197 COMMENTS // 18 RULES // 4 TIERS // SOURCE AI AUTOMATIONS WITH JACK // PHARADOXA
Best Practices Brief · 2026.05.01

What 50 roasts taught us about AI-built websites

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.

50+
sites submitted, dissected, and rebuilt in public
197
comments of feedback from working operators
18
distinct rules emerged across four failure tiers
12
patterns hit 3+ sites. The high-leverage class.
Source: AI Automations With Jack Roast prompt: Jack Roberts Compiled: Pharallax
00 The Setup

Roasts are free QA for everyone willing to read

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.

01 Tier A · First-Paint Failures

What kills you before the visitor reads anything

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.

A1 · Hero Text Static

Hero copy must be visible at first paint

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
A2 · Initial Paint Has Content

No long black or empty above-fold

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
A3 · Background-Color Fallback

If the hero image fails, the page must still look intentional

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
A4 · Mobile Hero Video

Hero video on mobile defaults to static poster

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
02 Tier B · Credibility & Trust

Why a great hero still won't convert

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.

B1 · Custom Domain

No *.vercel.app, *.pages.dev, or *.netlify.app as canonical URL

Buy 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
B2 · Logo Present

A wordmark or symbol in the nav. Favicon doesn't count.

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
B3 · Founder Visibility

Photo, bio, LinkedIn on every personal-services site

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
B4 · Real Social Proof

Named testimonials, dollar figures, real outcomes

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
B5 · Filter Positioning

Confidence in voice. Repel the wrong fit.

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
The Quote That Cut Deepest

You're a web design agency still on a Netlify subdomain. That's like a dentist with bad teeth.

Akki Shenoy · on a competitor's site (true for half the thread)
03 Tier C · Voice & Copy

The patterns that scream "AI"

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.

C1 · No Em Dashes

Strip every em dash from customer-facing copy

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
C2 · Plain English

No Hormozi-flavored capital-letter slogans

"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
C3 · Vary Section Openers

Don't open every card with a percentage

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
C4 · Reduce Text

Users skim. Walls of body copy lose them.

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
04 Tier D · Layout & UX

The mechanics every site must get right

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.

D1 · One Hero CTA

One primary call-to-action above the fold

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
D2 · Mobile Full-Bleed

Container max-width must span the screen on mobile

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
D3 · Sticky CTA Discipline

Sticky bars scroll-trigger; never hide hero stats

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
D4 · Cookie Banner ≠ Wall

A small bottom banner. Not a full-screen blocker.

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
D5 · Chat Widget Patience

Delay 10s+ or trigger on scroll. Never on first paint.

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
05 Cross-Cutting Findings

The patterns that hit 3+ sites

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.

5/10
Em dashes in copy across audited sites. Voice rule exists, mechanical enforcement leaks.
3/10
Two competing hero CTAs on pharallax, ogc, vibe-n-thrive.
3/10
Missing social proof on conversion pages: pharallax index, pharadoxa-site, generuss-forms.
2/10
Hero text invisible at first paint on generuss-design and bento-hub. Highest-priority class.
06 Build Root Audit

How our active sites stack up

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.

Site
Top issues
Tier
generuss-design
Hero opacity:0 + char-stagger on h1 (the antipattern Akki roasted us for). No logo settled. Nav off-screen on load.
P0
pharallax
Zero social proof on the $497 conversion page. Two competing hero CTAs. Mobile max-w-3xl with no full-bleed override.
P1
generuss-dot-com
No git history. 6 em dashes in user-visible testimonials. Mobile max-w-4xl on nav and hero.
P1
pharadoxa-site
Zero CTAs on the showpiece index. No logo or wordmark in nav. Fixed bottom-right elements may block on mobile.
P2
ogc (client)
Sticky mobile ticket bar persists across every page on mobile, blocks modals. Two competing hero CTAs. 7 href="#" placeholders.
P2
bento-hub
Site carousel slides start opacity:0 with 0s/4s/8s staggered delays. Visitor stares at empty cards for 8 seconds. <h1> is sr-only.
P3
crystal-seed-tarot
8 em dashes in event descriptions visible to every visitor. GigSalad badge SVG missing dimensions, small CLS risk.
P3
vibe-n-thrive
2 visible em dashes in service copy. Two competing hero CTAs. Reviews still mock data after 2 months.
P3
07 Roaster Hall of Fame

Whose feedback was worth reading

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.

Akki Shenoy
Direct · Mechanical · Unflinching

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

Daniel Quintana
Long-form · Wins-then-roasts · Voice-aware

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

Pat Senas
Bounce-rate · Mobile-first · Funnel-aware

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

Russ Gardner
Tool-augmented · Generous · Reciprocal

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

08 What We're Shipping

Bake the rules into the build pipeline

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.

pilot-qa.mjs

F12 / F15
12
Hero static text: Playwright at t=0ms asserts h1 has opacity: 1 and no transform. No .gsap-hidden, no opacity-0.
13
One primary hero CTA: count brand-color buttons in the first viewport. Pass = exactly 1.
14
No href placeholders: grep href="#" outside in-page anchors. Replace with data-href until JS populates.
15
Canonical domain: warn at deploy time if canonical URL is still *.pages.dev or *.vercel.app.

/taste · CQ-34

Aesthetic eval
1
New eval pairs with existing CQ-33 (banned punctuation). Same Playwright runner.
2
Fails: any GSAP from(...opacity:0...), framer-motion initial={{opacity:0}}, char-stagger animation on hero h1.
3
Passes: hero h1 visible immediately. Sub-headers, CTAs, decorative elements may animate.
4
Fires in convergence loop AND on /taste invocation. Voice and aesthetic gates fire at different stages.

/qa · JS-disabled pass

4th screenshot run
1
Existing /qa does 3 Playwright passes at 1440px / 768px / 375px with JS enabled.
2
Add a 4th pass: browser.newContext({ javaScriptEnabled: false }) at 1440px and 375px.
3
Catches: JS-populated href="#" placeholders (now visibly broken), staggered-opacity reveals, content gated on JS hydration.
4
Output: qa-jsdisabled-1440.png + qa-jsdisabled-375.png in .tmp/. Diff vs JS-enabled = the gap to fix.

pilot-qa.mjs --sweep

Build-root audit
1
New mode runs every F-eval across every active site in $BUILD_ROOT in one command.
2
Site detection: any directory with package.json + framework config. Excludes _archive, _resources, stale projects.
3
Output: markdown table to .tmp/sweep-{date}.md. Site × eval × pass/fail. Sortable by failure count.
4
Optional weekly launchd at Sun 09:00 PT, output to Obsidian Journal. Drift becomes visible.
09 The Take

Roasts are free QA. Listen.

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.