/* ===================== INDUSTRY PICKER + QUIZ ===================== */ function Industries() { const [mode, setMode] = React.useState("industry"); // industry | quiz const switchToQuiz = () => { setMode("quiz"); setTimeout(() => { const el = document.getElementById("industries"); if (el) el.scrollIntoView({ behavior: "smooth", block: "start" }); }, 0); }; return (
Which one sounds like you?

Start where you are.

Pick your industry or take the 30-second quiz. We'll point you in the right direction — no pressure, no sales-y stuff.

{mode === "industry" ? : }
); } function IndustryGrid({ onStart }) { const [hovered, setHovered] = React.useState(null); const tierFor = (id) => TIERS.find((t) => t.id === id); return (
{INDUSTRIES.map((ind) => { const tier = tierFor(ind.tier); return (
setHovered(ind.id)} onMouseLeave={() => setHovered(null)} onClick={onStart} role="button" tabIndex={0} >
{ind.img ? {ind.label} : React.createElement(Icon[ind.icon])}

{ind.label}

{ind.sub}

Likely fit · {tier.label}
); })}
); } const QUIZ_QUESTIONS = [ { q: "Where are you today?", options: [ { l: "Don't have a website (or it's awful)", v: { launch: 3 } }, { l: "Have a site but it's not bringing customers", v: { grow: 3, launch: 1 } }, { l: "Drowning in admin / spreadsheets", v: { scale: 3 } }, { l: "Doing fine — looking for an edge", v: { "adopt-ai": 3, scale: 1 } }, ], }, { q: "What would help most right now?", options: [ { l: "Be findable on Google", v: { launch: 2, grow: 1 } }, { l: "More leads / bookings", v: { grow: 3 } }, { l: "Less paperwork", v: { scale: 3 } }, { l: "Save hours every week", v: { "adopt-ai": 3, scale: 1 } }, ], }, { q: "Budget you're comfortable with?", options: [ { l: "Under £1,000", v: { launch: 2 } }, { l: "£1,000–£3,000", v: { grow: 2, "adopt-ai": 1 } }, { l: "£3,000–£7,500", v: { scale: 2, "adopt-ai": 1 } }, { l: "Whatever it takes — get it right", v: { scale: 2, "adopt-ai": 2 } }, ], }, ]; function Quiz() { const [step, setStep] = React.useState(0); const [scores, setScores] = React.useState({ launch: 0, grow: 0, scale: 0, "adopt-ai": 0 }); const choose = (opt) => { const next = { ...scores }; Object.entries(opt.v).forEach(([k, v]) => (next[k] = (next[k] || 0) + v)); setScores(next); setStep(step + 1); }; // Persist result so the contact form can pre-fill — must be before any early return React.useEffect(() => { if (step >= QUIZ_QUESTIONS.length) { const winner = Object.entries(scores).sort((a, b) => b[1] - a[1])[0][0]; const tier = TIERS.find((t) => t.id === winner); try { localStorage.setItem("smbe_quiz", JSON.stringify({ id: winner, label: tier.label, ts: Date.now() })); } catch(e) {} } }, [step]); if (step >= QUIZ_QUESTIONS.length) { const winner = Object.entries(scores).sort((a, b) => b[1] - a[1])[0][0]; const tier = TIERS.find((t) => t.id === winner); return (
Your recommended starting point

Start with {tier.label}.

{tier.headline} {tier.blurb}

See {tier.label} plan
How you scored
{Object.entries(scores).map(([k, v]) => { const t = TIERS.find((t) => t.id === k); const max = Math.max(...Object.values(scores)); return (
{t.label} {v}
); })}
); } const cur = QUIZ_QUESTIONS[step]; return (
{QUIZ_QUESTIONS.map((_, i) => (
))} Question {step + 1} of {QUIZ_QUESTIONS.length}

{cur.q}

{cur.options.map((opt, i) => ( ))}
); } window.Industries = Industries;