Alex Pricopie · AI builder ← All case studies

Case study · Agency back office · October 2026

The back office that runs a cold-email agency, on one screen

A US cold-email agency ran its business across Instantly workspaces, a Slack channel per client, spreadsheets and a separate CRM. I built the admin side that brings it together: 26 screens across agency, fulfillment, sales and finance, sharing one database with the client portal.

"You don't just follow instructions, you bring your own ideas and look for ways to improve the product." — Adam Saltarelli, agency co-owner

Command Center: eight agency-wide numbers, four area summaries and meetings booked per client
Command Center. Every client's results, the agency's own sales and its money for the month. Each number is compared with the same finished days of the month before.
Client
US cold-email agency
My role
Lead builder, idea to handover
Build time
About 85 hours*
Tests
3,600+ automated tests across both apps
Stack
Next.js, Supabase, Vercel, Instantly API, Slack, Anthropic API
Status
Handed over to the agency, October 2026
White-label safe
Yes

* My estimate. I logged 32 hours on the clock and stopped logging partway, so this one is not a timesheet.

The problem

The agency books meetings for its clients through cold email on Instantly. Each client had its own Instantly workspace and its own Slack channel. Money lived in spreadsheets, the agency's own sales in a CRM, and the weekly report was put together by hand every Friday.

The client portal I built earlier showed each client their own numbers. The agency still had no single place to see all of them, spot the client going quiet, or answer replies without opening twenty workspaces.

What I delivered

  • Agency: Start here, Command Center, Clients, Client Brains, Calendar, Tasks, Sunday planning, Unibox, Reply Bot, Reports, Systems Audit, Settings
  • Fulfillment: Overview, Campaigns, Follow-up, Reactivation, Marketing
  • Sales: Metrics, Pipeline, Discovery calls, Proposals
  • Finance: Overview, Client P&L, Expenses, Projections, Invoices

Numbers arrive from Instantly by webhook within seconds, with a full import every 10 minutes as a backup. The weekly report publishes itself on Friday at 6 PM in each client's time zone. The admin and the client portal together run more than 3,600 automated tests.

Three decisions

  1. Every rate is written once. The formulas sit in one file shared by the admin and the client portal, and a test fails if the two copies drift apart. So a client never sees a different reply rate from the agency.
  2. Roles sit in the database, not in the buttons. Row-level security in Postgres enforces owner, manager and viewer, so a viewer can't write even by calling the API directly. Only the owner sees money and keys. The tests check each agency against a second one it mustn't be able to read.
  3. Money is typed in by hand, on purpose. No bank, Stripe or accounting link to break or to share. A payment takes seconds, and every finance number has an "i" that explains what it adds up.

What went wrong

About 4 of the hours I logged went on fixing my own bugs: the end-to-end tests, the definitions behind some numbers and the Instantly import.

The client side

The agency's clients sign in to a separate portal that reads the same database. Read the Client Dashboard case study →

The client

WhatsApp: Alex asks Adam for a quick review of the admin dashboard. Adam replies: Working with you has been a great experience, Alex. You're proactive, easy to communicate with, and genuinely invested in delivering quality work. You don't just follow instructions, you bring your own ideas and look for ways to improve the product. I'd happily recommend you for AI development and automation projects.
Adam Saltarelli, agency co-owner, on WhatsApp, 23 October 2026. Shared with his permission.

Happy to put you in touch with Adam for a reference.

Need this under your brand?

White-label, start to finish: I never contact your clients, and I'm happy to sign an NDA. I reply within 2 hours, whatever your time zone.

Contact