const { useEffect, useMemo, useRef, useState, useCallback } = React; // ========================================================= // useIsMobile hook // ========================================================= function useIsMobile() { const [mobile, setMobile] = useState(() => typeof window !== "undefined" && window.innerWidth < 768); useEffect(() => { const check = () => setMobile(window.innerWidth < 768); window.addEventListener("resize", check); return () => window.removeEventListener("resize", check); }, []); return mobile; } // ========================================================= // VIDEO MODAL // ========================================================= function VideoModal({ onClose }) { const [visible, setVisible] = useState(false); useEffect(() => { const t = setTimeout(() => setVisible(true), 30); const onKey = (e) => e.key === "Escape" && dismiss(); window.addEventListener("keydown", onKey); return () => { clearTimeout(t); window.removeEventListener("keydown", onKey); }; }, []); const dismiss = () => { setVisible(false); setTimeout(onClose, 350); }; return ( <>
e.stopPropagation()} style={{ width: "min(900px, 92vw)", opacity: visible ? 1 : 0, transform: visible ? "scale(1) translateY(0)" : "scale(0.96) translateY(16px)", transition: "opacity .4s ease, transform .4s cubic-bezier(.2,.8,.2,1)", }} > {/* Video frame */}
{/* Placeholder — swap src for real embed */}
[ VIDEO PLACEHOLDER — EMBED YOUR LOOM / VIMEO / YOUTUBE ]
{/* Caption row */}
How The Exitable Business System Works
12 MIN · THE FULL WALKTHROUGH
Close Explore the system
); } // ========================================================= // WATCH BTN — opens video modal // ========================================================= function WatchBtn() { const [open, setOpen] = useState(false); return ( <> {open && setOpen(false)} />} ); } // ========================================================= // NAV // ========================================================= function Nav() { const [scrolled, setScrolled] = useState(false); const [menuOpen, setMenuOpen] = useState(false); const isMobile = useIsMobile(); useEffect(() => { const s = () => setScrolled(window.scrollY > 24); s(); window.addEventListener("scroll", s, { passive: true }); return () => window.removeEventListener("scroll", s); }, []); return ( <>
EXITABLE {isMobile ? (
Book a call
) : ( <> Book a call )}
{/* Mobile dropdown menu */} {isMobile && (
{[["How we do it","#method"],["Work with us","#program"],["FAQ","#faq"]].map(([label,href]) => ( setMenuOpen(false)} style={{ fontSize: 18, fontWeight: 600, padding: "14px 0", borderBottom: "1px solid var(--rule)", color: "var(--fg)", letterSpacing: "-0.01em" }}> {label} ))}
)}
); } function LogoMark() { return ( ); } // ========================================================= // HERO — MANIFESTO (default, bold typographic) // ========================================================= function HeroManifesto() { const isMobile = useIsMobile(); if (isMobile) { return (
For owner-led businesses doing £5M–£75M

Build a business that runs without you.

We help owners step out of the day-to-day, grow profit, and build a business that no longer depends on them — so it's worth more and easier to exit when the time is right.

Book a strategy call See how it works
{/* Mobile info strip — 2 col */}
{[ { t: "Built for owner-led businesses", d: "For companies where too much depends on the founder" }, { t: "£5M–£75M revenue focus", d: "Where owner-dependency and missed profit becomes costly" }, { t: "Choose your starting point", d: "Audit, sprint, 12-month programme, or growth support" }, { t: "Implementation, not just advice", d: "Clear scope, hands-on delivery, measurable progress" }, ].map((s, i) => (
{s.t}
{s.d}
))}
); } return (
For owner-led businesses doing £5M–£75M

Build a business that runs without you.

We help owners step out of the day-to-day, grow profit, and build a business that no longer depends on them — so it's worth more and easier to exit when the time is right.

Book a strategy call See how it works
{[ { t: "Built for owner-led businesses", d: "For companies where too much still depends on the founder" }, { t: "£5M–£75M revenue focus", d: "Where owner-dependency, wasted time, and missed profit becomes costly" }, { t: "Choose your starting point", d: "Audit, 90-day sprint, 12-month programme, or strategic growth support" }, { t: "Implementation, not just advice", d: "Clear scope, hands-on delivery, and measurable progress" }, ].map((s, i) => (
{s.t}
{s.d}
))}
); } // ========================================================= // HERO — CALCULATOR // ========================================================= function HeroCalculator() { const [rev, setRev] = useState(12); // £M const [margin, setMargin] = useState(14); // % const [mult, setMult] = useState(5); const ebitda = (rev * margin) / 100; const value = ebitda * mult; const upliftVal = value * 2.4; return (
Calculate your exit · live

What's your business actually worth?

Most owners under-price their own company by 40–60%. Move the sliders. See what a buyer sees — and what we can build it into.

