TL;DR: A B2B logistics company in Leeds with £4.6M in revenue and 180 active accounts was assessing client health at a fortnightly meeting where three people reported from gut instinct. Last year, 25 accounts churned. The commercial team anticipated 7. The other 18 were surprises. When we mapped the data retroactively, churned accounts had been declining for an average of 4.2 months across four systems (WMS, TMS, Sage, Salesforce) that nobody was looking at simultaneously. We built a four-stage agent that aggregates signals weekly, calculates a weighted health score per account, alerts account managers when scores cross below threshold, and learns which signals most strongly predict churn. The fortnightly 2-hour meeting became a 30-minute weekly dashboard review. Early declines caught at month 1-2 instead of month 4. Agent cost: £260/month.
The Fortnightly Review
Every other Monday, Tom pulls up a spreadsheet. 180 rows. One per client. He's colour-coded it: green, amber, red. The colours are based on his judgment, last updated at the previous review (or whenever he remembered something concerning in between, which is a data freshness policy governed entirely by the frequency with which concerning things happen to cross his mind).
He and the two account managers go through the list.
"Barrett & Sons has been quiet. Volume's down a bit. Probably seasonal."
"Crossfield Group raised a complaint about a late delivery last week. I've spoken to them, I think it's fine."
"Northway hasn't replied to my last two emails. Could be nothing."
Three people assessing 180 accounts by combining data they've each checked separately (WMS reports for one, Sage revenue trends for another, Salesforce complaints for the third) and reporting at a fortnightly meeting from memory and instinct. Two hours. Every other Monday. 156 hours per year of gut-instinct synthesis.
Volume declines show up in the WMS. Complaint patterns show up in Salesforce. Revenue erosion shows up in Sage. Delivery failures show up in the TMS. But nobody is looking at all four simultaneously for the same account. The signals exist in separate systems. The synthesis happens in Tom's head, once a fortnight, for 180 accounts.
Last year, 25 clients left. Tom's team identified 7 as at-risk before the cancellation notice arrived. The other 18 were, in Tom's assessment, "not on our radar." Eighteen accounts showing declining volume for an average of 4.2 months before cancellation. The signals were in four systems. Nobody connected them because the dots were in four different places and one person's inbox, and connecting dots across four systems for 180 accounts fortnightly from memory is the sort of task that sounds plausible in a meeting and impossible in practice.
The Company
B2B logistics and fulfilment company in Leeds. Forty-two employees. £4.6M annual revenue. 180 active client accounts across warehousing, fulfilment, and distribution services.
Tom is the commercial director. His team: two account managers, each responsible for roughly 60 accounts, with Tom overseeing all 180 and managing the largest directly. Average annual contract value: £25,600. Long-term relationships. Warehousing and fulfilment contracts typically run 12-24 months. When a client leaves, the replacement sales cycle takes 3-6 months and costs roughly five times what retention would have cost.
The commercial team's loaded cost: £195,000 per year. An estimated 25-30% goes to manual health assessment: reviewing complaint logs, checking volume trends, scanning email threads, and preparing for the fortnightly review. That's £48,750 to £58,500 per year in monitoring work.
Churn from the prior 12 months: 14% rate. 25 accounts. £640,000 in revenue. Of those 25, an estimated 40-50% were saveable (service issues that could have been addressed if flagged earlier, not pricing undercuts or closures). Saveable revenue: £256,000 to £320,000 per year.

What the Spreadsheet Couldn't Show
The spreadsheet captured status. Green, amber, red. What it couldn't capture was trajectory.
An account showing green at the last review and green at this review might be stable. Or it might have been declining steadily between reviews, invisible because nobody checked between fortnights. Tom's colour-coding was a snapshot taken every 14 days. The accounts that churned were declining continuously. A fortnightly snapshot catches the accounts that fall off a cliff. It misses the accounts that slide gradually, which is what 18 of 25 were doing.
The 4.2-month average decline followed a consistent pattern: order volumes down 15-30%, complaint frequency ticking up from zero per quarter to two or three, email response times lengthening, QBR engagement dropping from substantive discussions to polite nods, payment terms stretching from net-30 to net-40 to net-45.
Each signal, taken alone, was explainable. A reasonable person looking at any single signal would say "normal variation." A reasonable person looking at all five for the same account over the same four months would say something quite different. But nobody was looking at all five because the signals lived in four systems and the only aggregation mechanism was one person's instinct, exercised fortnightly.
What We Built
Four stages. All built on top of the existing four systems.
Stage 1: Signal aggregation
Connects to Manhattan Associates (WMS), the TMS, Sage, and Salesforce. Pulls account-level data weekly. Order volumes (trend over 4, 8, and 12 weeks), fulfilment accuracy and SLA compliance, delivery performance, complaint frequency and severity, revenue trend, payment behaviour, and AM engagement (meeting frequency, email responsiveness from CRM notes).
The four systems that Tom's team was checking one at a time now feed a single data layer. Weekly sync means the picture is current as of last weekend, not as of whatever each person happened to check since the last fortnightly meeting.
Stage 2: Health scoring engine
Calculates a composite health score (0-100) per account. Weighted by signal type: volume and revenue signals carry 35%, operational performance signals (fulfilment accuracy, delivery, SLA) 25%, complaint and satisfaction signals 25%, engagement signals 15%.
Initial weights were based on Tom's experience. After six months, the system recalibrated against actual churn data. Tom had overweighted complaints and underweighted payment behaviour changes. Accounts that stretched payment terms without complaining churned at nearly twice the rate of accounts that complained loudly but paid on time (a finding Tom described as "obvious in hindsight and invisible in practice").
Stage 3: Alert and prioritisation
Accounts crossing below threshold (score drops below 60, or drops more than 15 points in a single period) trigger an alert to the assigned AM with context: which signals moved, by how much, since when, and the account's contract renewal date. Accounts within 90 days of renewal and declining get escalated to Tom regardless of score.
A weekly prioritised dashboard replaces the fortnightly spreadsheet. The 15-20 accounts needing attention are highlighted. The 160 that are healthy and stable aren't. The meeting starts with "here are the flagged accounts and the specific signals behind each flag" instead of "who's worried about what?"
Stage 4: Churn pattern learning
Retrospective analysis on the 25 accounts that churned in the prior year. What did their scores look like at 1, 2, 3, and 4 months before cancellation? Which signals moved first? After the first two quarters, the model adjusted weights to reflect the actual leading indicators for this specific client base and service type.
The strongest predictor, which nobody had measured before: QBR attendee seniority. Clients who sent a director to QBRs had a 92% retention rate. Clients whose QBR attendees dropped to coordinator-only level had a 3x higher churn rate over the following 12 months. This signal was sitting in Salesforce meeting notes, unanalysed, for years.

