Delivery Playbook: The Repaint Recipe & Scope Ladder
Process Β· biz/process/02-delivery-recipe.md

Delivery Playbook: The Repaint Recipe & Scope Ladder

How we actually build and ship a client engagement β€” the repeatable recipe, staged so we can serve a client who wants a little or a lot. Operational playbook β€” derived from Business model + DECISIONS.md (settled) + Brand strategy.


The recipe in one breath

We have one recipe with five optional, separately-priced stages. The spine: take the client's current site and rebuild it faithfully on a modern stack β€” same look, same content, but faster, mobile, and owned β€” then offer to go further only if the client wants to. Different clients want different amounts of work, so each stage is a deliberate yes/no with its own price.

Stage 0  Discovery / Signal Audit   β†’  the opportunity map (+ optional on-spec preview)
Stage 1  Faithful Repaint  β˜…DEFAULT  β†’  the existing site, rebuilt 1:1 β€” this is the Repaint package
Stage 2  Options round               β†’  auto-generated theme/component variants; client picks a direction
Stage 3  Rebrand        (optional)   β†’  new identity grounded in the client's OWN material
Stage 4  Full redesign  (optional)   β†’  new IA / structure / new pages, not just a reskin
         ── Handover & Launch ──     β†’  wire the editable CMS, launch checklist, hand over, β†’ Care Plan

Stage 1 alone is the R28,000 Repaint. Everything above it stacks on top and is quoted before it starts. Everything runs under the hard concurrency cap: one active build + a waitlist (see Concurrency & scope discipline).


Stage table

Client-facing deliverables use outcome language only β€” never name the stack to a client (internal recipe is the appendix). Hour figures are targets to validate on clients 1–3 (BUSINESS-MODEL has no hours-per-client data yet; M3 KPI is to measure them). They are incremental Daniel-hours for that stage.

Stage What it is (internal) Client-facing deliverable Daniel-hrs (target) Maps to package / price Recommend when…
0 Β· Discovery / Signal Audit 60–90 min call + capture content/IA/assets; 2–3 pg opportunity map with the client's own before/after numbers; optional on-spec preview "A short map of what your site is costing you and what's worth keeping β€” with your real numbers." 4–5 Pkg 0 Signal Audit β€” R3,500 / $250 / Β£185; credited to any build booked ≀30 days (settled) Always the front door for a paying lead; filters tyre-kickers, pre-empts the ROI objection, writes scope down first
1 Β· Faithful Repaint β˜… Rebuild the existing site 1:1 on the modern stack β€” same look + content, faster, mobile, owned. ≀10 pages, 1 revision round "Your current site, rebuilt: same look, faster on a phone, and yours to own." 24–30 (Pkg B all-in β‰ˆ33 incl. discovery/handoff) Pkg B Repaint β€” R28,000 / $2,750 / Β£2,040 (settled). New business, no existing site β†’ Pkg A Launch R18,000 / $1,750 (≀5 pages) The default for every Repaint lead. Dated / slow / not mobile / lost their developer, but the look is fine as-is
2 Β· Options round Auto-generate several theme + component variants, present for choice, build the picked direction "A few fresh looks to choose from, on your real content β€” pick one, we build it." +4–8 Proposed β€” no package yet; light version folds into Repaint's 1 revision, deeper exploration is a paid add-on (β†’ Open decisions) Client likes the brand but wants the site to feel modern; or is undecided and responds better to seeing real options than a brief
3 Β· Rebrand (optional) New visual identity grounded in the client's OWN material (k-means palette from their photos); fresh components per brand "A refreshed look and feel β€” colours, type and identity drawn from your own photos and story." +8–16 Beyond Repaint = bespoke quote at shadow rate R900/hr Β· $110/hr (grounded: Pkg B boundary "full redesign = bespoke quote") The brand itself reads tired / inconsistent (logo, palette, type feel old), not just the website
4 Β· Full redesign (optional) New IA / structure / new pages β€” not a reskin "A rethink of how the site is organised β€” new structure and pages built around how customers actually use it." +12–20 Bespoke quote at R900/hr Β· $110/hr (grounded: Pkg B boundary) The current structure is wrong: broken navigation, missing pages, wrong flows
Handover & Launch Wire editable CMS, run launch checklist, transfer ownership, transition to recurring "Go-live, and a simple way to edit it yourself β€” then someone on the other end month-to-month." 2–3 (inside the build package) Included in the build; converts into Pkg G Care Plan (R900 / R1,500 /mo) + Pkg D Chat attach (R15,000 + R1,800/mo WhatsApp) (settled; see Care Plan & recurring) Every engagement ends here

Full-ladder engagement (0β†’4) β‰ˆ 55–70 all-in hrs β€” that is a peak-deal, not a typical job (aerias was exactly this: repaint + rebrand + full redesign). It is governed by the concurrency cap and must be quoted as a bespoke build, well above the R28k anchor.


Stage detail

