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:
- Multi-concept render panel β several full design concepts rendered on the real content (mozguide shipped a 3-concept panel; the client picked one).
- Curated theme layer β
theme.json's 5 colour roles + heading/body font, flippable without touching components, so palette/type options are cheap to present. - 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.tsbuilds a:roottoken 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 asveltia-cms-authCloudflare Worker (needs a GitHub OAuth app). CMS mode needs Pages git-integration (mainβprod, stagingβpreview); a preview-only site can run direct-upload viawrangler pages deployinstead (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-motionstatic frame are mandatory; verify with headless screenshots. - Noindex via
static/_headersduring 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.