RevOps playbook · AI Employee: Rev

Account & Contact Dedupe

CRM dedupe rate > 99%

The problem

Duplicate CRM records are the tax nobody wants to pay. Every rep who's ever manually created an account instead of searching first has planted one. Every dropped-in list from marketing has grown them. Every acquisition has doubled them. By the time your CRM has 50k accounts, 15% are duplicates — mis-routing leads, breaking attribution, polluting every dashboard downstream.

At a glance
Trigger
Cron (nightly)
Approvals
Bulk merge review threshold
What it does
Writes to your systems
Systems
Salesforce · HubSpot
How it feels in production

An hour-by-hour walkthrough.

Nightly at 2am, Rev scans the entire CRM. Finds 47 high-confidence account duplicates (same domain, same normalised name), 128 medium-confidence (same domain, similar name), and 12 low-confidence contact matches spanning multiple accounts. For the 47 high-confidence: Rev auto-merges, keeping the older record and its owner, migrating all opportunities and contacts, preserving the audit trail. Merge report posts to the RevOps channel with a one-click undo per merge. For the 128 medium-confidence: Rev queues to the review dashboard with the confidence score, the fields that match, the fields that don't. RevOps reviewer taps through in 30 minutes; auto-merge for the ones they confirm, manual resolution for the edge cases. For the 12 low-confidence contact matches: escalates to the record owners with context ("looks like Priya Nair at Acme and Priya Nair at Contoso might be the same person who changed jobs — was this outreach intended for the new company?"). Records opened for editing in the past 24h are excluded from auto-merge — never disrupts an active rep. Every merge writes to audit; every reversal is logged.
How it works

Step by step.

  1. 01

    Detect duplicates by domain, email, fuzzy name

    Nightly scan reads all accounts + contacts. Detects duplicates using: exact domain match, exact email match, fuzzy name match (Levenshtein), plus optional enrichment-based match (Clearbit / ZoomInfo confirms same company).

    Salesforce · HubSpot · ZoomInfo · Clearbit
  2. 02

    Merge or flag high-confidence dupes

    Confidence >0.9: auto-merge. Keep the older record (or the record with more activity, per your policy). Migrate opportunities, contacts, activities. Preserve audit trail.

    Salesforce · HubSpot
  3. 03

    Route low-confidence to review

    Confidence 0.6-0.9: queue to the RevOps review dashboard with side-by-side comparison. Reviewer taps approve / reject / edit. Sub-0.6 doesn't surface unless a rep explicitly asks Rev to check.

    Dashboard · Slack
  4. 04

    Report changes to RevOps

    Daily digest to the RevOps Slack channel: N merges, N reviews queued, N reversals from previous day. Trends surface over time; anomalies (sudden spike in dupes usually = a bad marketing import) flagged.

    Slack
Systems and wiring

What you connect to make this run.

Salesforce

read+write

OAuth credential with account + contact merge scopes. Merge API called directly; audit trail preserved via Salesforce's own merge history.

HubSpot

read+write

OAuth with company + contact scopes. Same merge pattern; HubSpot's audit trail preserved.

ZoomInfo · Apollo · People Data Labs · Clearbit

read

Optional enrichment layer. Rev uses vendor data to confirm 'same company' or 'same person changed jobs.' Improves confidence scoring materially.

What changes

Before and after, honestly.

Duplicate rate in CRM
Before
10-20% of accounts, growing over time
After
Under 1%, held stable
Reps manually merging records
Before
~30 min/rep/week
After
Zero (Rev handles it or queues for RevOps review)
Attribution reports affected by duplicates
Before
Nearly all reports carry a duplicate-error footnote
After
Attribution is reliable; footnotes disappear
Marketing lead-import quality
Before
5-15% of imports create dupes
After
Import dedup runs pre-load; duplicates surface as suggestions to the marketer
Frequently asked

Answers about this playbook.

What if two reps 'own' the two duplicate records?

Ownership rules configurable. Default: keep the record with more recent activity (usually the more-worked one). If both are actively worked, escalate to the RevOps reviewer with context — the losing rep gets a notification with the merge rationale, not a silent removal.

Can we exclude specific accounts from auto-merge?

Yes — an exclusion list at the account level (e.g. "never auto-merge our top-20 strategic accounts"). All merges on excluded accounts go to human review.

What if the merge is wrong?

Every merge is reversible from the merge report for 30 days. After 30 days, historical data preserved but the merge is treated as final. Reversal writes to audit like the merge did.

How does this handle person-changed-jobs vs. duplicate person?

Enrichment-based check. If enrichment says the person is at Company B now (updated LinkedIn / job change signal), Rev creates a NEW contact at Company B instead of merging with the old one. Preserves the historical activity at Company A.

Does it work for a company with 500k accounts?

Yes — indexed hashing on domain + name makes the scan sub-linear. Nightly scan on a 500k-account CRM completes in under 2 hours.

See it run on your data.

Free plan, no credit card. Connect the systems this playbook needs and run it against a past event first.