← Blog

Why your CRM data rots, and why cleanup projects never fix it

5 min read

Every RevOps team I talk to has run the cleanup project. You know the one. Someone exports the whole contacts database, a junior ops person spends three weeks in a spreadsheet, you bulk-update a few thousand records, dedupe the obvious twins, and standardize the job titles. The portal looks great. Reports finally reconcile. Everyone moves on.

Six months later it's a swamp again.

So you run it again. And the question nobody asks out loud is: why do we keep paying for the same project?

The thing about a clean CRM

A clean CRM is not a state. It's a rate.

Your data isn't dirty because someone did a bad job once. It's dirty because it's getting dirty right now, continuously, while you read this. A rep types a company name three different ways across three deals. A form passes through "Acme Corp.", "ACME", and "acme corp". An integration writes a phone number with a country code that another integration strips. A contact changes jobs and their email silently starts bouncing.

None of that is a one-time mess. It's a flow. And you can't fix a flow with a project that, by definition, ends.

When you do a cleanup, you're draining the bathtub. Feels great. But the tap is still running. The only number that matters is whether water comes in faster than you can bail it out — and in almost every team we see, it does.

Why the spreadsheet pass doesn't hold

Three reasons the manual cleanup always loses.

It's a snapshot of a moving target. The export you cleaned is already stale by the time you re-import it. New bad records arrived during the three weeks you were working. You cleaned the photo, not the thing.

It encodes the rules in a person's head, not the system. The ops person knew that "Dr." in a first-name field is wrong, that EU phone numbers need a +, that these two domains are the same company. The moment they finish — or leave — that knowledge is gone. The rules were never written down anywhere a machine could enforce them.

It doesn't touch the inflow. This is the big one. The forms, the imports, the integrations, the reps doing manual entry — all the places dirt enters — are untouched. You cleaned the output of a process while leaving the process running exactly as before.

A cleanup project answers "is the data clean today?" The only useful question is "what's the rate it gets dirty, and is something working it down faster than that?"

What actually changes the rate

The shift is from project to process. From a thing you do to a thing that runs. Concretely, three moves:

  1. Measure the decay, not the mess. Pick a few fields that matter — say, account-to-contact association, country, lifecycle stage — and track how many records go bad per week. That weekly number is your real health metric. A one-time "97% clean" headline tells you nothing about next month.

  2. Move the rules into the system. Every correction the ops person made by hand is a rule. "Normalize these title variants." "Merge contacts on this match logic." "Reject this country format at intake." Written as automation, those rules run on every record, forever — not once, in a spreadsheet, by someone who's now on PTO.

  3. Fix the tap, then bail the tub. Standardize at the point of entry first: form validation, import mapping, integration field contracts. Once new dirt slows to a trickle, the historical cleanup finally stays clean, because nothing's re-dirtying it behind you.

Where AI fits, and where it doesn't

This is the part we spend our days on, so a caveat first: AI is not a magic cleanup button, and anyone selling it that way hasn't run it on a real portal.

What it's genuinely good at is the judgment-heavy, high-volume work that doesn't reduce to a simple rule. Are "Acme Corp" and "Acme Corporation, Inc." the same account? Is this a real person or a test@test.com someone fat-fingered? What's the actual seniority behind a freeform job title someone typed at 11pm? Those calls used to require a human, which is exactly why they never scaled past the quarterly cleanup.

An agent can make those calls continuously, on every record, the way a tireless ops analyst would — if you constrain it properly and it never touches a record it isn't sure about. That last clause is the whole game, and it's why we obsess over not breaking things more than over moving fast. A cleanup tool that confidently merges two accounts that weren't actually the same has done more damage than the dirty data ever did.

The honest version

If you take one thing from this: stop budgeting for cleanup projects and start budgeting for a clean rate.

The next time someone proposes a three-week data sprint, ask what happens in month seven. If the answer is "we'll do it again," you're not buying clean data. You're renting it, on a six-month lease, at full price every renewal.

Build the process that holds, and the projects stop being necessary. That's the whole pitch.

Want this running on your HubSpot?

30 minutes. No pitch deck. Just a conversation about your data.

Talk to us →