/* ===================== 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
?

: 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 (
);
})}
);
}
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;