← Back to work Agency operations platform

Baton: the platform that runs our studio

Client portal · proposals · invoicing

The challenge

A studio is a lot of moving parts. New leads come in, proposals go out, projects move through stages, designs need client sign-off, files get sent, meetings get booked, and invoices have to follow. Run all of that across email threads, spreadsheets, and DMs and things slip. A client never sees the latest proof, an approval is buried in a reply, an invoice goes out late.

What we built

Baton, the platform Cadence runs on. One place that carries a client from first contact to final invoice.

A lead comes in and becomes a tracked record. A proposal goes out and is accepted in-app. Accepted work becomes a project with a visible timeline, and the client gets their own portal, a branded space where they follow progress, review design proofs, and approve them without a single “which version is this?” email. Messaging, file delivery, scheduling, and invoicing all live in the same system, and a weekly digest keeps everyone current without anyone chasing a status update.

Under the hood

Next.js on the App Router, Supabase for Postgres, auth, and row-level security, deployed on Vercel. An organization-scoped schema, tokenized client-portal links so clients reach exactly their work and nothing else, a design-proofing and approval flow, lead-to-invoice records, and a cron-driven weekly digest. The same stack and conventions we bring to client builds, proven first on ourselves.

The outcome

Cadence runs on Baton instead of on a pile of tabs. Clients get a calm, branded portal instead of an inbox, approvals are a click instead of a thread, and nothing falls between the cracks of five disconnected tools. It’s also our standing proof of what we can build, because we built it for us first.

Baton studio dashboard showing client and project counts and a list of new inquiries
Every client and project in one place — the studio pipeline, from a new inquiry to an active build.
Cockpit view with outstanding balance, overdue clients, and a list of invoices
Outstanding balances, overdue nudges, and invoicing in one cockpit — nothing goes out late or gets forgotten.
Team-side project view with a status control and a request-info-from-client panel
Each project carries a clear status and a one-click way to ask the client for exactly what's needed.
Client portal home for Harbor Dental showing their projects and progress
Every client gets their own branded portal to follow progress — no more 'which version is this?' email threads.
Client portal review screen with Approve and Request changes buttons on a design deliverable
Design proofs go out for review right in the portal: approve, or request changes, in a single click.

Next.js · Supabase · Vercel

← Back to work
Let's talk

Want something like this?

Start a project with us