What We Learned Building It
The QBR attendee signal was the discovery nobody expected. We built the scoring engine around operational signals: volumes, complaints, payments, delivery performance. Standard indicators. The churn pattern analysis in Stage 4 surfaced a signal nobody had considered: the seniority of the person attending quarterly business reviews. Clients who sent senior decision-makers stayed. Clients who gradually delegated QBR attendance to coordinators left. The signal was in Salesforce. In the meeting notes field. Unstructured text that nobody was reading systematically. The agent now parses attendee names against account org charts. This single signal, added in month three, improved early detection by 23%.
Payment behaviour was a stronger early signal than complaints. Tom expected complaint frequency to be the primary predictor. It wasn't. Payment term stretching (accounts drifting from net-30 to net-40 to net-45 without formal renegotiation) predicted churn more reliably than complaint volume. The explanation, once Tom thought about it: clients who complain are still engaged. They want the problem fixed. Clients who silently stretch payments are reducing commitment without confrontation. The quiet withdrawal is more dangerous than the loud complaint.
The fortnightly-to-weekly cadence shift mattered more than the scoring. The agent produces scores. The scores are useful. But the single biggest operational change was moving from fortnightly assessment to weekly visibility. An account that begins declining on a Tuesday is now visible by the following Monday. Under the old system, it might not surface for three weeks (if the decline started just after one fortnightly review and nobody caught it before the next one). The frequency of looking changed the outcome more than the sophistication of what was being looked at.
The Numbers
Metric | Before | After |
|---|---|---|
Client health assessment | Fortnightly, from gut instinct | Weekly, from aggregated data |
Accounts flagged before cancellation (prior year) | 7 of 25 (28%) | On pace for 85%+ (Q1-Q2) |
Time from decline start to team awareness | 2-4 months | 1-2 weeks |
Fortnightly review | 2 hours, 3 people | 30-min weekly dashboard |
Commercial team monitoring time | 25-30% of week | 10-12% of week |
Agent cost/month | N/A | £260 |
Early-stage declines (month 1-2 of what would have been a 4.2-month slide) are now caught when intervention can still change the outcome. A conversation with a client at month 2 of declining engagement is a relationship conversation. A conversation at month 4, when the RFQ is already with competitors, is a negotiation you're losing before it starts.
£260 per month. £3,120 per year. Protecting revenue measured in hundreds of thousands. The commercial team's recovered monitoring time (roughly £20,000 per year across three people) went back into account growth, new business conversations, and the relationship work that retention actually requires.
Tom described the change simply: "I used to find out clients were leaving. Now I find out they're thinking about it."
The Pattern
If your client health assessment depends on people checking separate systems and reporting at periodic meetings from memory, your blind spot is the gap between meetings. The accounts declining gradually. The signals distributed across systems that nobody views simultaneously. The 4.2 months of withdrawal that are obvious in retrospect and invisible in real time because each individual signal, in each individual system, looks unremarkable.
Your team isn't missing signals because they're inattentive. They're missing them because 180 accounts across four systems, assessed fortnightly from memory, is more synthesis than human cognition reliably performs. The Monday morning bottleneck here isn't the meeting. It's the fortnight of uncollected, unconnected signals that precede it.
Want to see if your client monitoring has signal gaps? The AI Workflow Diagnostic takes 10-15 minutes and shows you where the signals are sitting unconnected.
Want to see 25 agent architectures across different industries? Download Unstuck. It includes blueprints for churn warning, revenue recognition, audit prep, expense enforcement, and more.
by TG
for the AdAI Ed. Team


