Our Forecast Collapsed. Our CRM Was Lying to Us.
Our forecast didn’t fail overnight: CRM “truth” drifted for months, propped up by founder memory and patchy stages. Fix process first—then enforce fields—otherwise AI just speeds up the mess.

Date: 20th May 2026
The board call was on a Thursday afternoon. I had told them we would land the quarter inside a 5% margin. We missed by 18%. Two deals I had personally walked through the pipeline review the week before had quietly slipped, one was already lost, and a third had been double-counted across two reps. I sat on mute for a full minute after the chair asked me to explain. I had no explanation. I had a CRM dashboard that had been telling me a story for six months. The story was wrong.
The harder admission, which took me longer to say out loud, is that I was the single point of failure. I had built a sales motion that depended on me being in every important room. When the team grew past the point where I could touch every deal, the qualification checks, the deal-review instincts, the forecast sanity tests I had been carrying in my head stopped happening, and nothing in the system caught what I used to catch. That is the real story. The CRM was the symptom.
What follows is what we found when we pulled the system apart, why we did not reach for AI automation first, and what we did instead.
The quarter that broke the dashboard
Our forecast did not collapse because of one bad month. It drifted from reality for the better part of a year, and the quarter was the one where the gap got too big to hide.
What made it worse was the confidence. I had been walking into Monday pipeline reviews with a number that felt earned. Coverage looked healthy. Stage progression looked clean. Win rates looked stable. The reps were busy. Activity logs were full. None of it was a lie, exactly. It was a version of the truth that hundreds of small habits had quietly edited over many months.
The miss had three sources we only saw afterwards. A large renewal we had forecast as expansion came back flat. Two new logo deals sat at "verbal yes" for six weeks and turned out to have no procurement path. And a cohort of mid-market opportunities our SDR team had sourced were, on inspection, accounts we had already lost twice before, re-entered under slightly different company names.
The board did not need a story. They needed a root cause. I asked for two weeks.
The sanity tests I used to run in my head
Before the team grew, I ran four checks on every deal in commit, every week, without writing any of them down. Did I know the economic buyer by name and had I personally spoken to them in the last 30 days. Did I know what the customer was buying instead if they did not buy us. Did the close date match a customer event the customer had told me about, not a date the rep had typed in. And did the deal value match a budget the buyer had confirmed, or was it a number the rep had reverse-engineered from our pricing page.
None of those checks lived in the CRM. They lived in me. When we had six reps and 40 open opportunities, that was workable. When we had fourteen reps and 180 opportunities, it stopped. The fixes later in this piece are, in essence, a way to get those four questions out of my head and into named CRM fields the system can enforce when I am not in the room.
What the audit found
We pulled in an outside pair of eyes and ran a full audit. I had assumed we would find some hygiene issues. What we found was that the system had been lying to us in four distinct ways, and every one was our own fault.
Duplicates were inflating the pipeline. Roughly 9% of our open opportunities were duplicates or near-duplicates. Two reps working the same logo under different account spellings. An SDR re-creating a record because they could not find the existing one in search. Our reported pipeline coverage of 3.8x was closer to 3.4x once we deduplicated. Still in range. Not the cushion we thought we had.
Contact data had quietly rotted. B2B contact data decays at roughly 2.1% per month, around 22.5% per year [1]. We had not run an enrichment cycle in eighteen months. A meaningful share of the contacts our reps were sequencing had moved jobs, changed emails, or left the buying committee. The reps did not flag this because bounce reports went to an inbox no one owned.
Stage definitions were opinions, not rules. Three reps could look at the same deal and place it at three different stages. "Discovery complete" meant whatever the rep wanted it to mean that week. No exit criteria. No required fields gating stage progression. Stage-by-stage conversion rates told us nothing reliable. Well-defined stages with clear exit criteria are one of the foundations of accurate forecasting; mixing deal types in one pipeline inflates the number [2]. We had neither discipline.
Then there was the forecast itself. Every Friday at about 4pm, our sales manager opened a CSV export of the pipeline, sat with it for an hour, and walked the list deal by deal in his head. He nudged some up. He nudged some down. He pasted the result into a slide. The adjustments were undocumented. The conversion assumptions lived in his head. When he was on holiday, the forecast did not get built. That ritual was the forecasting system. A one-person spreadsheet posing as a process.
I had read CRM data-quality stats before the audit and assumed they applied to other companies. Reports from CRM users show that 76% say less than half of their data is accurate and complete, and 37% have lost revenue as a direct result [3]. They applied to us.
Why I did not reach for AI first
Vendors started calling in the weeks after the miss. Every tool promised to fix what was broken. Several pointed to research that better CRM hygiene can lift forecast accuracy by up to 30% [4]. All of them implied that their tool was the hygiene.
I came close to signing one. What stopped me was a conversation with a peer CRO who had been through a similar collapse two years earlier. His advice was blunt. Bolt AI automation onto a broken process and you get faster broken process. You get reps who trust the AI summary more than their own notes, and the summary is built on the same dirty data that broke the forecast.
Over half of sales leaders running AI initiatives say disconnected systems are slowing them down [5]. The Owner.com cautionary tale was already public: rapid rollout of AI sales agents, hallucinations, low adoption, tools shelved. They rebuilt with a structured training plan, one or two vendor partners, and a single owner for governance. Their CRO later reported booked revenue per dollar spent, on a per-AE basis, at three times any team he had previously managed [6]. Fix the foundation, then automate.
The honest counterargument, which I considered seriously, goes like this. The dirty data was the problem. AI is now extremely good at fuzzy-matching duplicates, flagging stale contacts, and spotting stage-drift patterns no human RevOps analyst would catch in time. Why not point AI at the mess and let it do the cleaning while we rebuilt the rules in parallel?
The reason I did not is that automated cleanup without human-enforced rules treats the symptom. Reps would have kept creating duplicates because nothing stopped them at the point of creation. Stages would have kept meaning different things because no one had defined what they meant. We would have ended up with a cleaner version of the same broken behaviour, and a team that had outsourced data discipline to a system they did not understand. The rules had to be ours first. AI automation could enforce them later.
So we did the unfashionable thing. We spent the next ninety days fixing people and process before we touched a single piece of automation.
What we rebuilt, in order
The sequence mattered. We did not try to do everything at once. We sequenced the work so each fix made the next one possible.
Week one to three: deduplication and ownership. We ran a fuzzy-match deduplication pass on every open account and opportunity, comparing on normalised company name, domain root, and primary contact email. Manual review for anything ambiguous. We assigned a single owner to every account, with conflict resolution rules written down. Then we set the gate at record creation. A new account could not be saved if the domain root already existed on an active account, unless a sales manager applied an override and logged a reason. A new opportunity could not be saved against an account that already had an open opportunity in the same product line, same override rule. The validation lived in the CRM, not in a training deck. Duplicate opportunities dropped from around 9% to under 1.5% inside the three weeks. Coverage settled honestly at 3.4x.
Week three to six: stage definitions and exit criteria. We rewrote the sales stages with explicit, observable exit criteria. "Discovery complete" became a checklist of five questions answered and three stakeholders identified, with the answers logged in named fields: business pain (text), measurable impact (number), current process (text), decision criteria (text), and economic buyer (lookup to contact record). Reps could not move a deal to the next stage without those fields populated. "Proposal" required a logged mutual close plan and a named procurement contact. "Negotiation" required signed NDA and verbal pricing agreement on file. The CRM enforced this through validation rules tied to the stage field.
The exit criteria flexed where the deal type demanded it. New logo deals carried the full five-question discovery checklist. Expansion opportunities used a shorter four-field version because two of the inputs (business pain, current process) were already on the account record from the original sale. SMB deals under £25k ARR ran a lighter three-field discovery so reps were not booking eight stakeholder meetings for a four-week cycle. The principle held across all motions: every stage had named fields, and the CRM refused to advance the deal without them.
There was grumbling. There was also, within four weeks, a pipeline that meant the same thing to every person looking at it. Stage-to-stage conversion rates stabilised inside two reporting cycles, with mid-funnel variance dropping from double digits to inside three points.
Week six to ten: forecasting cadence. We replaced the Friday spreadsheet with a weighted forecast pulled directly from the CRM. Each stage carried a documented conversion rate built from the trailing four quarters of actuals. RevOps recalculated those rates on the first Monday of each quarter, using a fixed SQL query against the closed-won and closed-lost cohorts. The new rates were reviewed in a 30-minute governance call with me, the sales manager, and finance. Changes were logged with a written reason. No quiet edits. No mid-quarter tweaks without a documented event.
We reported three tiers from then on. Commit, for deals with all the boxes checked and 90% confidence of closing in-quarter. Most-Likely, for solid mid-stage opportunities with a few dependencies still open. Best-Case, for qualified pipeline that could land in-quarter if the dependencies broke our way. Each tier had a written definition the board could audit.
We then drew a hard line between forecast-critical and informational fields. Forecast-critical fields were the ones that, if missing or stale, dropped a deal out of commit automatically: stage, close date, deal value, economic buyer, next step with a date, and (for expansion) a CS health signal dated within 30 days. Informational fields, such as competitor named or campaign source, could be incomplete without affecting the number. When a forecast-critical field went missing or stale, the deal moved from commit to most-likely and stayed there until the field was corrected. The sales manager stopped being the forecast. His job was to explain variance, not create the number.
Week ten to twelve: closing the expansion blind spot. The renewal we had misforecast as expansion was a CS handoff problem dressed up as a forecast problem. Expansion forecasts now require a current CS health signal on the account, dated within 30 days, before the opportunity can sit in commit. Without that field, the deal moves to most-likely. That single rule cleaned up the category of miss that started the whole story.
What kept reps from reverting
The honest version of week four is that the pipeline looked consistent. The honest version of month four is that volume spiked, and three reps started cutting corners. That is the moment most hygiene programmes die.
What we tried first did not work. We started with a weekly hygiene email from RevOps listing every rep's exceptions. Inbox noise. Reps skimmed it on Friday afternoon and nothing changed. We tried a public leaderboard of data quality scores. Two weeks of theatre, then reps gamed the easiest fields and ignored the rest. Naming and shaming did not change behaviour. Enforcement that touched the deal or the wallet did.
Three mechanics ended up sticking. First, validation rules in the CRM removed the option to cut corners on stage gates. A deal could not move without the named fields populated. No manager override at the rep level. No "I'll fix it later". The system said no. When a field was missing close to quarter-end, the deal sat in its current stage with an exception flag, the RevOps analyst reviewed it inside 24 hours, and either the rep populated the field or the deal stayed where it was for forecast purposes. The clock did not stop because the quarter was ending. Inside the first quarter under the rule, we flagged 47 exception deals, 41 were corrected inside SLA, six stayed put and dropped out of commit. Forecast variance for that quarter came in at 4%.
Mid-quarter exceptions follow a fixed path. The RevOps analyst owns the queue. Anything flagged before day 60 of the quarter sits with the rep for 24 hours, then escalates to the line manager if uncorrected. Anything flagged in the final 30 days goes straight to the sales manager with a four-line summary: which field, which deal, which rep, last activity date. The sales manager makes the call, in writing, and the decision goes into the variance log. Reps cannot appeal a mid-quarter exception until after quarter-end. The point is to stop debate from inflating the commit number on the last Friday of the quarter.
Second, we tied a slice of variable comp to data quality. Five percent of the quarterly accelerator was gated on a four-line scorecard run by RevOps: deals at the correct stage with required fields populated, contacts current within 90 days, next steps logged within 48 hours of last activity, and a stakeholder map on every deal past discovery. Each line scored as a percentage of deals in the rep's book that passed. Eighty-five percent across all four lines unlocked the accelerator. RevOps ran the scorecard on the second working day after quarter-end, published the raw report to each rep, and gave a 72-hour appeal window. Disputes went to the sales manager with the RevOps analyst's notes attached; the manager's decision closed the matter. The first quarter we ran it, two reps lost the accelerator. One appealed, one did not. Word travelled.
Third, the manager ran a fifteen-minute pipeline audit every Monday before the team meeting. Not a deal review. A data review. He worked from a single saved report with four columns: deals that changed stage in the last seven days, deals with required fields blank, contacts that bounced in the last 14 days, and deals with no logged activity in 14 days. The output was a one-page export pasted into the rep's coaching doc. If a rep had three deals at Stage 3 without a stakeholder map, the coaching conversation that week was about how they ran discovery calls, not about the deal value. Data errors pointed straight at execution gaps.
The effect on admin was the part the reps eventually noticed. The validation rules removed roughly an hour a week per rep that had previously gone to manager chase-ups about missing fields. The Monday data audit replaced a 45-minute pipeline meeting that used to drift toward deal stories. The 24-hour SLA on exceptions meant RevOps absorbed one batched review a day instead of fielding ad-hoc tickets across the week. None of this looked like time saved on a dashboard. It looked like fewer interruptions, fewer Slack messages, fewer Friday surprises.
Where AI automation finally earned its place
Once the foundation was stable, we brought AI in. Deliberately. In specific places. With guardrails.
We started with three use cases. Meeting capture writing notes back to the CRM so reps stopped re-typing them after every call. Continuous contact enrichment and verification, running in the background rather than as an occasional cleanup. Duplicate detection on record creation, so the validation rules we had set up manually got smarter over time.
None of these were glamorous. All of them removed admin that was eating into selling time. Meeting capture alone returned around 45 minutes per rep per day. Background enrichment cut the contact bounce rate from 14% to under 4% inside a quarter. The duplicate detector caught roughly 30 record-creation attempts a week before they hit the database. Reps stopped complaining about admin because there was less of it.
The guardrails are explicit about what AI touches and what stays human. Meeting capture writes a draft summary and proposed next step to the opportunity record, and the rep has to confirm both before they save. Enrichment writes to contact fields directly, with a flag if the new value differs from the existing one by more than a defined threshold (job title change, company change, email domain change), and RevOps reviews flagged changes in the Monday audit. Duplicate detection on creation surfaces a prompt to the rep and a suggested merge target; the merge itself requires a manager click. AI never moves a deal stage, never sets a close date, never adjusts a forecast tier. Those are still human calls and remain in the variance log.
Point AI automation at a clean, repetitive task and it gives hours back. Point it at a judgement call inside a process you do not yet trust and you get confident wrongness, faster.
Rebuilding board trust
The CRM was usable again within three months. The board's trust took closer to nine.
What changed the conversation was the variance note. Every board pack now carried a one-line entry for each material deal movement, with four fields: what changed, when, why, and what the owner is doing about it. "Slipped from commit to most-likely on 12 May because procurement timeline extended by three weeks; legal review now scheduled 2 June; owner: Sarah K." That format. Every time.
The catches did the work. End of last year the new system flagged a £480k deal that had moved to commit without a verified economic buyer. The old system would have carried it. RevOps held the flag, the rep escalated, the buyer turned out to be a junior procurement contact, and the deal dropped to most-likely on the Monday before the board pack went out. It closed two quarters later at half the original value. We reported that movement honestly the first time we saw it, not after the miss.
The board stopped asking "is the number real?" They started asking "what are we doing about the deals at risk?" That is the question you want.
What is still broken
Nine months in, the system holds. It is not finished.
Multi-product deals are still messy. A customer buying our core platform alongside a newer module sits awkwardly across two product-line stage definitions, and the reps lean on the older definition because it is the one they know. We are rewriting the stage criteria for blended deals this quarter and accepting that the data on those opportunities is softer than the rest.
Territory edge cases keep producing duplicates the validation rules miss. A subsidiary on a different domain creating a new account against a parent already in the system. We resolve those manually each Monday and the catch rate is good, not perfect.
The variable comp scorecard works on individual contributor reps. It does not yet work cleanly for the two enterprise AEs running fewer, larger deals where a single missing field has outsized scorecard impact. We are testing a deal-weighted version for them in the current quarter.
And the founder-dependency problem is reduced, not solved. The team can run the forecast without me. The team cannot yet run the quarterly business review without me in the room, because the narrative judgement of why variance happened still sits with me more than I would like. That is the next piece of work.
If any of this sounds familiar, I would like to hear how other sales leaders have handled the same collapse. The Thursday board call is a common enough experience that the recovery patterns are worth comparing notes on. Drop me a line.
Our Opinion
The pattern we see most often in scaling B2B SaaS is exactly this: a founder or first sales leader carrying the qualification logic in their head, and a CRM that records activity rather than reality. Headcount grows, the head-checks stop, and the forecast quietly drifts. The fix is not better dashboards. It is named fields, written exit criteria, and validation rules that refuse to let a deal advance without them. Get the four questions out of one person's head and into the system, and the forecast stops being an opinion.
What most of the market is still getting wrong is the order of operations. Vendors keep selling AI as the cleanup, and revenue teams keep buying it before they have agreed what a stage means or who owns an exception. In our work, automation only pays back once the rules are human-enforced and the data is trusted. Our position is blunt: do not buy AI sales tooling until your stage definitions are written down, your forecast-critical fields are gated in the CRM, and a single owner runs the exception queue. Anything earlier just accelerates the mess.
About the Author
Mike Gallop is co-founder of Zero2Five Consulting and a former CRO and Sales Director who has built B2B revenue teams across SaaS, legal tech and fintech. He works with growing software companies on sales structure, CRM discipline, forecasting and practical AI automation. He holds a BA (Hons) in Business Management from Southampton Solent University. Outside work, he keeps a deliberate balance between operational intensity and switching off properly.