// Internal — Do Not Share
48-Hour Upgrade — Fulfillment SOP
Owner: Delivery Lead
Version: 1.0 — May 2026
Goal: Ship every 48h engagement on time, consistent quality, zero scope creep.
0. Definitions
- T0 — the moment the kickoff checklist is 100% complete. The 48-hour clock starts here, not at contract signature.
- Build window — T0 → T0 + 48h. Two contiguous business days.
- Polish window — one 4-hour revision block within 5 business days of delivery.
- Tier 01 / 02 / 03 — Launch Page ($2.4k) / Marketing Site ($4.8k) / Devtool Hub ($8.5k).
1. Pipeline Stages
Lead → Qualify → Scope Call → Contract → Kickoff (T0) → Build (48h) → QA → Deliver → Polish (4h) → Handover → 14-day Warranty
Every stage has a defined entry condition, exit condition, owner, and artifact.
2. Stage Details
2.1 Qualify (≤ 24h after inbound)
- Owner: Founder / sales
- Entry: New row in
leadstable or/checkscan with email captured. - Auto-reply fires via
lead-auto-reply. - Score: budget tier present? AI/devtool/agent ICP? Live URL?
- If hot (tier_02+ and ICP match), trigger
lead-hot-notification. - Exit: Lead tagged
qualifiedordisqualified.
2.2 Scope Call (30 min, Cal.com)
- 5 min — confirm ICP fit, current pain.
- 10 min — walk the readiness report (score + top 3 gaps).
- 10 min — propose tier + name a kickoff date.
- 5 min — answer pricing/process Qs; send contract link before hangup.
- Exit: Contract sent or explicit no.
2.3 Contract & Payment
PayPal checkout at /checkout. No design work begins before payment clears for tier_01/02. Tier_03 may start at 50% deposit. Exit: PayPal webhook → orders row.
2.4 Kickoff — Pre-T0 Checklist
The 48-hour clock does NOT start until every blocking box below is checked. Single biggest predictor of on-time delivery.
| # | Item | Source | Blocking? |
|---|---|---|---|
| 1 | Final copy (hero, sections, FAQ, footer) | Client Google Doc | Yes |
| 2 | Brand assets (logo SVG, hexes, fonts) | Client upload | Yes |
| 3 | 3–5 reference sites | Scope call notes | Yes |
| 4 | Hosting target + DNS access (or staging consent) | Client | Yes |
| 5 | Domain decision (final or temporary) | Client | No (warn) |
| 6 | Analytics + form destinations | Client | No |
| 7 | Legal pages (or use template) | Client | No |
Send the Kickoff Pack email the moment payment clears. Chase missing items every 24h. Do not start building partial scope — that is how 48h slips to 96h. Exit: checklist complete → orders.kickoff_at = now() → T0 starts.
2.5 Build Window — Phase A (Hours 0–6): Architecture
- Create repo from
grow-template-tier-{01|02|03}. - Draft route map and
head()metadata for every route. - Stub
llms.txt,robots.txt,sitemap.xml,rss.xml. - JSON-LD: Organization, WebSite, Service minimum; add Product, FAQPage, BreadcrumbList per tier.
- Checkpoint:
bun run buildis green.
Phase B (Hours 6–24): Design + Build
- Hero + 1 hero variant (A/B switch, off by default).
- Section order: hero → social proof → core value → features → pricing/CTA → FAQ → footer.
- Copy lives in route files or
src/content/, never inline. - Semantic tokens only. No hex in components.
- Checkpoint at hour 24: every section visible desktop + mobile, no Lorem.
Phase C (Hours 24–40): Agent-Readiness Pass
This is the differentiator. Do not skip.
- Single
<h1>per route, semanticsection/article/nav. - JSON-LD validates with zero errors.
llms.txtsummarizes site purpose + key URLs.- OpenGraph 1200×630 per route;
twitter:card = summary_large_image. - Canonical tag on every route.
sitemap.xmlincludes every public route withlastmod.- Lighthouse mobile: SEO ≥ 95, A11y ≥ 95, Perf ≥ 85.
- Internal
/checkscore ≥ 85 on staged URL.
Phase D (Hours 40–48): QA + Deploy
bun run build— zero warnings.- Click every CTA, form, external link (new tab +
rel="noopener"). - Test forms end-to-end: Supabase row + confirmation email + hot-lead ping.
- Real-device test: iPhone Safari + Android Chrome.
- Deploy to client host. Verify DNS, SSL, www redirect.
- Verify analytics fires on production.
- Exit: Live URL, all green,
orders.delivered_atlogged.
2.6 Delivery Email (T0 + 48h sharp)
- Live URL.
- GitHub repo invite.
- Loom walkthrough ≤ 5 min: edit copy, deploy, forms, analytics.
- Polish Form (Typeform/Cal) — deadline: 5 business days.
- Warranty terms (14 days, genuine bugs only).
2.7 Polish Window (one 4-hour block)
Collect ALL revision notes in writing BEFORE the block starts. No live "while you're in there" additions. Out of scope (quote separately): new sections, new routes, copy rewrites > 30%, new integrations, new design directions. Exit: client sign-off OR auto-close at day 5 of silence.
2.8 14-Day Warranty
Free: genuine bugs, broken links, regressions caused by us. Not free: new requests, content changes, third-party breakage. Log every fix in orders.warranty_log.
3. Quality Bars (non-negotiable)
A build cannot ship unless ALL are true:
bun run buildpasses, zero TS errors.- Internal
/checkscore ≥ 85. - Lighthouse mobile: SEO ≥ 95, A11y ≥ 95, Perf ≥ 85.
- No
console.errorin production. - Every route: unique
<title>and meta description < 160 chars. - Every image has
alt. Every input has<label>. - No
localhost,lorem,placeholder,TODOin shipped HTML.
4. Roles & RACI
| Activity | Founder | Builder | Ops |
|---|---|---|---|
| Qualify lead | A/R | — | C |
| Scope call | A/R | C | — |
| Contract + invoice | A | — | R |
| Kickoff pack | A | C | R |
| Build (48h) | C | A/R | — |
| QA pass | A | R | — |
| Deploy | C | A/R | — |
| Delivery email | A | C | R |
| Polish block | C | A/R | — |
| Warranty | C | A/R | — |
R = responsible, A = accountable, C = consulted.
5. Tooling — Where Things Live
| Concern | Tool / Location |
|---|---|
| Leads, orders, scans | Supabase (leads, orders, scans) |
| Payments | PayPal — /checkout |
| Calls | Cal.com — cal.com/grow-contact/intro |
| Server routes under /lovable/email/* | |
| Internal templates | grow-template-tier-{01|02|03} repos |
| Site QA | /check + Lighthouse CI |
| Deploys | Client hosting; we hold no prod secrets |
6. Failure Modes & Mitigations
| Failure | Cause | Mitigation |
|---|---|---|
| 48h slips | Started without full kickoff pack | Refuse to start T0; document gating items |
| Polish balloons | No written revision list | Force Typeform submission before block |
| Client ghosts mid-build | No async checkpoint | Send hour-24 preview link + Loom |
| Warranty abuse | 'Bug' is a new feature | Refer to written warranty terms |
| Copy rewrites loop | Copy not signed off at kickoff | Mark copy FINAL in writing before T0 |
| Lighthouse regresses on deploy | Client host config differs | Deploy then re-run Lighthouse on prod |
7. Continuous Improvement
After every project: 15-minute retro logged in retros/YYYY-MM-DD-{client}.md. Anything that slipped goes into either the kickoff checklist (client input), the QA checklist (build miss), or this SOP (process gap). Bump the version number at the top whenever the process changes.
Source: docs/sop-48h-upgrade.md
This page is noindex and not linked from public nav.