CS-19 // Dossier
Agency onboarding platform + client scorecard
An internal admin plus a client-facing portal, running as one application across two subdomains, that takes a signed studio from sales handoff to a fully provisioned CRM sub-account. Its centerpiece: a nine-point client scorecard the agency edits once, rendered live inside every studio’s own CRM dashboard through a signed embed.
Exhibit // CS-19
R-02 · interface redrawn from the live build — zero client pixels
- Client
- R-01SEALED UNDER NDA. SPECIFICS WALK THROUGH LIVE. → BOOK
- Industry
- Marketing agency · the agency behind CS-01 and CS-18
- System
- Agency onboarding platform + client scorecard
- Stack
- Astro · PostgreSQL · Drizzle · Vercel · GoHighLevel
- Trigger
- A studio signs — and onboarding used to be a 90-minute manual checklist
- Metrics
- System scope
01 // The problem
Every new client onboarding was a long manual checklist someone ran by hand — sub-account setup, intake collection, pipeline wiring — with no way to see progress across studios, and nothing branded the agency could put in front of the client.
02 // The system
Redrawn — no client data
The system
03 // The delta
Before and after go-live
Before
- Onboarding = a 90-minute checklist run by hand
- No view across studios; progress lived in someone’s head
- Client-facing status = screenshots and phone calls
- Automation hardcoded to one account’s IDs
With the system
- Sub-account provisioned and intake link sent from the admin
- One tracker across every studio — milestones and pipelines
- A branded scorecard live inside each client’s own dashboard
- Pipelines resolved by name — same code, any sub-account
04 // What got done
6 entries
- B-01One deployment, two hosts: agency admin and client portal split by host-based routing in middleware, default-deny, so a portal request can never reach an admin handler
- B-02Onboarding modelled in eight Postgres tables — including a dedicated corrections table so a studio can amend a submitted intake without the agency re-keying it
- B-03The scorecard built as a signed widget route, iframe-embedded in each studio’s CRM dashboard — the agency edits once, every dashboard reflects it, no re-push
- B-04An orchestrator that resolves CRM pipelines, stages and workflows by name at runtime — no hardcoded IDs, so the same code runs against any freshly provisioned sub-account
- B-05A real-time webhook receiver plus a daily cron sweep for time-based transitions, both secret-authenticated and both verified to fail closed
- B-06CRM sub-account provisioning and tokenized intake links fired from the admin, replacing the manual SOP end to end
05 // Outcome
System scope — capability metrics, honestly labeled
- → Scope
portals on one deployment — agency admin + client intake - 0
- → Scope
endpoints · 25 test files, fail-closed verified - 0
- → Scope
branded lifecycle emails, strategy call to receipt - 0
06 // The result
From the build log
- Live on the agency’s custom domain, both portals
- Twenty branded lifecycle emails shipped as reviewable previews — strategy call, no-show recovery, conversion, onboarding, nurture, receipt
- A five-entry decision log written before building — one risk explicitly accepted, isolated to a single marked module
Want a system like this one?
Free · 30 min · leave with a rough scope either way