/* global React */ const { useState: useStateP, useEffect: useEffectP, useMemo: useMemoP } = React; // ===================== SOLUTIONS ===================== function SolutionsPage({ setPage }) { const [active, setActive] = useStateP("brand"); const sols = { brand: { n: "01", title: "Brand Launch", best: "Founders & teams who need a sharper digital starting point.", promise: "A site, a story, and a CTA structure that finally matches the ambition.", includes: ["Brand direction & messaging foundation", "Single or multi-page premium site", "Launch visuals & systemized assets", "CTA and conversion architecture", "Domain, hosting, analytics setup"], outcomes: ["Faster trust-building", "Higher conversion from first impression", "A foundation ads & outreach can rest on"], next: "wizard-full", }, content: { n: "02", title: "Content Engine", best: "Brands that need consistent monthly visibility.", promise: "A monthly engine that ships — with a calendar, the work, and a feedback loop.", includes: ["Monthly content calendar", "Branded visuals & reel concepts", "Captions & long-form support", "Publishing & scheduling", "Monthly performance reporting"], outcomes: ["Consistent publishing cadence", "Lower creative friction", "Compounding visibility & retention"], next: "wizard-full", }, growth: { n: "03", title: "Growth Infrastructure", best: "Operators who need the systems behind the brand.", promise: "Replace the manual drag with calm, structured operating workflows.", includes: ["Intake workflows & forms", "Approval systems & threading", "Scheduling & content automation", "Site/WordPress update workflow", "Reporting & ops support"], outcomes: ["Lower operational drag", "Faster execution cycles", "Cleaner handoffs between people, tools, & publishing"], next: "wizard-full", }, strat: { n: "04", title: "Strategic Support", best: "Founders who need senior direction without a full hire.", promise: "Decision-grade thinking on retainer — not slideware, not a strategy theatre.", includes: ["Offer & positioning work", "Quarterly growth planning", "Campaign direction", "Premium strategy sessions", "Asynchronous advisory access"], outcomes: ["Sharper priorities", "Better budget allocation", "Higher confidence in commercial direction"], next: "wizard-full", }, }; const s = sols[active]; return (
{/* Selector */}
Find your fit
{Object.entries(sols).map(([k, v]) => ( ))}
{/* Active solution panel */}
SOLUTION {s.n}

{s.title}

{s.promise}

BEST FOR
{s.best}
WHAT'S INCLUDED
    {s.includes.map(i => (
  • {i}
  • ))}
WHAT CHANGES AFTER THIS
    {s.outcomes.map((o, i) => (
  • {String(i+1).padStart(2,"0")} {o}
  • ))}
VISUAL / {s.n}
N° {s.n}28 — system snapshot
{/* Comparison table */}
Fit / matrix

Which one are you?

If the wizard feels like too much, this matrix gets you 80% of the way there.

Need
Solution
Outcome
CTA
{[ ["Stronger online foundation", "Brand Launch", "Sharper site & clarity", "Strategy call"], ["Consistent visibility", "Content Engine", "Publishing on cadence", "Start wizard"], ["Backend systems & workflows", "Growth Infrastructure", "Cleaner execution", "Request proposal"], ["Senior direction", "Strategic Support", "Better priorities", "Strategy call"], ].map((r, i) => (
{r[0]}
{r[1]}
{r[2]}
))}
); } // ===================== PROCESS ===================== function ProcessPage({ setPage }) { const steps = [ { n:"01", t:"Diagnose the gap", body:"Discovery prompts, an audit, business-state assessment. We map where the friction actually lives — not where it's loudest.", artifacts:["Audit document","Priority map","Gap diagnostic","Stakeholder interviews"] }, { n:"02", t:"Build the foundation", body:"Site structure, messaging, content arc, workflow design, decision framework. The operating layer is laid down before any production starts.", artifacts:["Wireframes","Messaging frame","Content plan","Workflow map"] }, { n:"03", t:"Produce and deploy", body:"USEus.pro produces and ships — assets, web pages, content, and operational systems — to the cadence we agreed.", artifacts:["Production view","Approval threads","Publishing logic","Live deployments"] }, { n:"04", t:"Review and improve", body:"Quarterly review: what worked, what didn't, what's next. The system compounds because it has a feedback loop, not a finish line.", artifacts:["Performance report","Optimization queue","Next-cycle plan","Renewal scope"] }, ]; return (
{steps.map((s, i) => (
{s.n}
STAGE

{s.t}

{s.body}

{s.artifacts.map(a => {a})}
))}
{/* Why this works */}
Why this works

Calm, repeatable,
compounding.

The cadence is the product. Anyone can ship one good thing once. The hard problem is shipping good work every quarter, without the system stalling.

