Agency (danielslater.dev) β€” handover log
Business β€” core Β· biz/HANDOVER.md

Agency (danielslater.dev) β€” handover log

Newest block on top. ~/dan-hub is not a git repo β†’ biz/ is untracked; changes are just saved to disk, never committed/pushed.


βœ… Market-scan debrief β€” 3 pending items answered + six findings prioritised (2026-07-26) β€” READ THIS FIRST

What this session was: a discussion/debrief, no code or files built. Resolved the three items left ⏸️ PENDING in the 2026-07-24 firecrawl block below, and re-discussed that scan's six TL;DR findings to a prioritisation. Then Daniel closed the session. (Separate session/topic from the Lychee block directly below β€” don't conflate.)

The 3 pending items β€” now ANSWERED (don't re-ask):

  1. "What are the Meta changes?" β†’ Two dated shifts this quarter (from 2026-07-17-whatsapp-sa.md): (a) Oct 1 2026 β€” Meta's free 24h service window dies; the bot's free-form AI replies + utility msgs go freeβ†’metered at ~R0.13/msg (SA), so WhatsApp unit economics compress hard in Oct and today's competitor/blog prices all assume the free regime. (b) Aug 1 2026 β€” Meta bills its own native "Business Agent" ($2/1M tok β‰ˆ 4–5c/msg), a click-to-enable booking/FAQ bot that disintermediates hand-built bots β€” but ~5–10Γ— pricier than a self-built cheap-LLM bot, so DIY still wins if the pitch names why custom beats native (real calendar/PM write-back, payment choice, CRM push, POPIA). Plus: Meta's Jan-2026 AI policy bans "ask-me-anything" bots, blesses narrow booking/support bots (your use case is protected).
  2. "Did we make any price changes?" β†’ No. Scan validated every Β§4 anchor; only additive edits (dated validation note in PRICING.md Β§4 + PROSPECTS rows). Β§5/Β§5b/Β§6 untouched.
  3. "Talk about the six points again" β†’ done; prioritisation below.

Six findings β†’ recommended priority (scan Β§F now annotated to match):

  • Act first (my ranking): #1 β†’ #3 β†’ #2.
    • #1 BizAI (bizai.co.za, Claude-powered platform bundling a free website R1,850+): needs a positioning answer, not a price cut β€” bespoke + WhatsApp-native + real calendar write-back + no CRM lock-in vs their template landing page. Draft one crisp "why us vs a platform module" paragraph.
    • #3 Free automated audit β€” cheapest/highest-leverage win: Kea Logic's "free audit" is only a mailto:; a Signal-Audit-lite (free β†’ funnels the paid R3,500 Signal Audit) leapfrogs the closest mirror competitor. Resolves the open PROSPECTS.md Q.
    • #2 Re-cost the R1,800 WhatsApp product β€” human answering starts R790/mo not R6k, so drop "cheaper than a receptionist"; lead with after-hours capture / no-show reduction / WhatsApp-native / booking write-back β€” and re-check unit economics against the post-Oct Meta regime before quoting hard.
  • Lower urgency: #4 (prices held β€” nothing to do), #5 (Navitas = partner; bake "keep your Navitas/Bookem, we embed it" into Β§5b pitch), #6 (Jake/Actually Africa = warm relationship + tiny-agent collab, NOT a Repaint).

Status of the six: still open decisions β€” Daniel has not yet chosen to build any of them; #1/#3/#2 is a recommended order awaiting his go. Nothing moved to DECISIONS.md.

Persistent state unchanged (Firecrawl still LIVE on zulzi-gpu:3102; stop with cd ~/firecrawl && docker compose down). Pointers: biz/research/2026-07-24-firecrawl-market-scan.md Β§F (annotated this session), biz/PRICING.md Β§4, biz/PROSPECTS.md, biz/research/2026-07-17-whatsapp-sa.md (Meta detail).


🍈 Lychee.com / Henrik Bork β€” partnership-revival research (2026-07-26) β€” READ THIS FIRST

Goal: Daniel was looking at buying the domain lychee.com; WHOIS dig surfaced a real dormant hotel-tech business behind it. Session = find who owns it β†’ research the business + founder β†’ decide whether to pitch a partnership (Daniel builds/operates, founder opens doors) β†’ draft the outreach. Framing evolved from "buy domain" β†’ "partner play, using Daniel's Nsuna experience as the value."

⚠️ WIP / persistent state (on disk, not git β€” don't lose):

  • The deliverable: biz/research/2026-07-24-lychee-henrik-bork.md β€” full research + market thesis + Daniel/Henrik fit + the ready-to-send outreach message (Β§6) + open questions (Β§7). This is the only durable copy of the whole session's work. Dated 07-24 (research date) though wrapped 07-26.
  • Used self-hosted Firecrawl on zulzi:3102 (already live from the prior session's block β€” do NOT assume it's local; it's on zulzi, port 3102, prebuilt ghcr images) to scrape Wayback pages that WebFetch is blocked from. zulzi had ~28 GB free RAM, plenty of headroom; I left Firecrawl running.

What shipped (findings): Lychee = a 2011 Beijing/HK curated luxury-hotel OTA — but its real moat was premium-card distribution (exclusive UnionPay white-label 23M cardholders + MasterCard "Dream Hotel Collection" via 22 banks/8M + Air China). Dead website since ~Jan 2023 but domain kept alive (Google Workspace email, renewed to 2027) = owner holding a dormant asset. Founder Henrik Bork (63, ex-SZ China correspondent) now runs consultancy Asia Waypoint, very active publicly but only on China tech/geopolitics — zero travel signal; appetite to operate a revival likely LOW → pitch him as advisor/door-opener, not co-founder. Market read: standalone curated luxury OTA is a dead model (Mr&Mrs Smith→Hyatt, Tablet→Michelin, Design Hotels→Marriott, Kiwi→Visa engine) BUT Chinese HNW travel demand is strong → revival credible ONLY as "curation-as-a-service / VIP-benefits engine" (Thesis A) reviving Lychee's card/airline co-brand DNA. That's where Daniel's Nsuna build/operate experience is the complement.

Open decisions awaiting Daniel: (1) send the outreach? (2) tune the two flagged bits first β€” his Nsuna role wording + one proof point; keep-or-drop the "domain-hunting" opener; (3) whether to also pursue the domain-buy fallback in parallel (broker) or purely the partnership.

Gotchas: WebFetch is blocked from web.archive.org β†’ use Firecrawl (ssh zulzi-gpu 'curl … localhost:3102/v1/scrape', use Wayback …/<ts>id_/… raw format for clean content + timeout param, pages are heavy). The Jan-2023 Lychee snapshot is already a dead/broken capture β€” operating-era content is in 2012–2015 snapshots. WHOIS is privacy-masked (Alibaba Cloud) β†’ owner not publicly named. "Lychee connects students with Chinese employers" = aggregator mix-up with a DIFFERENT company, not a pivot.

Next actions: (1) Daniel reviews biz/research/2026-07-24-lychee-henrik-bork.md Β§6 message + decides send/tune; (2) optional: scrape the archived MasterCard (/about/MC_list.jsp) + Air China (/airchina.jsp) pages via Firecrawl for named specifics to drop into the call; (3) optional: add a Henrik Bork / Lychee partner row to PROSPECTS.md (offered, not yet done).

Pointers: biz/research/2026-07-24-lychee-henrik-bork.md (the deliverable, Β§6 = the message) Β· prior handover block below (Firecrawl-on-zulzi setup) Β· memory firecrawl-selfhost-zulzi.


πŸ”₯ Self-hosted Firecrawl + live competitor/pricing scan (2026-07-24) β€” READ THIS FIRST

Goal: stand up self-hosted Firecrawl (Docker) and do a deeper competitor/pricing scan across 4 verticals + Daniel's friend "Jake" β€” replacing the US/UK proxy figures in the July research with live SA competitor data. (Daniel's ask; used the competitor-profiling skill's method.)

⚠️ WIP / persistent state (not in any git repo β€” don't lose):

  • Firecrawl is LIVE and left RUNNING on zulzi-gpu at http://localhost:3102 (~/firecrawl, prebuilt ghcr.io/firecrawl/* images; its redis/rabbitmq/postgres are internal β€” no clash with the running local-dev Nsuna stack). Batch driver + targets at zulzi:~/fc-scrape/ (fc_driver.py, scrape-targets.txt). Stop with cd ~/firecrawl && docker compose down.
  • Freed ~15 GB on zulzi (disk was 100% full) β€” ONLY regenerable dirs in the danielslater profile (~/.cache, ~/go/pkg/mod, node_modules, .venv, build/, sr-e2e/run, docker cache). Left gpuadmin/zadmin, all source/data, surf-sim/out, and the local-dev stack untouched. Full log: zulzi:~/NOTES-daniel-claude-2026-07-24.md.
  • New/edited biz/ files (on disk, not git): created biz/research/2026-07-24-firecrawl-market-scan.md (the deliverable) + biz/research/2026-07-24-firecrawl-raw/ (30 pages, md+json). Edited biz/PROSPECTS.md (Kea correction + Jake row + market-map + free-audit open-Q + date) and biz/PRICING.md (Β§4 additive validation note).
  • Memories already saved this session (before handover): firecrawl-selfhost-zulzi, firecrawl-market-scan-2026-07-24 (+ MEMORY.md index lines).

What shipped: 29/30 competitor pages scraped live. No pricing NUMBERS were changed β€” the scan validated every PRICING.md Β§4 anchor; I only ADDED a dated note + PROSPECTS rows/corrections.

⏸️ PENDING (mid-conversation when Daniel called /handover) β€” answer these first next session:

  1. "What are the Meta changes?" β€” from biz/research/2026-07-17-whatsapp-sa.md lines 63–66, 82–84: (a) Oct 1 2026 β€” Meta removes the free 24-hour service window; utility + free-form service (AI-reply) messages go from free β†’ metered at the utility/auth rate (~R0.13/msg SA), so today's free-window economics compress. (b) Aug 1 2026 β€” Meta's own native "Meta Business Agent" starts billing ($2/1M tokens β‰ˆ 4-5c/msg all-in) β€” a click-to-enable booking/FAQ agent that disintermediates hand-built bots (but ~5-10Γ— pricier than a self-built cheap-LLM bot β†’ DIY is better economics if Daniel can articulate why custom wins: real calendar/PM write-back, payment choice, CRM push, POPIA). Also: Meta's AI policy (in force since Jan 2026) bans general "ask-me-anything" bots but allows/encourages narrow booking/support bots.
  2. "Did we make any price changes?" β€” No. Answer: scan validated the existing prices; the only edits were an additive > Live-scan validation 2026-07-24 note in PRICING.md Β§4 + PROSPECTS rows. Nothing in Β§5/Β§5b/Β§6 touched.
  3. Daniel said: "we will talk about your final six points again" β€” i.e. re-discuss the TL;DR six findings in the scan doc (esp. #1 BizAI bundling free sites, #2 re-cost R1,800 vs R790 human reception, #3 Kea's manual audit β†’ free-audit funnel, #6 Jake = relationship not rebuild).

Gotchas: zulzi disk chronically near-full (ext4 5% root reservation makes non-root avail lag freed space β€” free MORE than you think); host port 3002 taken on zulzi (β†’ firecrawl on 3102); avily.co.za 500'd (server-side, skipped); BrighterVision main tiers are JS-gated (didn't capture $ cleanly, only add-ons $14.99–24.99); TherapyRoute rendered prices in KES (geo-detect) β€” treat as ~R120 equiv.

Next actions: (1) answer the 3 pending items above; (2) re-discuss the six findings; (3) optional follow-up scans (deep-profile BizAI platform pages; ed-psych rebuild cluster) β€” firecrawl is a python3 fc_driver.py away.

Pointers: biz/research/2026-07-24-firecrawl-market-scan.md (Β§F = open decisions) Β· biz/research/2026-07-24-firecrawl-raw/ Β· biz/research/2026-07-17-whatsapp-sa.md (Meta detail) Β· biz/PRICING.md Β§4 Β· biz/PROSPECTS.md Β· zulzi:~/NOTES-daniel-claude-2026-07-24.md Β· memories firecrawl-selfhost-zulzi, firecrawl-market-scan-2026-07-24, reference-scan-2026-07-20, therapist-pricing-research.


πŸ“Š Client-progress views mockup (swimlanes Β· gantt Β· critical path) (2026-07-24) β€” READ THIS FIRST

Goal: design the Timeline / objectives panel flagged in DASHBOARD.md β€” how to see every client's progress at a glance (swimlanes / gantt / critical-path), as a clickable Artifact mockup on real biz/ data.

⚠️ WIP (don't lose it): biz/mockups/agency-progress-views.html β€” the ONLY durable copy of the mockup source (built in a session scratchpad, copied here at handover; ~/dan-hub not git). Published Artifact (private, updatable from any session by passing this URL): https://claude.ai/code/artifact/767f2c10-5f85-48ec-a087-b43d8254265c.

βœ… NEXT-SESSION replan DONE (2026-07-24, later session): duplicated + redone as biz/mockups/agency-progress-views-v2-skills.html (only durable copy, same dir; v1 file + artifact untouched) β†’ NEW Artifact https://claude.ai/code/artifact/e9d3cca6-c66a-425c-8aeb-4abc528bdef8 (favicon 🧲). What changed with the 47 skills in play (repo has 47, not 46): A gains a ball Β· agent tag (Physios + ed-psych lanes un-gate; Build header cap-1 β†’ "parallel"); B adds two outbound lanes (agent-drafted, Daniel-sent β€” new "sends" ink in the queue), a danielslater.dev own-funnel lane (weekly content/SEO loop + free-audit feeder), and striped loop bars post-live = grow retainer, gated on billing; C redrawn to 6 columns (+ 06 Β· Grow), each with a β—‡ "on the shelf" state β€” old gap cards become skill-backed wire-ups, same 4 ink gates (channel β†’ contract β†’ keys β†’ rails) + new cards: Grow retainer SKU, referral loop; appendix adds the full 47-skill wiring map (product-marketing + marketing-loops = load-bearing), .agents/product-marketing.md context docs as step 0, and mode: loop in MILESTONES.md. Awaiting Daniel's reaction to v2 (esp. the 06 Grow column + the "loops behind billing" rule). Follow-up (same session): 4 parallel agents shipped the plan's ball Β· agent items β€” .agents/product-marketing.md + biz/marketing/context/ (step-0 context docs, incl. a contradiction audit: DECISIONS 17-Jul R28k model vs PRICING.md proposal, WA R1,800 vs R450), biz/outbound/physioscpt/ (SSL defect re-verified live 24 Jul β€” 1 stale xneelo A record, 4/5 visits broken, opener has a shelf life: re-verify morning of send), biz/outbound/ed-psych/ (5 dossiers re-verified β€” Wessels' old openers died, new = title "Index" + form relaying via mobirise.com; first send = Wessels Tue; pre-flight = ask Nadia's blessing to show the demo), biz/sales/ (Nadia scope one-pager + Dave pitch pack; ⚠️ Surfaris pricing frame unresolved: process/02 R28k vs PRICING Β§5 R7.5k β€” pick before quoting Dave). ALL drafts, nothing sent β€” sends await Daniel's signature + the wa#/inbox gate.

What shipped (in the mockup, not in the dashboard site): 4 tabs β€”

  1. View A Β· Swimlanes β€” one lane per engagement on a shared 8-stage ladder (Lead→…→Recurring); chip = current stage, tag = whose move it is. Daniel: "A looks pretty good." Derivable today with zero new data (PROSPECTS.md stage + clients/README + next-action cells).
  2. View B Β· Gantt "loops, not builds" β€” redesigned to Daniel's principles: agent builds are parallel slivers (no build-slot cap β€” Claude Code makes builds days-fast); the chart area is waiting (client feedback loops, third-party clocks like Meta WA verify 2–14d β€” start at signature); un-automatables (DNS, Google Business Profile, CMS auth, showing work) are ink blocks mirrored into a top "hands-on queue" lane (name provisional β€” alternates offered: founder queue / keys & calls / human lane).
  3. View C Β· Critical path = the AGENCY machine, not clients β€” 5 pipeline stages (Capture β†’ Preview factory β†’ Close β†’ Launch β†’ Operate & bill), βœ“-lists of automation running today vs gap-cards; heavy ink = 4 gates: owned enquiry channel β†’ contract+rights template β†’ launch-keys playbook β†’ billing rails. Preview factory β‰ˆ no gaps (that's the point); Close stays human-forever.
  4. Appendix β€” data model: clients/<x>/MILESTONES.md with a mode column (auto | hands-on | waiting); hands-on queue derives as mode=hands-on filtered across clients. Recommendation: build A now, B next, C hand-curated (mermaid in ROADMAP.md).

Blockers / open decisions awaiting Daniel:

  1. Sign off View A β†’ build as client-panel v2 on dashboard.danielslater.dev (see 2026-07-22 block: dashboard is hardcoded Svelte, NOT markdown-parsed).
  2. B/C reaction after the redesign (B was redesigned to his spoken principles this session, unreviewed).
  3. Name for the needs-Daniel lane.

NEXT SESSION (Daniel's explicit instruction): duplicate the artifact and redo the whole plan from scratch assuming full use of the skills in ~/dan-hub/marketingskills (clone of coreyhaines31/marketingskills β€” 46 skills under skills/: cold-email, prospecting, lead-magnets, marketing-plan, marketing-loops, offers, pricing, cro, seo-audit, programmatic-seo, ai-seo, directory-submissions, launch, referrals, emails, social, analytics, competitor-profiling, customer-research, copywriting, free-tools, …). Reuse this session's work where it makes sense β€” the mockup structure/views stand, but the content (esp. View C's Capture column + the gaps map, and B's loop assumptions) changes when 46 marketing capabilities join "running today". Publish as a NEW artifact (duplicate = new file path β†’ new URL), keep the original for comparison.

Gotchas:

  • Artifact host wraps the file (no doctype/head/body needed); CSP blocks all external fetches; favicon param must stay 🏁 on redeploys of the ORIGINAL (a duplicate gets its own).
  • Categorical palettes were validated with the dataviz skill validator (light #5c66c4,#078a78,#c07a18,#2f7fc1,#d95f43,#a24f95 on white; dark #7b84e8,#2aa595,#c2882c,#4a8fd0,#d4674b,#c06ad0 on #171b21) β€” reuse, don't re-derive; client colours are entity-fixed (nadia coral, mozguide teal, surfaris ochre, berlein indigo, aerias blue, bree plum).
  • Screenshot loop: no playwright in scratch β€” import from /Users/ds/dan-hub/claude-orchestrator/node_modules/playwright/index.mjs, channel:"chrome", wrap body in a doctype shell first (script pattern preserved at biz/mockups/… no β€” it lived in scratchpad; trivial to rewrite, pattern documented here).
  • All future dates in B are planning fictions (targets), fine under nothing-invented as long as they're marked plan; client-facing dates never leave the private view.

Pointers: biz/DASHBOARD.md (panel spec + exposure note: CF Access before money data), biz/PROSPECTS.md, biz/clients/README.md, biz/process/02-delivery-recipe.md (stage ladder the swimlanes mirror), biz/PAYMENTS.md (unsigned rights boxes β†’ View C gap), marketingskills/README.md + skills/.


πŸ›  Agency dashboard + browser-comment system + process playbooks (2026-07-22) β€” READ THIS FIRST

Goal: turn the settled strategy into operational process docs, then build a markdown-ish dashboard and a way to comment on any doc/dashboard from the browser and have Claude sweep + apply the comments.

⚠️ CONFLICT with the pricing-pivot block below (read both). The process playbooks + the dashboard's pipeline/money were built on the R28k Repaint / 8-SKU model in BUSINESS-MODEL.md. The πŸ’° block below records Daniel pivoting away from that to a low-tier volume-subscription model (R2,500 + R250/mo). So biz/process/03-pricing-payments-discounts.md, biz/PAYMENTS.md, and the dashboard pipeline values (~R28k) are now partly stale β€” reconcile them once the pivot is logged in DECISIONS.md. Not done here.

⚠️ UNCOMMITTED / UNTRACKED WIP (don't lose it):

  • ~/dan-hub/dashboard-site/ β€” NEW, not a git repo, all on disk. The whole dashboard (SvelteKit adapter-static). Data for the new panels: src/lib/dashboard.ts. Page: src/routes/+page.svelte. Widget: src/lib/CommentWidget.svelte.
  • ~/dan-hub/dsdev-comments/ β€” NEW, not a git repo, all on disk. The comments Worker (src/index.js + wrangler.toml). Deployed, but source only lives here.
  • ~/dan-hub/docs-site/ β€” git repo (local-only, master), uncommitted: src/lib/CommentWidget.svelte (new), src/routes/+layout.svelte, src/app.css, svelte.config.js, + generated content/.
  • ~/dan-hub/daniel-dev-skills/comment-sweep/ β€” NEW skill (SKILL.md + comments.mjs), untracked in a repo that HAS a remote (dan-slater/daniel-dev-skills) β†’ pushable.
  • biz/ (not git): process/ (01–05 + README), DASHBOARD.md, PAYMENTS.md, TRACKING-ROADMAP.md, clients/README.md; edits to DECISIONS.md (stage note), ROADMAP.md (strategic objectives).

What shipped (all LIVE, noindexed):

  • Process playbooks β†’ biz/process/ (6-agent workflow: acquisition Β· delivery-recipe Β· pricing Β· recurring Β· services + a reconcile/index README). On docs.danielslater.dev.
  • Browser comment β†’ sweep loop. Worker dsdev-comments at comments.danielslater.dev + KV namespace COMMENTS (ec72e5ccef41432197591a534c091891); origin-locked to docs+dashboard. CommentWidget.svelte (πŸ’¬ select text β†’ "Comment on this" β†’ passage stays highlighted via CSS Custom Highlight API β†’ stores {path,quote,section,context,text}) on both sites. comment-sweep skill: node comments.mjs list / resolve <key>, maps reader route β†’ ~/dan-hub<path>.md, apply β†’ redeploy. Verified end-to-end. Already swept 5 real comments this session.
  • Dashboard β†’ CF Pages project danielslater-dashboard, LIVE at dashboard.danielslater.dev (cert took ~27 min). Panels: KPIs Β· Awaiting-Daniel (7 decisions + 7 unblockers, seeded from real COMMANDS.md items) Β· Pipeline Β· Clients Β· Timeline (filter chips: All/Global/per-client) Β· Money Β· Requests Β· Tracking.
  • New biz docs + edits: DASHBOARD/PAYMENTS/TRACKING-ROADMAP/clients-README; DECISIONS stage-note ("keep the log light, it's early"); ROADMAP strategic objectives; PAYMENTS founding-case-studies + equity (Aerias = direct + equity, NOT via agency); handleMissingId:'warn' fix in docs-site.

Open decisions awaiting Daniel:

  1. Reconcile the pricing pivot into process/03 + PAYMENTS + dashboard (the big one; gated on logging the pivot in DECISIONS.md).
  2. CF Access on the dashboard before real money data lands (which emails?). It's noindex-only right now.
  3. The ~21 Proposed decisions in biz/process/README.md (+ new: equity-as-payment, founding→subscription) → ratify into DECISIONS.md.
  4. Commit/push? (comment-sweep β†’ daniel-dev-skills remote; git-init dashboard-site + dsdev-comments?)

Gotchas:

  • CF custom-domain cert: "active" in the API β‰  actually serving β€” dashboard took ~27 min. Be patient; verify on the *.pages.dev URL meanwhile.
  • Sandbox curl β†’ CF custom domains returns 000 (IPv6/edge). Verify via <project>.pages.dev, curl -4, or WebFetch β€” the sites are fine.
  • WAF blocks header-less curl POSTs to comments.danielslater.dev (error 1104); real browsers fine β€” test POSTs with a browser User-Agent.
  • KV list()//count is eventually-consistent (lags); the sweep reads via the CF API keys endpoint (immediate).
  • Dashboard content = +page.svelte (hardcoded panels) + src/lib/dashboard.ts (timeline/awaiting). It is NOT parsed from biz/ markdown despite the "backed by markdown" framing β€” edit source + redeploy (or sweep).
  • Dashboard pipeline/clients are already stale vs PROSPECTS.md (missing nadia, african-surfaris, the ed-psych cluster added by parallel sessions). PROSPECTS.md changes under you β€” re-read.
  • All CF deploys: Global-API-Key env from ~/.config/cloudflare/{email,api-token} + account 084af6c166c202c97486fc413d55ed36; both Pages projects are direct-upload (push β‰  deploy) β€” wrangler one-liners in each repo's README / docs-site README.

Next actions (ordered):

  1. node ~/dan-hub/daniel-dev-skills/comment-sweep/comments.mjs list β€” clear any new comments first.
  2. Once Daniel greenlights the pivot: reconcile pricing across process/03 + PAYMENTS + dashboard +page.svelte.
  3. Refresh dashboard pipeline/clients from current PROSPECTS.md.
  4. Add CF Access to the dashboard (+ emails) before real money data.
  5. Push comment-sweep to the skills remote; decide git for dashboard-site/dsdev-comments.

Pointers: dashboard-site/ Β· dsdev-comments/ Β· docs-site/ Β· biz/process/README.md Β· biz/DASHBOARD.md Β· biz/PAYMENTS.md Β· biz/TRACKING-ROADMAP.md Β· daniel-dev-skills/comment-sweep/SKILL.md Β· the πŸ’° pivot block ↓ Β· memories docs-reader-reconsider, agency-operating-system.

πŸ’° Product ladder pivot + client pamphlet (2026-07-22) β€” READ THIS FIRST

Goal: Figure out the agency's packages/product ladder, then produce an emailable client services & pricing pamphlet (styled like the Aerias brand pamphlet). Plus: log a batch of new prospects; clone + plan the marketingskills repo.

⚠️ UNCOMMITTED WIP (~/dan-hub β€” not git, so everything here is just on disk):

  • biz/pamphlet/ β€” the live deliverable. index.html (5-page A4 pamphlet, v1) + render.mjs + page-1..5.png. Do NOT blow it away. All prices in it are placeholders awaiting Daniel. No PDF exported yet (render.mjs now emits one on next run).
  • biz/PROSPECTS.md β€” appended several rows this session (see below). ⚠️ This file was also edited externally mid-session (a nadiaoedpsych.co.za hottest-inbound row + africansurfaris rewording appeared). Re-read before editing β€” it changes under you.
  • biz/research/2026-07-21-*.md β€” 4 new research notes (african-surfaris, kliptown-youth-program, linenclub, therapist-scrape).

What shipped (this session):

  • New product-ladder DIRECTION (Daniel's pivot, big): he rejected the researched R28k Repaint model (biz/BUSINESS-MODEL.md) as wrong for his real clients. New model = low-tier-led, volume subscription: entry "fix + host" at R2,500 once-off + R250/mo, aim for 100–200 low-maintenance sites β†’ MRR base, then upsell brand/copy/SEO/tracking/marketing. Reframed the 8-SKU ladder into a 3-rung value ladder (Auditβ†’Buildβ†’Recurring) but Daniel then re-cut it cheaper still. NOT yet logged in DECISIONS.md (awaiting his greenlight).
  • The pamphlet (biz/pamphlet/index.html): 5 pages β€” Cover ("Your website should be making you money") Β· The approach Β· Packages (Refresh/Rebuild/Store&custom) Β· Grow (add-on menu) Β· Why + Let's talk. On DS brand (Bricolage/Inter/Spline Mono; sand #ede8dc, ink #122a33, sea-deep #0b4586, teal, Fynbos-green #505d46 kickers). Rendered + sent to Daniel.
  • marketingskills repo cloned to ~/dan-hub/marketingskills (HEAD 6726476). Decision: reference-only (NO install, NO plugin). 47 marketing skills + tools registry; the pamphlet's add-on tiers map onto its skills (copywriting, seo-audit, schema, analytics, product-marketing).
  • Prospects logged (all with research notes, all in biz/PROSPECTS.md):
    • africansurfaris.com β€” warm outbound lead, owner Dave Renaud (Daniel knows him). Wix, mailto-only. Multi-brand upside: Dave also owns shakasurfcamps.com (dated WP = 2nd Repaint candidate), howtosurfbetter.com (decent WP, his enquiry hub), surfcoachinternational.com (unverified/possibly defunct). Top of prospects table.
    • Kliptown Youth Program β€” via aunt Ingrid Chadwick. Healthy Squarespace + NGO = no Repaint pain β†’ logged as partner/network vector, not a prospect.
    • linenclub.co.za (owner Gary) β€” Shopify, healthy, owner built it himself & is happy β†’ PARKED, low conviction, bottom of table.
    • Ed-psych Repaint cluster β€” ~40 SA therapist sites scraped (3 parallel agents, Psychology Today + Google). Logged the 5 educational-psychologist leads (Wessels, De Bruin, Miller, Green, van Niekerk) as ONE grouped row = the repeatable nadia-template play.

Open decisions awaiting Daniel:

  1. Confirm/correct all pamphlet prices β€” only Refresh (R2,500+R250/mo) came from him; Rebuild (R7,500+R350/mo) + all add-on prices (brand R3,500, copy R1,500, SEO R1,500, tracking R900, WhatsApp R350/mo, marketing R900/mo) were inferred.
  2. WhatsApp number β€” pamphlet has a gold [ number ] placeholder; email-primary (daniel@danielslater.dev) until he supplies one.
  3. Paid Signal Audit (R3,500) β€” dropped in favour of the free "send me your site" look; confirm.
  4. Log the pricing pivot in DECISIONS.md? (would resolve the contradiction with BUSINESS-MODEL.md).
  5. Ben Sheffer lookup β€” UNRESOLVED; ambiguous name, awaiting a disambiguator (LinkedIn / city / what he does).
  • His last reply to me was pending: I asked "change prices or design/wording first?"

Gotchas:

  • ~/dan-hub not git β†’ just save; never commit/push biz/.
  • PROSPECTS.md edits arrive externally/concurrently β€” re-read before each edit.
  • Pamphlet fonts load from Google Fonts CDN β†’ rendering needs network; the PNG/PDF bakes them in.
  • Playwright only resolves from aerias-demo/node_modules β€” render.mjs imports it by absolute path. Run: node /Users/ds/dan-hub/biz/pamphlet/render.mjs.
  • surfcoachinternational.com unreachable from sandbox (DNS β†’ sentinel 7.7.7.7) β€” verify manually.
  • marketingskills/CLAUDE.md tells agents to fetch its VERSIONS.md from GitHub once/session (a quiet background net call).

Next actions (ordered):

  1. Get Daniel's price confirmations + WhatsApp number β†’ edit biz/pamphlet/index.html β†’ re-run render.mjs (emits PNGs and the emailable PDF).
  2. Send the print-ready PDF.
  3. (If greenlit) log the pricing pivot in DECISIONS.md.
  4. Resolve Ben Sheffer once Daniel gives a pointer.
  5. Optional polish: page-2 right-column gap, page-4 bottom whitespace.

Pointers: biz/pamphlet/index.html Β· biz/PROSPECTS.md Β· biz/BUSINESS-MODEL.md (the R28k model this pivots away from) Β· biz/DECISIONS.md Β· BRAND-STRATEGY.md (brand tokens/voice) Β· biz/research/2026-07-21-*.md Β· Aerias pamphlet reference: ~/aerias/design/pamphlet/ Β· memories: danielslater-dev-business-model, danielslater-dev-brand-strategy, agency-operating-system, reference-scan-2026-07-20.