/* global React, Reveal, ArrowGlyph */ const { useState: useS, useEffect: useE, useRef: useR } = React; // ========================================================= // HERO // ========================================================= function Hero({ layout, headline, onBook }) { // Each headline option is an array of (string | { em: string }) tokens for inline italics. const HEADLINES = { a: [ "I help new Amazon sellers turn ", { em: "noise" }, " into a real, ", { em: "boring" }, " business."], b: [ "Your first ", { em: "real" }, " month on Amazon starts with one honest conversation."], c: [ "Stop ", { em: "guessing" }, ". Start building the Amazon brand you actually wanted."] }; const tokens = HEADLINES[headline] || HEADLINES.a; return (
{layout === "asym" &&
since 2018
$84M+
student GMV coached
cohorts run
41
across 6 years
}
Amazon coach  ·  1:1 + group

{tokens.map((t, i) => typeof t === "string" ? {t} : {t.em} )}

I'm Jay. For six years I've sat next to first-time sellers and walked them through product, listing, ads, and the boring middle. No funnels, no hype — just the next right move.

See how I work
10+
Years, same craft
on Amazon, since 2015
3,000+
Sellers, 1:1
no mass courses, no funnels
90%
To first sale
within 90 days
{layout !== "centered" && }
); } // ========================================================= // MARQUEE — student wins // ========================================================= function Marquee() { const items = [ ["0 → 1 sale, week 9", "Michael · first launch"], ["$0 → $9K/mo", "Daniel · home · AU"], ["$0 → $10K/mo", "LibiGem · supplements · CA"], ["GNC Canada, accepted", "LibiGem · retail '24"], ["£0 → £10K/mo", "Waldek · private label · UK"], ["$0 → $15K, sold out", "Tim · electronics · 3 mo"], ["$0 → $100K · 90 days", "Xtreme Heaters · automotive · US"], ["231 units · 3 SKUs", "Tanja · launch"], ["147 units · $6,613", "Patricia · december"], ["300 units · £7,500", "Mared · first product"]]; const loop = [...items, ...items]; return (
{loop.map((it, i) =>
{it[0]} {it[1]}
)}
); } // ========================================================= // PRESS strip // ========================================================= function Press() { return (
as featured in
Seller Sessions
Helium 10
The PPC Den
EcomCrew
Million Dollar Cases
); } // ========================================================= // PLEDGE CARD — handwritten paper note for chapter 04 // ========================================================= function PledgeCard() { return (
PLEDGE · '26
things I won't do —
— Jay
); } // ========================================================= // STORY — scroll-triggered chapters // ========================================================= function Story() { const chapters = [ { n: "01", title: "I sold on Amazon for four years before I taught anyone.", body: <>First SKU in 2016 out of my apartment. Six brands across supplements, kitchen and outdoor. Two exits. Everything I teach, I shipped first., visual: "[ early storefront — 2016 ]", img: "assets/early-storefront.png", pos: "top left" }, { n: "02", title: "Most new sellers don't have a strategy problem. They have an execution problem.", body: <>They overthink their first product. They jump to ads before listings are ready. They chase rankings and algorithm hacks. Execution isn't hustle. It's sequence — the right things in the right order., visual: "[ setup sequence — steps 6–10 ]", img: "assets/workflow-diagram.png" }, { n: "03", title: "So I built the coaching I wish I'd had at $0.", body: <>Direct, patient, no-bro-energy. 1:1 to fix your specific mess. Group cohorts to compress 18 months of learning into 12 weeks. No fluff modules., visual: "[ cohort workshop — Auckland ]", img: "assets/cohort-workshop.avif" }, { n: "04", title: "What I won't do.", body: <>I won't promise a number. I won't sell you a course and ghost. I won't take you on if your product or budget isn't ready — I'll tell you straight, and tell you what to fix first., visual: "[ 1:1 — straight talk ]", img: "assets/jay-straight-talk.png" }]; const refs = useR([]); const [active, setActive] = useS(0); useE(() => { // Activate a chapter the moment its top crosses 1/3 down the viewport. // Stay active until the next chapter's top crosses the same line. const ACTIVATE_AT = 0.33; // 33% from top of viewport const onScroll = () => { const lineY = window.innerHeight * ACTIVATE_AT; let next = 0; refs.current.forEach((el, i) => { if (!el) return; const top = el.getBoundingClientRect().top; if (top <= lineY) next = i; }); setActive((prev) => prev === next ? prev : next); }; window.addEventListener("scroll", onScroll, { passive: true }); onScroll(); return () => window.removeEventListener("scroll", onScroll); }, []); return (
The story

How I got here, and why I coach.

Most "Amazon gurus" never built a brand. I spent four years selling before I taught a soul. That order matters.
chapter {String(active + 1).padStart(2, "0")} / 04

{(() => { const t = chapters[active].title; const i = t.indexOf(". "); return i === -1 ? t : t.slice(0, i + 1); })()}

scroll to read
{chapters.map((c, i) =>
refs.current[i] = el} data-idx={i} className={"chapter" + (i === active ? " is-active" : "")}>
{c.n}

{c.title}

{c.body}

{c.img && } {c.kind === "pledge" && } {c.visual}
)}
); } // ========================================================= // HERO PORTRAIT BLOCK — composed cream card that replaces // the old .hero__portrait. Scoped styles in hero-portrait-block.css. // ========================================================= function HeroPortraitBlock({ onBook }) { const months = [ { name: "Apr", state: "booked" }, { name: "May", state: "booked" }, { name: "Jun", state: "next" }, { name: "Jul", state: "open" }, { name: "Aug", state: "open" }, { name: "Sep", state: "open" }]; const HpbArrow = () => ; return (
Jay coaching 1:1
Booking June

"Three months in, my catalog was unrecognizable — not because we added, because we cut."

Tara V. · supplements brand
Jay coaching a workshop
Auckland · workshop, '26
1:1 availability
{months.map((m) => )}
); } Object.assign(window, { Hero, HeroPortraitBlock, Marquee, Press, Story, PledgeCard });