Anti-Fragile GTM

Playbooks

CRM dedupe without data loss: the merge-map method

How to deduplicate a CRM at scale while preserving every activity, note, and attribution touch. The method behind our 320k-account cleanup.

The core rule

Never delete, always merge, and always keep a map. A dedupe that loses activity history destroys attribution and rep trust in one move. The merge-map is the artifact that makes the whole operation reversible.

The method

  1. Export everything first. Full snapshot to a warehouse (BigQuery/Snowflake). This is your rollback and your audit trail.
  2. Resolve identity offline. Do NOT dedupe inside the CRM UI. Build candidate pairs in the warehouse: exact domain match, normalized-name match, then fuzzy matching on the remainder with a confidence score.
  3. Human-review the gray zone. Above 0.95 confidence: auto-merge. Below 0.7: leave alone. In between: a review queue (this is where agents help, with citations).
  4. Build the merge-map. A table of loser_id → winner_id with match reason and confidence. This is the single source of truth for the operation.
  5. Merge via API in tranches. Small batches, verify activity counts transfer after each tranche. Stop on any anomaly.
  6. Install the guardrail. New-record webhooks check the merge-map + identity resolution so the duplicates never come back.

What to measure

  • Duplicate rate before/after (unique canonical companies ÷ total records)
  • Activity records preserved (must be 100%)
  • New-duplicate creation rate in the 30 days after (should approach zero with the guardrail)