Demo Case Study: CRM Cleanup — 5,000 Messy Contacts to a Deduped, Standardized List
Demonstration project. Every name, company, email and phone number in this folder is synthetic — generated to reproduce the defects we find in real CRM exports. No real contact data was used or touched. We never present demo work as client work; this exists so you can inspect exactly what you'd get.
Before: contacts_raw.csv (5,000 rows)
A contact export the way they actually arrive:
- ~560 duplicate records — some exact copies (export glitches), some the sneaky kind: same person entered twice with a different phone format, a missing title,
Fairwind Roofing Inc.vsFAIRWIND ROOFING INC., one with an email and one without - Names and companies in random casing with stray whitespace
- 6+ phone formats (
(555) 200-1234,555.200.1234,5552001234,+1 555 200 1234) plus invalid entries (call office,555-12) - States as
NY/New York/ny/ blank - Lifecycle stages in 14 spellings of what should be 4 values
- Broken emails (
name(at)domain.com), uppercase emails, padded emails - Missing titles (24%), phones (17%), states (11%)
After: contacts_clean.csv
Exact numbers are in cleanup_metrics.md (auto-generated by the pipeline —
we don't hand-write results). Headlines from this run:
- 734 duplicates merged (277 exact, 285 same-email, 172 fuzzy name+company) with a survivorship rule: the most complete record wins, and its duplicates donate their non-empty fields — merging adds data, never destroys it
- Every phone in one format, invalid numbers cleared and counted
- States → USPS codes; lifecycle stages → a 4-value picklist (Lead / MQL / Customer / Churned) so segmentation and reporting actually work
- Emails validated with an
Email Validaudit column (YES / NO / MISSING) — nothing silently deleted - Field completeness up despite removing 700+ rows
Process (what we'd do for you)
- Scope (human): which CRM, how many records, what "clean" means for you (merge rules, picklists, required fields). You get a written spec before we touch anything.
- Dry run (AI agents): the full pipeline runs on an export first — you see the metrics report and a sample of proposed merges before anything changes in your CRM.
- Apply (AI agents, inside your account): executed in your own CRM (HubSpot, Pipedrive, Zoho, Salesforce) via native merge tools/APIs, so history and activity records are preserved. Any enrichment happens within your accounts and your data — we don't sell, pool, or retain client data.
- QA (human): a data engineer samples merges, checks edge cases (two people sharing an office phone are not a duplicate), and signs the metrics report.
- Deliver: cleaned CRM, before/after metrics report, and the rule set — so the next cleanup is cheaper, or so a monthly Data Care plan keeps it clean.
Files in this folder
contacts_raw.csv— messy input (5,000 rows, synthetic)contacts_clean.csv— cleaned output (+ audit column)cleanup_metrics.md— the auto-generated before/after reportclean_crm.py— the pipeline (readable, auditable)generate_crm_data.py— how the synthetic mess was made
Built by Modular Enrichment. AI-assisted delivery, human-QA'd — openly.