This Replaced a 14-Step Spreadsheet Workflow. Here's What We Built and Why.
The Spreadsheet That Worked Until It Didn’t
The client ran a client onboarding process for a mid-sized professional services firm — 22 employees, about 40 new clients per month. Their workflow lived in a shared Google Sheet. It had 14 columns, three tabs, color-coded rows, and a comment thread that had become its own communication channel.
It worked. Until it didn’t.
The errors were small at first: a row updated in the wrong tab, a status not cleared after a handoff, a new team member who didn’t know the color-coding convention. But small errors in an onboarding process compound. A client would get a welcome email before their contract was countersigned. A kickoff call would get scheduled before the intake form came back. The ops manager was spending 90 minutes every Monday morning just reconciling the sheet before the week could start.
Six hours a week. Across a year, that’s a part-time job.
What the 14-Step Workflow Actually Looked Like
Here’s what the process tracked: new client inquiry → conflict check → proposal sent → proposal signed → contract drafted → contract sent → contract countersigned → invoice created → invoice paid → intake form sent → intake form received → kickoff scheduled → kickoff completed → project folder created.
Fourteen steps. Four different people touched it at various stages — the ops manager, two account leads, and the finance person. Each person had their own interpretation of what “in progress” meant in column G.
The sheet broke in three predictable places: handoffs between people (no notification, just a color change), steps that required a file to exist somewhere else (contract in DocuSign, invoice in QuickBooks, intake form in email), and the Monday reconciliation, where the ops manager had to cross-reference three systems to figure out what was actually true.
The Constraint We Set Before We Built Anything
We weren’t trying to build something impressive. We weren’t trying to automate everything or create a system that could scale to 500 clients. We were trying to build something the ops manager would actually open every morning without dreading it.
That constraint shaped every decision.
If a feature required training, we cut it. If a view required explanation, we simplified it. If an automation could fail silently, we didn’t build it. The goal was a system that was obviously correct at a glance — where the ops manager could see in 30 seconds what needed attention today.
What We Built
One intake form. We built a single Typeform that captured everything needed to open a new client record: contact info, service type, referral source, and a few intake questions that previously lived in a separate email template. Submission creates a record automatically. No copy-paste, no manual entry.
One source of truth. We used Airtable as the database. Every client record has a status field with six clearly defined stages — not fourteen steps, not color codes, six named stages that mean the same thing to everyone. Each stage has a checklist of what has to be true before it moves forward. The record links out to DocuSign and QuickBooks by URL, so the files live where they already live, but the status lives in one place.
One dashboard. A filtered Airtable view, shared with the whole team, showing only records that need action today. Not all 40 active clients — just the ones stuck, overdue, or waiting on someone. The ops manager’s Monday morning reconciliation became a two-minute scan.
What We Cut and Why
We were tempted to build automated email notifications at every stage transition. We didn’t. Notifications are easy to build and easy to ignore, and this team already had too much email. Instead, the dashboard became the notification system — if something needs attention, it shows up there.
We were also tempted to pull invoice data directly from QuickBooks via API. We didn’t. The integration would have added two weeks of build time and a new failure point. A URL link to the invoice in QuickBooks costs nothing and works every time.
We cut the referral source tracking report that the founder asked for in week one. Not because it wasn’t useful — it was — but because it wasn’t part of the core workflow problem. We flagged it for phase two.
Before and After
Before: 14 steps tracked across one sheet with three tabs, four people, and no single definition of done. Monday reconciliation: 90 minutes. Average errors caught per week: 4–6 (missed steps, wrong statuses, duplicate entries). Time from signed contract to kickoff scheduled: averaging 6 days.
After: 6 stages, one record per client, one dashboard. Monday check: under 5 minutes. Errors in the first month of use: 2 (both caught same day). Time from signed contract to kickoff scheduled: averaging 3.5 days.
What Changed in the First Week
The ops manager stopped being the person who knew where everything was. That sounds small. It isn’t. When one person holds the system in their head, every question routes through them. In the first week, two account leads resolved their own status questions by checking the dashboard instead of sending a Slack message. The ops manager noticed. She said it was the first week in two years she hadn’t felt like a human router.
The intake form also surfaced something unexpected: three clients in the first week submitted it with service types that didn’t match what the account lead had discussed. That mismatch had been happening before — it just wasn’t visible until the data was in one place.
The Takeaway
Spreadsheets aren’t the problem. A spreadsheet that’s doing the job of a database, a communication tool, and a project tracker simultaneously — that’s the problem. The fix isn’t always software. But when it is, the right question isn’t “what can we build?” It’s “what does this team need to see every morning to do their job without friction?” Build that. Cut everything else.