{[ ["Faster alignment", "Decisions land in days, not weeks"], ["Clearer delivery", "Every artifact has a place"], ["Better consistency", "Cadence beats heroics"], ["Lower friction", "The drag goes to the engine"], ["Scalable execution", "Add capacity without chaos"], ].map(([t, s]) => (
{t}
{s}
))}
); } function StepVisual({ stage }) { if (stage === 0) { return (
AUDIT / SAMPLE
{["Brand clarity","Site conversion","Content cadence","Workflow load","Reporting loop"].map((l, i) => { const v = [40, 25, 18, 30, 12][i]; return (
{l}
{v}/100
); })}
); } if (stage === 1) { return (
WIRES / V0.4
5 / 9
{[1,2,3,4].map(i => (
FRAME {String(i).padStart(2,"0")}
))}
); } if (stage === 2) { return (
DEPLOY / LIVE
{[ { l:"Site v2 → production", s:"shipped", t:"04:12" }, { l:"Content batch wk 14", s:"shipped", t:"06:48" }, { l:"Intake automation v2", s:"in build", t:"—" }, { l:"Quarterly report", s:"queued", t:"—" }, ].map((r, i) => (
{r.l}
{r.s.toUpperCase()}
{r.t}
))}
); } return (
QUARTERLY / Q2
+62%
Lead form rate
5.2×
Publishing velocity
); } // ===================== ENGINE (Why USEus) ===================== function EnginePage({ setPage }) { return (
What it does

Six capability modules.
One operating layer.

{[ ["Content production","Brand-anchored, AI-assisted, human-finished. From calendar to caption to clip."], ["Site & page deployment","Always-on hosting, structured updates, premium delivery."], ["Workflow & automation","Intake, approvals, scheduling, content updates, ops scaffolding."], ["Approvals & threading","One thread per decision. Clear states, no inbox archaeology."], ["Publishing systems","Scheduled, channel-aware, retried, accounted-for."], ["Reporting & optimization","Quarterly cadence. Numbers that actually move the next loop."], ].map(([t, b], i) => (
{String(i+1).padStart(2,"0")}
{t}
{b}
))}
Why the structure matters

Most agencies are one freelance pool deep. Two of you off for a week and the cadence breaks. The engine layer is what makes it sustainable.

); } // ===================== PROOF ===================== function ProofPage({ setPage }) { const cases = [ { co:"Aurora Studio", tag:"BRAND LAUNCH", desc:"A creative studio with a clear voice but a confused site. We rebuilt the foundation in 18 days.", kpis:[["+62%","lead form rate"],["21d","to launch"],["3.4×","time on site"]], }, { co:"Northbound Co.", tag:"CONTENT ENGINE", desc:"From sporadic posts to 14 deliverables a week, on cadence, for two quarters and counting.", kpis:[["5.2×","publishing velocity"],["92%","on-time rate"],["+38%","reach"]], }, { co:"Halcyon Health", tag:"AUTOMATION", desc:"An intake-to-approval flow that used to take days. Now sub-hour, with cleaner records.", kpis:[["-78%","approval lag"],["0","missed launches"],["4 hrs/wk","ops freed"]], }, { co:"Meridian Capital", tag:"STRATEGIC", desc:"Quarterly advisory & positioning work for a financial advisory practice rebuilding for the next decade.", kpis:[["2x","close rate"],["Q4","new offer ship"],["+$420k","ARR"]], }, ]; return (
{cases.map((c, i) => (
CASE / 0{i+1}
N° {(i+1)*214} — {c.co}
{c.tag}
{c.tag}

{c.co}

{c.desc}

{c.kpis.map(([v, l]) => (
{v}
{l}
))}
))}
{/* Testimonials */}
From the operators
{[ ["The cadence stopped feeling like a thing I had to push.","Founder, Aurora Studio"], ["First agency that actually shipped to the date on the kickoff doc.","COO, Northbound Co."], ["I stopped being the bottleneck. That was the entire point.","Founder, Halcyon Health"], ].map(([q, who]) => (
"{q}"
—— {who}
))}
); } // ===================== ABOUT ===================== function AboutPage({ setPage }) { return (
The story

Most businesses aren't short on ideas. They're short on the system that turns the ideas into shipped work — week after week, quarter after quarter, without one person holding it together by force of will.

WhyCantI.ca is built to be the answer to that. It's the question every ambitious operator asks at 2am about the gap they can feel between where they are and where they could be. We close it with a system, not a sprint.

What we stand for
    {["Possibility","Momentum","Clarity","Execution","Compounding growth"].map((v, i) => (
  • {String(i+1).padStart(2,"0")}
    {v}
  • ))}
{/* Architecture */}
Architecture

The brand,
the engine.

You see the brand. The engine sits behind it — calmly running production, deployment, and reporting. That's the structure that makes the cadence sustainable.

); } // ===================== CONTACT ===================== const WEBHOOK_URL = "https://n8n.226.wtf/webhook/whycanti-lead"; function ContactPage({ setPage }) { const [form, setForm] = useStateP({ name:"", email:"", company:"", note:"" }); const [sent, setSent] = useStateP(false); const [submitting, setSubmitting] = useStateP(false); return (
{[ ["Strategy call","60 min, scoped agenda","wizard-full"], ["Proposal request","We send a structured scope","contact"], ["Partnerships","Co-build / referral","contact"], ["Long-term build","Quarterly engagements","wizard-full"], ].map(([t, s, p]) => ( ))}
Direct line

Send a brief.

{sent ? (
SENT — {new Date().toLocaleTimeString()}
Got it, {form.name.split(" ")[0] || "thanks"}.

You'll get a real reply inside 12 hours — not a calendly link.

) : (
{ e.preventDefault(); setSubmitting(true); fetch(WEBHOOK_URL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ source:"contact", ...form }), }).catch(() => {}).finally(() => { setSubmitting(false); setSent(true); }); }} style={{ display:"flex", flexDirection:"column", gap: 14 }}>
setForm({...form, name: e.target.value})}/> setForm({...form, email: e.target.value})}/>
setForm({...form, company: e.target.value})}/>