Growth-stageCybersecurity

Deduplicating a ~250k-record CRM and rebuilding the market map with an enrichment engine

~3.4k duplicate company records and ~2.4k duplicate contact records merged

HubSpotClay
Play leadEduardoSystems Consultant · LeanScale

The problem

The CRM held roughly a quarter of a million records with no deduplication discipline and large firmographic holes, on the order of 125k contacts missing at least one core field, and around 85k companies with no associated persona contact at all. Without a clean, tiered account base, everything downstream was running on guesses: ABM targeting, outbound, lead routing, territory design and basic performance reporting.

The play

  1. 1
    Picked a merge tool, then wrote the matching logic separately

    Assessed the ~250k-record database and selected a dedicated deduplication tool to execute merges, but built the detection logic in an enrichment platform instead of relying on the vendor's defaults, so the matching rules were explicit, reviewable and reusable.

  2. 2
    Layered contact-matching rules and surfaced the flag in the CRM

    Contacts matched on same email; same name plus associated company ID; same name plus company name; and same name plus phone.

  3. 3
    Merged companies on a descending ladder of confidence

    Domain first, then name plus region plus phone, then name plus city plus region plus street, then name plus postal code plus region, with a name-only fallback last. Explicit handling for clusters of more than two duplicates, and separate merge logic for the case where only one duplicate had domain and address populated versus the case where none did.

  4. 4
    Made every merge reversible before running any of them

    Full-field backups of every record about to be merged, plus ID mappings for merged contacts and companies, so a bad merge could be reconstructed and any downstream system pointing at a retired ID could be re-pointed.

  5. 5
    Defined the ICP as a matrix before spending a credit on enrichment

    Separate tier matrices for end customers and for channel partners, each scored across geography, industry, headcount band, revenue band, the security tooling present in the target's stack, and the champion persona, with an explicit off-limits tier rather than an open-ended bottom.

  6. 6
    Enriched against the measured gaps, and reported the yield honestly

    Company enrichment for headcount, location, industry, revenue and name; contact enrichment for title, first and last name, country and profile URL. Company recovery was strong, roughly 44k of ~60k missing industry values, ~26k of ~39k headcounts, ~19k of ~31k locations.

  7. 7
    Tiered the whole database and made the tiers live in the CRM

    A workflow sets the tier field; segments and reporting hold the population under two rule sets, one including industry, one on geography and headcount alone, so the effect of the industry filter on addressable volume was visible.

What it moved

~3.4k duplicate company records and ~2.4k duplicate contact records merged

Executed against explicit, layered matching rules, with full-field backups and ID mappings retained for every merge.

Company firmographics recovered at scale, contact firmographics much less so. Industry, headcount and location were filled for roughly two-thirds of the companies missing them, about 73%, 67% and 60% respectively.

From a LeanScale case studyRead the full case study →

More from Eduardo