Book a strategy call How we do it
VALUATION MODEL · SIMPLIFIED
TODAY
£{value.toFixed(1)}M
AFTER 18 MO.
£{upliftVal.toFixed(1)}M
BASED ON MEDIAN 2.4× UPLIFT · COHORT 2022–2026
); } function CalcSlider({ label, unit, min, max, step, value, onChange }) { return (
{label} {unit === "£M" ? "£" : ""}{value.toFixed(unit === "×" || unit === "%" ? 1 : 1)}{unit === "£M" ? "M" : unit}
onChange(+e.target.value)} style={{ width: "100%", appearance: "none", height: 4, background: `linear-gradient(to right, var(--accent) 0 ${((value - min) / (max - min)) * 100}%, var(--rule-2) ${((value - min) / (max - min)) * 100}% 100%)`, borderRadius: 999, outline: "none", }} />
); } // ========================================================= // HERO — STACK (side-by-side pillars) // ========================================================= function HeroStack() { const pillars = [ { l: "SYSTEMS", t: "Everything your team does, written down and measured." }, { l: "LEADERSHIP", t: "A team that makes decisions without calling you." }, { l: "AI", t: "Automating the 40% of work that shouldn't be a human's job." }, ]; return (
For owner-led businesses · £5M – £75M

Your business shouldn't need you in it.

Three mechanisms. One outcome: a business that's more profitable, less dependent on you, and sellable whenever you want.

Book a call
{pillars.map((p, i) => (
0{i + 1} · {p.l}
{p.t}
))}
); } // ========================================================= // TICKER // ========================================================= function Ticker() { const isMobile = useIsMobile(); const items = ["GROW PROFIT", "CUT OPERATIONAL DRAG", "AUTOMATE REPETITIVE WORK", "REDUCE OWNER DEPENDENCY", "BUILD A BUSINESS THAT RUNS BETTER", "EXIT ON YOUR TERMS"]; const row = [...items, ...items, ...items]; const fontSize = isMobile ? 22 : 40; const gap = isMobile ? 24 : 40; return (
{row.map((t, i) => ( {t} ))}
); } // ========================================================= // PROBLEM // ========================================================= function Problem() { const isMobile = useIsMobile(); const bullets = [ "The business stalls every time you take a week off.", "You're the bottleneck for every meaningful decision.", "Profit margin hasn't improved for several years.", "The value of your business is dependent on you.", "Team productivity levels could be higher.", "You have no effective succession or exit plan.", ]; if (isMobile) { return (
The problem

You built a job,
not a business.

Be honest. Does any of this sound familiar? If so, your business is built around you. But it's fixable.

    {bullets.map((b, i) => (
  • 0{i + 1} {b}
  • ))}
); } return (
The problem

You built a job,
not a business.

Be honest. Does any of this sound familiar? If so, your business is built around you. But it's fixable.

    {bullets.map((b, i) => (
  • 0{i + 1} {b}
  • ))}
); } // ========================================================= // METHOD — 3 PILLARS // ========================================================= function Method() { const isMobile = useIsMobile(); const pillars = [ { n: "01", kicker: "PROCESS IMPROVEMENT", title: "Make your business frictionless.", body: "We remove the friction that wastes time in your business — broken handoffs, unclear ownership, and operational drag. So the business runs faster, cleaner, and with less coming back to you." }, { n: "02", kicker: "GROWTH SYSTEMS", title: "Automate the work that doesn't need humans.", body: "We automate the repetitive work that should never need human involvement - just human approval. And only add AI where better intelligence creates better outcomes. The result is a business that works faster, thinks smarter, and gives your team more capability without adding more headcount." }, { n: "03", kicker: "AUTONOMOUS LEADERSHIP", title: "Build a team that makes decisions without you.", body: "We build the confidence, clarity, and information flow for decisions to be made at the right level — and made consistently. So the business keeps moving, your team takes real ownership, and you stop being the default answer to everything." }, ]; const [open, setOpen] = useState(0); if (isMobile) { return (
How We Do It

3 ways we make your business less dependent on you...

