The situation
A high-growth GTM services firm ran on an account list of more than 320,000 companies that had accreted over years: duplicates under different names, dead domains, subsidiaries colliding with parents, and no consistent company ID. Scoring was impossible because the entities themselves were ambiguous. Every downstream workflow inherited the chaos.
What we built
- Company identity resolution across all 320k records. Every row mapped to a canonical company ID, collapsing duplicates, resolving renames and acquisitions, and separating subsidiaries from parents.
- Waterfall enrichment to fill the resolved entities: firmographics, size, industry, tech markers, with validated coverage reporting instead of "trust us" fill rates.
- Scoring model built from the firm's own closed-won history, applied to every resolved account.
- Persistence layer in the CRM. The critical piece: resolution + scoring was wired into the CRM itself, so any new inbound lead is matched to its canonical company and scored the moment it arrives. The cleanup never rots.
The result
The full 320k-account universe became a scored, deduplicated asset instead of a liability. Inbound leads land pre-scored and pre-matched. Territory planning, routing, and reporting all run on the same canonical IDs, and the accuracy floor holds as new data flows in.
Why it held up
One-time cleanups decay from the day they finish. We built the resolution and scoring as a living system inside the CRM, so the list is as clean on day 400 as it was on day 1.
