// M08 — Pricing + Checkout const Pricing = ({ setPage }) => { const [billing, setBilling] = React.useState('monthly'); const [plan, setPlan] = React.useState('studio'); const tiers = [ { id:'starter', name:'Starter', tag:'For solo founders', m:1500, y:14400, accent:'#7c9bff', headline:'A focused build, fixed scope.', desc:'A landing page, a marketing site, or a quick rebuild — scoped, designed, shipped in 2 weeks.', features:[ ['Up to 5 pages', true], ['Design + build', true], ['Basic CMS setup', true], ['Stripe + Resend hookup', true], ['90-day support', true], ['Custom AI integration', false], ['Dedicated engineer', false], ['SLA', false], ] }, { id:'studio', name:'Studio', tag:'For funded teams', m:6500, y:62400, accent:'#d4ff3a', featured:true, headline:'A real product build.', desc:'Web app, dashboard, or AI-native product. Dedicated team, two-week sprints, weekly demos.', features:[ ['Everything in Starter', true], ['Web app / dashboard', true], ['Full CMS + admin', true], ['AI integration', true], ['Auth + payments', true], ['Dedicated engineer', true], ['12-month support', true], ['Custom SLA', false], ] }, { id:'company', name:'Company', tag:'For scaling teams', m:18500, y:177600, accent:'#a78bfa', headline:'Embedded engineering team.', desc:'2–4 engineers dropped into your stack. Runs alongside your team for a quarter or longer.', features:[ ['Everything in Studio', true], ['2–4 dedicated engineers', true], ['Embedded in your repo', true], ['Custom SLA (4h response)', true], ['Architecture review', true], ['Quarterly strategy', true], ['Code ownership transfer', true], ['On-call rotation', true], ] }, ]; return (
{/* Hero */}
Pricing · transparent, fixed-scope

Three ways to work together.

No hourly billing. No surprise invoices. Pick a tier, sign the scope, and we ship.

{/* Billing toggle */}
{['monthly','annual'].map(b => ( ))}
{/* Pricing cards */}
{tiers.map(t => (
setPlan(t.id)} className="clickable" style={{ padding:'32px 32px 28px', borderRadius:'var(--radius)', border:'1px solid', borderColor: t.featured ? 'var(--accent)' : 'var(--line)', background: t.featured ? 'linear-gradient(180deg, rgba(212,255,58,0.06), var(--bg-2))' : 'var(--bg-2)', position:'relative', transform: t.featured ? 'translateY(-12px)' : 'none' }}> {t.featured && (
MOST POPULAR
)}
{t.name}
{t.tag.toUpperCase()}
{t.name[0]}
${(billing==='monthly' ? t.m : t.y/12).toLocaleString(undefined,{maximumFractionDigits:0})} / {billing==='monthly' ? 'project' : 'month'}
{billing==='annual' ? `$${t.y.toLocaleString()} billed annually` : 'fixed-scope, paid 50/50'}
{t.desc}
{t.headline.toUpperCase()}
    {t.features.map(([l,on],i) => (
  • {on ? Icon.check() : '○'} {l}
  • ))}
))}
{/* Comparison table */}

Full comparison.

Everything in every tier, side-by-side.

FEATURE
{tiers.map(t => (
{t.name}
))}
{[ ['Discovery workshop','30 min','2 hrs','2 days'], ['Design system','Light','Full','Full + tokens'], ['Pages / screens','Up to 5','Up to 25','Unlimited'], ['CMS','Basic','Full admin','Full + custom collections'], ['Auth & payments','—','Stripe + standard','Stripe Connect, multi-tenant'], ['AI integration','—','✓','✓ + custom evals'], ['Dedicated engineer','—','1','2–4'], ['Support window','90 days','12 months','Ongoing'], ['Response SLA','Best effort','24h','4h business hours'], ['Code handoff','✓','✓','✓ + training'], ].map((row,i) => (
{row[0]} {row.slice(1).map((v,j) => ( {v} ))}
))}
{/* Checkout preview */}
Checkout · powered by Stripe

Pay, sign, kick off — in two minutes.

Pick a tier, e-sign the SOW, pay the 50% deposit. The project kicks off the next business day with a calendar invite to your first standup.

    {[ '50% deposit at signing, 50% at handoff', 'Card, ACH, or wire — your choice', 'PCI Level 1 compliant via Stripe', 'Money-back if we miss the launch date', ].map(l => (
  • {Icon.check()}{l}
  • ))}
{/* Checkout mockup */} t.id===plan) || tiers[1]} billing={billing}/>
{/* FAQ */}
FAQ

Questions, answered.

{[ ['What if my project needs more than the tier covers?','We re-scope. We never let projects drift past the SOW — instead, we pause and write a Change Order with the new scope and new price. You approve before we proceed.'], ['Do you offer hourly contracts?','No. Fixed-scope only. Hourly billing aligns the wrong incentives — we get rewarded for slowness. Fixed-scope means we ship fast or we lose money.'], ['What happens after the project ships?','Every tier includes a support window (90 days / 12 months / ongoing). Bug fixes are free. New features are quoted separately.'], ['Can I pay in installments?','Yes — Starter & Studio are 50/50 by default. Company is monthly retainer. Custom arrangements via Stripe Invoicing if you need NET-30.'], ['Do you sign NDAs?','Yes, before discovery. We have a standard mutual NDA we can send, or sign yours.'], ].map(([q,a],i)=>(
{q} +

{a}

))}
); }; const CheckoutMock = ({ tier, billing }) => { const price = billing==='monthly' ? tier.m : tier.y/12; const subtotal = price; const tax = Math.round(price * 0.08); const total = subtotal + tax; return (
STRIPE Secure checkout · 256-bit TLS
×
{/* Order */}
Order
{tier.name} · {billing}
${price.toLocaleString(undefined,{maximumFractionDigits:0})}
{tier.tag}
{/* Card */}
Card details
4242 4242 4242 4242
VISA
12 / 28
•••
{/* Summary */}
{[['Subtotal',subtotal],['Tax (8%)',tax]].map(([l,v]) => (
{l}${v.toLocaleString()}
))}
Total due today ${Math.round(total*0.5).toLocaleString()}
50% deposit · remainder at handoff
By continuing you agree to the SOW & terms.
); }; window.Pricing = Pricing;