feat(lp): web3-growth-audit v3 — proof-led rebuild + /lp prerender fix - #33
Open
gogrowth-co wants to merge 3 commits into
Open
feat(lp): web3-growth-audit v3 — proof-led rebuild + /lp prerender fix#33gogrowth-co wants to merge 3 commits into
gogrowth-co wants to merge 3 commits into
Conversation
Acts on the Wynter Message Grader run of the v2 page (15 personas): the
page scored 15/15 on clarity and relevance but 8/15 on differentiation
and 11/15 on value. It wins recognition and loses the purchase argument,
which is a proof problem rather than a targeting problem.
New page at /lp/web3-growth-audit-v3, forked from v2:
- Ships the real client proof. The EigenLayer ($EIGEN) six-frame audit
board (owner-approved 2026-08-10 per the rebuild campaign's
proof-assets.md, never actually shipped) replaces the generic Miro
mockup in the hero and gets its own section. The real Notion operating
report replaces the placeholder in the deliverables grid, cropped to
drop a sidebar that leaked internal doc names including a client's.
- Leads the six-surface section with the reason instead of the method:
the leak is in the handoff between two surfaces, which is the thing a
single-surface audit structurally cannot see.
- Rebuilds the credibility bar as an operator block. Drops the
"they do not represent an endorsement of this service" disclaimer that
personas quoted back as their reason to distrust the logo row, drops
the Olympian credential, and reframes the logos as where the pattern
recognition came from. Owns the solo-operator model as the pitch.
- Answers the "Dune already shows me this" objection immediately before
pricing, and again in a new FAQ entry.
- Reorders so the worked finding and the real board come before the
biography.
- Qualifies the audience with a traffic floor instead of a category.
- Replaces two placeholder alt strings ("Drop the Miro six-surface board
screenshot") that were live on v2 and read by the grader.
Worker + prerender:
/lp/* was in neither ORIGIN_PRERENDERED_ROUTES nor SNAPSHOT_ROUTES, so
bot requests fell through to dist/index.html. Verified 2026-08-25:
Googlebot and GPTBot both received the HOMEPAGE title on
/lp/web3-growth-audit-v2, with zero occurrences of "72 hours". These
pages ship noindex so search was never the loss; the loss is that every
LinkedIn, X, Slack and Discord unfurl of a paid landing page rendered
the homepage card. Both /lp routes now prerender, with a new
`noindex` flag on RouteSpec so the generated file keeps them out of
search while still carrying correct title, description and OG tags.
Verified: build emits dist/lp/web3-growth-audit-v{2,3}/index.html with
the right title and robots tag; page renders with no console errors and
no horizontal scroll at 320-1920.
✅ Deploy Preview for mangabeira ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Repository: gogrowth-co/coderabbit/.coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Visual QA on the "You launched" -> "Why six, and not one" region. The measured checks were all clean (no section gaps, no horizontal scroll at 320-1920, no body text under 14px), but the section read as incomplete for a reason no metric catches: it stated its argument three times in three consecutive blocks and demonstrated it zero times, then rendered a relational claim as a 3x2 grid of six disconnected cards. The visual grammar contradicted the headline. - Adds a handoff strip between the section intro and the card grid: the six surfaces as a chain, the five joins between them drawn as dashed gaps and labelled. "Six surfaces. Five handoffs." is a countable hook rather than a fourth restatement, and it sets up the worked example further down the page. - Rewrites the closing dark band to describe the mechanism (each surface gets a blind pass, then a second pass reads only the seams) instead of repeating the claim. Pull quote follows. - Rewrites the opening paragraph so it stops pre-empting the heading directly beneath it. Mobile bug caught in the same pass: with justifyContent center on a flex row wider than its scroller, the row overflows to the LEFT, which overflow-x auto cannot scroll back to in LTR. At 375px the strip opened mid-chain with "01 Website" clipped and unreachable while the desktop render looked correct. Replaced with width max-content plus margin 0 auto, which centres when the chain fits and left-aligns when it does not. Verified after rebuild: artifact contains the change (grepped dist, not just build exit code), strip scroller starts at 01 at 375px and 768px, no horizontal page scroll at nine widths.
…t above the section heading
Design direction from the designer agent ("The Seam Line"), implemented
to spec. A hairline rail runs under the six surfaces with a small navy
dot on each. At every handoff the rail stops entirely, and two offset
orange stubs sit in the empty space. The shape carries the argument:
solid where a surface's own audit already covers it, broken exactly
where nothing owns the seam.
What this fixes about the previous strip:
- Visual weight sat on the nodes (heavy 44px navy blocks) while the
argument is about the gaps. Weight now sits on the empty space.
- "GAP 1".."GAP 5" was filler labelling. Removed; the break itself is
the signal.
- It read as a generic stepper, which implies a linear journey that
completes rather than a chain with weak joints. Zero radii throughout
now, which also stops it echoing the rounded card grid beneath it.
- It needed horizontal scrolling below 768px. It now reorients to a
vertical rail instead, so there is no scroll container at all.
Moved above the "Why six, and not one" eyebrow, so the diagram poses the
question the H2 then answers.
Layout lives in the scoped stylesheet rather than inline styles, because
the orientation swap needs media queries. Breakpoint 768px: horizontal
rail above, vertical rail below. Tablet 768-1023px tightens tracking to
0.4px so "Search & AEO" holds one line.
Accessibility: figure/figcaption so the caption is the accessible
summary, both mark SVGs aria-hidden, and a visually hidden span between
each pair ("Handoff: Website to dApp") so the five-handoff structure
reaches screen readers. Static, no motion.
Contrast: the designer flagged brand orange for the marks and was right.
#FF7A3D measures 2.59:1 on white, under WCAG 1.4.11's 3:1 for graphical
objects. Marks use #E8672A (3.28:1) instead, leaving the shared brand
token unchanged. Labels 7.08:1, nodes 15.54:1.
Verified at 320/360/375/390/414/430/768/834/1024/1280/1440/1920: no page
horizontal scroll, no overflow inside the component, six surfaces and
five joints present, correct mark orientation per breakpoint.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Acts on the Wynter Message Grader run of the v2 page. 15 personas: clarity 15/15, relevance 15/15, differentiation 8/15, value 11/15. The page wins recognition and loses the purchase argument — a proof problem, not a targeting problem.
New page at
/lp/web3-growth-audit-v3. v2 is untouched, so the two can be split-tested.Copy and structure
proof-assets.mdand had never shippedaltstrings replacedalt="Drop the Miro six-surface board screenshot"was live and read by the graderWorker + prerender
/lp/*was in neitherORIGIN_PRERENDERED_ROUTESnorSNAPSHOT_ROUTES, so bot requests fell through todist/index.html.Same for GPTBot. These pages ship
noindex, so search was never the loss — the loss is that every LinkedIn, X, Slack and Discord unfurl of a paid landing page rendered the homepage card. Both/lproutes now prerender, with a newnoindexflag onRouteSpecso the generated file stays out of search while carrying correct title/description/OG.Verified
npm run buildemitsdist/lp/web3-growth-audit-v{2,3}/index.htmlwith the right<title>androbots: noindex, nofollowNot done
LP_IDisweb3-growth-audit-v3, so GA4 can separate them, but no traffic is routed here.🤖 Generated with Claude Code