Stage 0 β€” Discovery / Signal Audit

  • Deliverable: the 2–3 page opportunity map with the client's own before/after numbers (load time, mobile behaviour, lost enquiries, what's worth keeping). ~5-day turnaround. This is a paid product (Pkg 0), not a free sales call.
  • Also capture here: all content, IA (page/nav map), brand assets, photos, logins, domain/DNS ownership, current host, current enquiry/booking flow, integrations.
  • On-spec preview (optional): for a cold lead with a visible defect, build a small slice of their rebuilt site up front as the sales asset (mozguide, physioscpt are the on-spec-preview prospects). This lives in the acquisition process β€” see Acquisition & intake; the free 2-min WhatsApp "what's worth keeping" look and the paid audit must be stated explicitly and never ambush each other.
  • Start the clock: time-track from client 1 (M1 KPI) β€” every hour on every stage.

Stage 1 β€” Faithful Repaint (the default / hero)

  • The rule: clone the original's look verbatim first. Rebuild the existing site so it looks exactly like the old one β€” same layout, same copy, same imagery β€” only faster, responsive, and owned by the client. No creative liberties at this stage.
  • Worked example: mozguide "Option B" β€” a faithful clone of the original mozguide.com (classic teal + gold Wix look, serif type, flag wordmark, verbatim original copy), built as a parallel branch/preview. That is the Stage-1 shape: reproduce, don't reinterpret.
  • Scope boundary (Pkg B): reuse content/IA, ≀10 pages, 1 revision round, 2–3 weeks.
  • This alone is the sellable, complete engagement β€” most Repaint leads should stop here.

Stage 2 β€” Options round

  • After the faithful clone exists, auto-generate variants and let Daniel/the client choose a direction, then build the chosen one. Three mechanisms, all already in the template:
    1. Multi-concept render panel β€” several full design concepts rendered on the real content (mozguide shipped a 3-concept panel; the client picked one).
    2. Curated theme layer β€” theme.json's 5 colour roles + heading/body font, flippable without touching components, so palette/type options are cheap to present.
    3. Interactive click-through switcher β€” a live switcher on the client's real content rather than static mock-ups (the standing default for taste choices).
  • Visual calls are the client's/Daniel's β€” present options, don't batch-decide.
  • Pricing is Proposed (see Open decisions): a light "pick a palette/type direction" is inside the Repaint's revision; a deeper multi-concept exploration is a paid add-on.

Stage 3 β€” Rebrand (optional)

  • New visual identity, but grounded in the client's own material β€” derive the palette from their photos (k-means), build from their story. Fresh components per brand.
  • Do NOT reuse danielslater.dev's house style (capsule header, waterline footer, mono kickers, warm-sand ground, editorial serif). It reads as a reskin β€” mozguide was rejected twice for being "too close to danielslater.dev" even after re-theming; the tell was shared structure/components, not colour. Start each brand from a clean slate; default to simple, clean, airy unless the brand says otherwise. danielslater.dev is only ever the incidental preview host (<client>.danielslater.dev).
  • Worked example: aerias got a full rebranding step β€” that is Stage 3.

Stage 4 β€” Full redesign (optional)

  • New information architecture, new page structure, new pages β€” a rethink of how the site works, not just how it looks.
  • Worked example: aerias also got a complete full redesign β€” that is Stage 4.
  • Pkg B explicitly carves this out ("full redesign = bespoke quote"), so it is always a bespoke line, never bent into the R28k Repaint.

Handover & Launch

