/* global React, Reveal, ArrowGlyph */ const { useState: useS, useEffect: useE, useRef: useR } = React; // ========================================================= // HERO // ========================================================= function Hero({ layout, headline, onBook, quoteAvatar, bookLabel = "Book a discovery call", eyebrow, showOfferTag = true, availLabel }) { // Each headline option is an array of (string | { em: string }) tokens for inline italics. const HEADLINES = { a: [ "You don't want an Amazon business. You want ", { em: "your life back." }], b: [ "Build the business. ", { em: "Get your life back." }], c: [ "The boring, honest way to ", { em: "buy back your time." }] }; const tokens = HEADLINES[headline] || HEADLINES.a; return (
{layout === "asym" &&
since 2018
$84M+
student GMV coached
cohorts run
41
across 6 years
}
{eyebrow || <>Amazon FBA coach  ·  1:1  ·  group}
Recognised as one of NZ's “Amazon champions” by Amazon Global Selling

{tokens.map((t, i) => { if (typeof t === "string") return {t}; if (t.em) return {t.em}; if (t.note) return ( {t.note} ); return null; })}

Build the business. Get your life back. No hype, just the honest way out.

You're good at what you do. You just can't picture doing it forever. A real Amazon business can be the way out — your time back, on your terms. I'm Jay, and I'll show you the honest path there: no fantasy timelines, just the next right move.

{ e.preventDefault(); const el = document.getElementById("method"); if (el) window.scrollTo({ top: el.getBoundingClientRect().top + window.pageYOffset, behavior: "smooth" }); }}> See how I work

{showOfferTag && 1:1 Coaching} We build and launch it together — all the way to your first sale, and beyond.

3,000+ Sellers taught — 1:1, cohort & online
12
Years, same craft
on Amazon, since 2014
300+
Coached 1:1
by application only
90%
1:1 students
1st sale in 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 (
where I show up
YouTube
Skool
NZ Amazon Community
Meetup
LaunchYou
); } // ========================================================= // VENTURES strip — "what I run" // ========================================================= function Ventures() { const items = [ { tag: "Course", name: "EcomXperts", desc: "Amazon FBA, dropshipping, print on demand, ebooks & Amazon affiliate." }, { tag: "Consulting", name: "SellerCentral.Consulting", desc: "Hands-on Seller Central support for established brands that need a fix." }, { tag: "Community", name: "Selling on Amazon New Zealand", desc: "The largest Amazon seller community in New Zealand, by a distance." }, ]; return (
what I run
{items.map((v, i) => (
{v.tag}
{v.name}

{v.desc}

))}
); } // ========================================================= // 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: "Before Amazon, before I could drive — I was already designing products.", body: <>My first product design class at 14 — Year 10 Graphics, Mt. Roskill Grammar, 2004. Brief, research, sketches, final solution. Before any algorithm, I was already obsessed with what makes someone pick a thing up off the shelf., visual: "[ mt. roskill grammar · yr 10 graphics · 16/10/04 ]", kind: "scrap-school" }, { n: "02", title: "Seven years on a real shop floor.", body: <>I sold electronics on the floor at Dick Smith for seven years. Real shelves, real buyers, real margins, real returns. The stuff Amazon makes invisible. That's where I learned what a real brand actually feels like in someone's hands., visual: "[ dick smith · 7 years on the floor ]", kind: "scrap-retail" }, { n: "03", title: "Then I chased every shiny object online.", body: <>Affiliate marketing, a web agency, an SEO agency, AI chat funnels back in 2015, blogging, video — I gave each a real go. Amazon is the only one that actually replaced my income. Not the only model that works — the best odds for a normal person with a job. I learned that the expensive way, so you don't have to., visual: "[ grind days · whiteboard office ]", img: "assets/jay-grind-days.jpg" }, { n: "04", title: "Three years selling on Amazon — before I taught a soul.", body: <>My first big break: 1,000 units sold online in 30 days, back in 2015. Plenty of ups and downs since — multiple brands across kitchen & dining and electronics, two exits. The expensive mistakes taught me more than the wins — what works, what doesn't, how to sell properly. Everything I teach, I shipped first., visual: "[ early storefront — 2015 ]", img: "assets/early-storefront.png", receipt: "assets/first-1000-sales.jpg", pos: "top left" }, { n: "05", 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 get stuck watching videos, never making the next move. They quit at the first mistake and doubt the whole journey. They make every move in the wrong order. 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: "06", title: "So I built the coaching I wish I'd had before my first sale.", body: <>Direct, patient, no-bro-energy. 1:1 to fix your specific mess. Group programs to compress 18 months of learning into 12 weeks. No fluff modules. I take the complicated and make it simple — clear steps you can act on, in the right order., visual: "[ cohort workshop — Auckland ]", img: "assets/cohort-workshop.avif" }, { n: "07", 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. What I will do? Get you across the line — your first real sale., 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" only know Amazon. I designed products in school and university, sold on retail shelves for seven years, then spent three years on Amazon — before I taught a soul. That order matters.
chapter {String(active + 1).padStart(2, "0")} / {String(chapters.length).padStart(2, "0")}

{(() => { 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.receipt &&
Amazon Seller Central sales summary — 1,000 units in 30 days
} {c.kind === "pledge" && } {c.kind === "scrap-school" && <>
Research page — product references and teacher's grade
Original Year 10 Graphics brief — Mt. Roskill Grammar, 2004
Final solution sketch — clock radio
Concept sketch — digital clock radio reading 9:05 AM
Jay, age 14, drawing at his desk in Year 10 Graphics that's me — age 14 ✎
} {c.kind === "scrap-retail" && <>
Dick Smith Electronics storefront
8 yrs · this shelf
} {c.visual}
)}
); } // ========================================================= // HERO PORTRAIT BLOCK — composed cream card that replaces // the old .hero__portrait. Scoped styles in hero-portrait-block.css. // ========================================================= function HeroPortraitBlock({ onBook, quoteAvatar, availLabel = "1:1 availability" }) { // Availability rolls forward automatically with the calendar month. // Window = current month ± (2 past · current · 3 future): // past months → "booked" (filled, checked) // current month → "next" (highlighted — the one you book now) // future months → "open" (hollow) // In June this reproduces Apr/May booked · Jun next · Jul–Sep open, // then advances on its own each month — no manual edits needed. const ABBR = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; const FULL = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; const curMonth = new Date().getMonth(); const months = [-2, -1, 0, 1, 2, 3].map((off) => { const idx = (curMonth + off + 24) % 12; return { name: ABBR[idx], state: off < 0 ? "booked" : off === 0 ? "next" : "open" }; }); const curFull = FULL[curMonth]; const curAbbr = ABBR[curMonth]; const HpbArrow = () => ; return (
Jay with a client on the beach
Open for {curFull}

"Today was the biggest day — sold 28 units. It would have never happened if I had not invested in Jay."

{quoteAvatar && Billy M.} Billy M. · New Zealand
Jay coaching a workshop
Auckland · workshop
{availLabel}
{months.map((m) => )}
); } Object.assign(window, { Hero, HeroPortraitBlock, Marquee, Press, Ventures, Story, PledgeCard });