Scope locked as a contract. Every deliverable on a stage pipeline. Client approvals on deadlines that enforce themselves. And a monthly report that assembles itself from delivered work — no month-end data entry, ever.
Nothing connected. Clients went quiet exactly when their approval was needed. And nobody could prove what was delivered against what was promised. We built Handoff to run our own agency — then kept using it every day.
A deliverable is what the client bought — "July Video 3." A stage is a step of work — "Script." The client's scope counts deliverables. The team works stages. The board's columns are the stages.
Some stages are the client's turn — approving a script, reviewing a cut. The clock on a gate is client time. It shows on their report. Miss the agreed deadline and the deliverable slips to next month, automatically, with an email trail.
Every active deliverable, every client, one board. Filter stage = Script and write every script across all clients in one sitting. Batching is how the hours close.
Quantities per service per month — locked, versioned, never edited. Every report is measured against it.
The stage chain for everything you sell, gates and deadlines included. Seven presets, fully editable. New deliverables inherit their pipeline automatically.
Enforced by the database, not by discipline. Everything else queues behind it, numbered. Managers see who's on what at a glance.
Max 4 in Edit across all clients means the fifth is refused — with a logged owner override if truly needed. Overrides appear on the client's report.
One urgent per client at a time, always red, notifies everyone relevant — and never silently reorders the pipeline. Humans decide. The log remembers.
Delivered vs promised per service. Every item dated and linked. Agency time vs client-approval time, split. Missed deadlines, slips, urgent flags, carry-over decisions with reasons. Computed once and frozen — published numbers can never drift. Nothing reaches a client without an owner's explicit publish.
Magic-link login — no passwords to forget. What's waiting on them, with approve and request-changes buttons and a visible countdown. Progress on everything in production. Their scope. Every report ever published, permanently.
Clients upload assets and see what's still missing; missing items get gentle automatic reminders. And if the client doesn't have a logo? Marking it "agency to create" spawns billable work — never absorbed silently.
Next.js and Supabase Postgres. Client isolation is enforced by Row Level Security in the database — a client's session physically cannot return another client's rows, or their own unpublished reports, regardless of what any front end requests. Business rules — scope locking, gate resolution, WIP limits, month close, report snapshots — live in server-side Postgres functions. The browser enforces nothing. A daily job runs the deadline engine. Deliberately excluded: chat, time tracking, invoicing, Gantt charts, custom fields. The pipeline plus the gate deadline is the product.
Handoff runs Sweet Build's client work end-to-end, every day. If you run an agency and want to see it working on live retainers, ask for a walkthrough.