Wire the editable CMS (internal recipe in the appendix): Sveltia git-CMS at /admin, staging branch editable β†’ merge to main = publish. Then run the checklist:

  • Remove noindex (was on for the private preview) β€” site is now indexable
  • Custom domain + SSL live (proxied CNAME in the client's zone)
  • Analytics on β€” Cloudflare Web Analytics (the settled pick) on the live site
  • Contact / enquiry channel live β€” WhatsApp click-to-chat above the form for SA; email fallback; POPIA opt-in wired for health/professional practices
  • CMS auth working (CF Access + OAuth worker) or the redeploy path documented if it's a direct-upload preview site
  • Ownership handover β€” repo access, domain/DNS, code ownership, and a short written handover doc. "You own everything" is a settled brand promise; make it literally true
  • Transition to a Care Plan β€” best-effort month-to-month + optional Chat attach (WhatsApp Receptionist). See Care Plan & recurring

NO same-day go-live if WhatsApp is in scope: Meta Business verification is 2–14 days

  • template review + a dedicated number. Set this expectation pre-signature.

Decision tree β€” which stages to propose

Read the lead's current site + goals + budget, then propose the shortest ladder that solves the actual problem. Always propose Stage 0 first for a paying lead.

The lead's situation Propose Package / quote
No existing site (new business) 0 β†’ 1 (build-from-brief) (+2 optional) Pkg A Launch R18,000 / $1,750
Dated but on-brand β€” likes the look, it's just old / slow / not mobile / lost their dev 0 β†’ 1 only Pkg B Repaint R28,000 / $2,750
Dated + wants a fresh look β€” likes the brand, wants the site to feel modern 0 β†’ 1 β†’ 2 Repaint + Options add-on (Proposed)
Brand is tired β€” logo/palette/identity feel old, not just the site 0 β†’ 1 β†’ 2 β†’ 3 Repaint + bespoke rebrand (R900/hr)
Wrong structure entirely β€” broken IA, missing pages, wrong flows 0 β†’ 1 β†’ … β†’ 4 Bespoke full-build quote
Needs bookings / logins / inventory / payments Storefront track (graduate off the static template) Pkg C Storefront R55,000 / $4,500
Just wants the AI that answers customers Skip the build β†’ Chat attach Pkg D R15,000 + R1,800/mo (see recurring)

Upsell direction rule: always upsell to the next stage, never bend the current one. "Repaint + you want it re-organised" is a Stage-4 quote, not free scope inside Stage 1.


Concurrency & scope discipline

Concurrency cap (settled β€” Risk #2 mitigation): ONE active build + a waitlist. Daniel is ¼–½ a full-timer's throughput; there is no Designjoy turnaround promise. Never quote a timeline that assumes two builds in parallel. A second signed client waits; Storefront is "occasional big fish", not a monthly.

Revision / change-order boundary (settled β€” Risk #3, scope creep = the #1 failure mode):

  • Every build package includes exactly one revision round on the agreed scope.
  • Anything off-scope is a change order at R900/hr SA Β· $110/hr INTL β€” quoted in writing and approved BEFORE any work starts. No silent absorption.
  • The paid Signal Audit exists partly to write scope down first so "off-scope" is unambiguous later.
  • Via an agency (ICP-C): the agency owns the client and will negotiate scope you can't police β€” contract that all scope changes route back to Daniel for re-quote in writing, and keep the hosting/retainer layer as the anti-capture moat.
  • No hospitality clients, ever (employer separation) β€” never route a hospitality lead into any stage; the restaurant app is anonymised capability proof only, never a seed.

Appendix β€” Internal Standard Tech Recipe

Internal only. Client language stays stack-agnostic and outcome-led. This is the "Option A" editable-site template β€” the default for a marketing/brochure site.

Stack

  • SvelteKit (Svelte 5 runes, TS) + adapter-static, 100% prerendered β†’ Cloudflare Pages.
  • Content = JSON in the repo (src/lib/content/*.json) with thin typed loaders (content.ts / site.ts). Sveltia can only edit JSON/YAML/MD β€” never .ts β€” so all editable content lives in JSON.
  • Curated theme layer: theme.json = 5 colour roles + heading/body font β†’ theme.ts builds a :root token override injected in +layout.svelte (the sole source of those tokens). Fonts self-hosted (fontsource), data-driven and flippable. This layer is the Stage-2 options mechanism.
  • CMS = Sveltia at /admin (static/admin/index.html + config.yml), GitHub backend.
  • Branch model: staging = editable (CMS commits land here β†’ staging rebuilds), main = prod, publish = merge staging β†’ main.
  • Auth: Cloudflare Access gates /admin + staging; CMS GitHub OAuth via a sveltia-cms-auth Cloudflare Worker (needs a GitHub OAuth app). CMS mode needs Pages git-integration (mainβ†’prod, stagingβ†’preview); a preview-only site can run direct-upload via wrangler pages deploy instead (no auto-redeploy on push β€” document it).
  • Fresh components per client brand β€” never reuse the danielslater.dev component set (it reads as a reskin). Reuse the stack/architecture, build the visual components fresh.
  • Animated background (optional signature): the "tiny agents" canvas template (surfers/starlings/runners) β€” read the handover contract first; pre-roll before first paint + prefers-reduced-motion static frame are mandatory; verify with headless screenshots.
  • Noindex via static/_headers during preview; remove at launch.

Per-client reuse: fork the template repo β†’ swap content JSON + photos + palette tokens β†’ make 2 Pages projects + branches + domains.

Graduation trigger: the moment a client needs bookings / logins / inventory / payments, leave the static "Option A" template and move to the aerias direction (D1 / Supabase + Edge Functions, hosted checkout). That is a Storefront (Pkg C) engagement, not a Repaint.

Verification (every build): npm run check + build green before handover; visual pass (screenshots) after non-trivial layout work; animated backgrounds get the headless-screenshot

  • pointer-assertion + fps checks from the tiny-agents template.

Open decisions (β†’ DECISIONS.md)

Flag these to Daniel to ratify; none is asserted as settled here.

  • Stage 2 "Options round" as a discrete priced add-on. No package exists for it in BUSINESS-MODEL. Proposed: a light palette/type pick is folded into the Repaint's one revision (no extra charge); a deeper multi-concept exploration is a paid add-on (Proposed price ~R4,500 / ~$350, or billed at the R900/hr shadow rate). Needs Daniel's price call.
  • Per-stage hour targets for Stages 2–4 (+4–8h / +8–16h / +12–20h incremental). These extend the package-level unit-econ figures (which only cover Pkg 0/A/B/C); they are estimates to validate on clients 1–3, not measured.
  • Free automated audit as a top-of-funnel feeder into the paid Signal Audit (Kea Logic runs one; already an open question in PROSPECTS.md). Stage 0 stays the paid audit until Daniel decides β€” noted here only because it changes the front door of this ladder.