{pillars.map((p, i) => (

{p.body}

))}
); } return (
How We Do It

3 ways we make your business less dependent on you...

{pillars.map((p, i) => { const active = open === i; return ( ); })}
); } // ========================================================= // PROOF — quote + logos + case study numbers // ========================================================= function Proof() { return (
Proof · not pitch
"I took six weeks off for the first time in eleven years. Revenue went up. A year later we sold for 3.1× what the company was worth when we started."
Daniel Morris
FOUNDER · WILDGRAIN (SOLD 2025)
{[ { k: "Revenue", v: "£8.2M → £14.6M" }, { k: "EBITDA", v: "9% → 22%" }, { k: "Founder hrs/wk", v: "68 → 14" }, { k: "Exit multiple", v: "3.1×" }, ].map((m, i) => (
{m.k.toUpperCase()}
{m.v}
))}
SELECTED OWNERS WE'VE WORKED WITH
{["WILDGRAIN", "NORTHWIND", "HELIX", "LONGWAVE", "FORMAT", "ASCENT", "MERIDIAN", "CIPHER"].map((x, i) => ( {x} ))}
); } // ========================================================= // PROGRAM — what's included // ========================================================= function Program() { const isMobile = useIsMobile(); const items = [ { t: "Audit", d: "Find the real constraint. A rapid diagnostic to show where profit is leaking, where the owner is still the bottleneck, and what to fix first. Included is an audit of AI usage in your business." }, { t: "90-Day Sprint", d: "A focused sprint to improve the way the business runs, reduce day-to-day founder reliance, and create measurable gains in profit, capacity, and control. Get quick wins where they matter most." }, { t: "12-Month Build", d: "Build a business that runs better without you. We work hands-on across systems, leadership, and automation to embed better decision-making, stronger reporting, and a more scalable operating model." }, { t: "Strategic Growth & Exit Readiness", d: "Turn a better business into a more valuable one. Once the foundations are in place, we help you prepare for exit, or explore growth through acquisition, partnerships, or other strategic options." }, ]; if (isMobile) { return (
4 ways to work with us

4 WAYS TO work with us.

{items.map((it, i) => (
0{i + 1}
{it.t}
{it.d}
))}
Find out more
); } return (
4 ways to work with us

4 WAYS TO work with us.

{items.map((it, i) => ( ))}
Find out more
); } function ProgramRow({ n, t, d, last }) { const [hover, setHover] = useState(false); return (
setHover(true)} onMouseLeave={() => setHover(false)} style={{ display: "grid", gridTemplateColumns: "80px 1.2fr 2fr 56px", gap: 24, padding: "28px 32px", borderBottom: last ? 0 : "1px solid var(--rule-2)", background: hover ? "var(--accent)" : "transparent", color: hover ? "var(--accent-ink)" : "var(--fg)", transition: "background .25s ease, color .25s ease", alignItems: "center", cursor: "pointer", }} > 0{n} {t} {d}
); } // ========================================================= // FAQ // ========================================================= function FAQ() { const isMobile = useIsMobile(); const qs = [ { q: "Who is this for?", a: "Owner-led businesses doing £5M\u2013£75M in revenue, where the owner is still the bottleneck and wants to change that \u2014 whether or not an exit is on the horizon." }, { q: "How long do results take?", a: "The audit delivers actionable next steps within 48 hours. For the 90-Day Sprint and the flagship 12-Month Build, most owners start seeing results within the first 4\u20136 weeks." }, { q: "What does it cost?", a: "Pricing depends on your company size, complexity, and current systems. We'll walk through exact investment and ROI on your Strategy Call. What we can tell you: this pays for itself quickly through better processes and faster growth. Most business owners wish they'd done this earlier." }, { q: "Is this an AI consultancy?", a: "Designing and implementing AI and automation systems is one of several capabilities we provide. Our expertise is creating high-value companies that operate without operational involvement from the owners." }, { q: "Do I have to sell the business?", a: "No. 'Exitable' means optionality \u2014 a business where you become less operational and that's ready whenever you are. Many of our partners and clients never sell. They just stop being trapped." }, ]; const [open, setOpen] = useState(0); return (
{isMobile ? ( <> Questions

Things owners ask first.

) : (
Questions

Things owners ask first.

)}
{qs.map((f, i) => (
{f.a}
))}
); } // ========================================================= // CTA / BOOK A CALL (form) // ========================================================= function Call() { const isMobile = useIsMobile(); const [f, setF] = useState({ name: "", email: "", company: "", revenue: "5-10", goal: "grow", note: "" }); const [err, setErr] = useState({}); const [sent, setSent] = useState(false); const u = (k) => (e) => setF({ ...f, [k]: e.target.value }); const submit = (ev) => { ev.preventDefault(); const e = {}; if (!f.name.trim()) e.name = "required"; if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(f.email)) e.email = "needs an email"; if (!f.company.trim()) e.company = "required"; setErr(e); if (Object.keys(e).length === 0) setSent(true); }; const formBlock = (
{!sent ? (
setF({ ...f, revenue: v })} options={[["u5","Under £5M"],["5-10","£5–10M"],["10-25","£10–25M"],["25-50","£25–50M"],["50-75","£50–75M"],["75+","£75M+"]]} /> setF({ ...f, goal: v })} options={[["revenue","Increase revenue or reduce costs"],["free","Get my time back"],["automate","Automate specific high-value tasks"],["exit","Prep for exit"],["valuation","Increase valuation"],["all","All of the above"]]} />
CONTEXT (OPTIONAL)