They hired me to build a retention practice. They needed one themselves first.
A US B2B marketing agency (around $4M in revenue, thirty people, a hundred and twenty active clients) hired me to build a revenue operations practice it could sell. It was also losing 28% of its own revenue to churn every year, and finding out a client was leaving when the client said so. Every signal it needed already existed: emails, calls, call transcripts, NPS, CSAT, engagement data. All of it sat in separate systems and nobody read any of it. I unified those signals into a health score inside HubSpot, attached save-plays to it, and freed the billable capacity to run them. Net revenue churn fell from 28% to 16%. Then we sold the practice.
The problem
For a services business with 120 active accounts, losing 28% of revenue and 14% of clients a year isn't attrition. It's a hole in the floor.
Every year, more than a quarter of the revenue base had to be replaced before the agency grew a single dollar, so the sales team was running to stand still, and nobody had noticed that the running was the problem. Clients left the way they always leave at a company with no health signal: quietly, and then all at once. The first anyone knew was a cancellation email.
The strange part: every signal it needed already existed. It just sat in five systems, and reading it was nobody's job.
A hole in the floor. More than a quarter of revenue and one in seven clients gone every year. On 120 accounts, that's not attrition. The whole sales effort was running to stand still just to replace it.
Churn arrived as a surprise. Clients left quietly, then all at once, and the first anyone knew was the cancellation email. With no health signal, nobody saw it coming.
The signal existed, unread. A business built on client communication had emails, calls, transcripts, NPS, CSAT and engagement data on every account: more signal than most companies ever get. It sat in five systems and nobody read any of it, because reading it was nobody's job and there was nothing to read it into.
Capacity billing nothing. Utilisation ran at 62%, tracked by hand in ClickUp: badly, and late. On a thirty-person team, that gap is eleven people showing up and billing nothing.
The diagnosis
I was hired to build a retention practice the agency could sell. It needed to run one on itself first.
That sounds like a rebuke; it was actually the fastest route to the brief. An agency selling revenue operations has exactly one credibility problem: why should a client believe you? The answer couldn't be a deck. It had to be the agency's own churn number, before and after. So the first client of the new practice was the agency itself, and the proof it produced became the thing that sold the service to everyone else.
Churn is a signal problem before it's a customer-success problem
The instinct when churn is high is to add customer success: more check-ins, more people, more care. That's expensive, slow, and fixes nothing: a CS team without a health score just apologises faster. This agency already had every signal it needed. It didn't need more attention. It needed the attention pointed at the right accounts, before the cancellation email, not after.
A health score that doesn't trigger a play is a dashboard
This is where most retention projects die. Building the score is the easy half. It's worthless unless a negative signal fires an alert, the alert routes to an owner, and the owner has a play to run. Scorecard, alert, owner, play: all four, or don't bother.
Idle capacity is the cheapest growth in a services business
Nobody thinks of utilisation as a revenue problem. But 62% utilisation on a thirty-person team was a bigger number than anything the sales pipeline would produce that year, and it needed no new clients at all. You can't fix what you measure by hand once a fortnight; automating the measurement was the whole intervention.
What I built
A health score with every signal in it
Email, calls, call transcripts and call intelligence, account intelligence, NPS, CSAT and engagement data, all pulled into HubSpot's Service Hub and resolved into an AI-assisted health scorecard per account. For the first time, someone could look at a list and see which of 120 clients were in trouble.
Save-plays attached to the score
A negative signal now fires an alert. The alert routes to an owner. The owner runs a defined play. That chain is the entire difference between a retention system and a retention report.
Expansion signals, treated like churn signals
The same data that tells you an account is unhappy tells you when one is ready to buy more. Expansion had been accidental: it happened when a client asked. It became something the system flagged.
Automated billable-utilisation tracking
Off manual ClickUp entry and into automated capture, so utilisation was visible weekly instead of reconstructed monthly. What gets seen gets managed: utilisation moved from 62% to 78%.
A productised RevOps service line
Scope, pricing, packaging and delivery playbooks, including a RevOps maturity scorecard run across the entire active client base, which doubled as a delivery baseline and a lead magnet for sales.
Sales enablement, so they could actually sell it
Pitch decks, email templates, discovery and sales playbooks, call training, and then coaching the agency's own sales team to run them. Building a service nobody knows how to sell is a hobby.
The outcome
Fourteen-month engagement. All metrics measured in-engagement.
We were about to go and sell revenue operations to our clients while quietly losing more than a quarter of our own revenue every year. Shashank made us fix ourselves first, which was not what I expected to hear. Our churn halved, we found four hundred thousand dollars of capacity we already had, and then we had a real number to sell the practice with.
What this engagement didn't solve
The practice sold, but mostly as small projects. Eight clients bought it in the first year: seven as scoped audits or roadmaps, one as a retainer. That's a service line launched, not productised. Building something people will buy and something people will keep buying are different jobs, and fourteen months bought the first one.
The content engine underdelivered. A RevOps video series produced twelve pipeline leads: a pilot, not a channel. Its real value was somewhere I didn't plan for: it trained the agency's own team on how to talk about RevOps, which is what made them able to sell it. I'll take the outcome. I won't pretend I aimed at it.
And the lifecycle automation underneath the retention motion was never built. Onboarding automation, milestone and time-to-value tracking, renewal workflow automation, dormant-account re-engagement. None of it was in scope. What got built was the signal layer and the save-play. A complete retention engine has the lifecycle plumbing underneath it too, and this one still doesn't.
Why this matters for you
This is your problem if:
You find out a customer is leaving when the customer tells you
Your customer signals (emails, calls, tickets, NPS, usage) live in four or five systems, and reading them is nobody's job
You have a customer success team but no health score, so they allocate attention to whoever shouts loudest
Your expansion revenue is accidental: it happens when a client asks, not when you spot the signal
You run a services business and can't tell me your billable utilisation to the point
You are about to hire more customer success people to fix a churn number
Churn is a signal problem before it's a customer-success problem
You almost certainly already have the signal: in your inbox, your call recordings, your ticket queue, your survey responses. The question isn't whether you can see churn coming. It's whether anything in your business is currently looking.
A health score that doesn't trigger a play is a dashboard
Score, alert, owner, play. Build the first and skip the last three and you've bought a very expensive chart that everyone admires and nobody acts on.
If you sell a service, run it on yourself first
Your own numbers are the only case study that can't be argued with, and if you can't produce them, you've just learned something important about the service.