Duplicate accounts merged with a snapshot, then caught daily
Duplicate accounts and contacts a sync kept creating, grouped by address and ID keys, merged with snapshots and human approval, and flagged daily after that.
- Salesforce
- Custom
The problem
An integration created a fresh account whenever it couldn't match one. Over time, the same dealer existed twice: one copy with the orders, one with the contacts, and leads pointing at neither. Revenue reports split. Rep attribution split.
What we built
A sweep that groups accounts by address and external ID keys and proposes a merge per group. Before anything changes, every record in the group is snapshotted, so the merge can be reversed. The surviving record keeps every value either copy had: if one copy had a phone number and the other a tax ID, the survivor gets both. A person approves each batch before it runs. The same pass consolidated 117 leads onto the accounts they belonged to.
Then a daily job. It runs the same grouping against anything created since yesterday and flags new duplicates, so the sweep never has to be repeated by hand and a shadow account gets caught the day it appears.
No AI in this build. Here's why that was right: two accounts that share an address or an external ID are the same account. A key match is a rule, and a merge you can't reverse needs a rule you can read.
Grouping by address and ID keys, a snapshot of every record before it changes, blank-fill carry so the surviving record keeps every value either copy had, a human approval on each batch, and a daily job that flags new duplicates.
Outcome
986 of 988 duplicate contact clusters and 187 of 188 duplicate retail-account groups merged, each with a snapshot taken first; the rest held for a person to decide. 87 field values and 16 eroded external IDs restored on the surviving records.
Who this fits
- Teams whose integration creates a new account whenever it can't find a match
- Sales leaders whose revenue is split across two copies of the same customer
- Anyone who has been told a duplicate merge can't be undone