AI Skills Marketplace / CRM & RevOps

Duplicate Record Merge Resolver

The Duplicate Record Merge Resolver is a free Claude Skill that detects likely-duplicate CRM records using a weighted Jaro-Winkler composite score across company name, domain, and phone, then computes an explainable field-by-field merge plan instead of a blind keep-record-A merge.

↗ View Source ⬇ Download Full Repo (.zip)
MIT
License
3 functions
Decision branches
weighted composite threshold + logged-conflict merge review
Escalation rules
Yes
Multi-tool support
Aug 17, 2026
Last updated
20/20 passing
Tests
README.md View raw ↗

What this is (and isn’t)

A detection and merge-planning engine, not a live CRM integration. You supply candidate record pairs; this scores duplicate likelihood and produces a field-by-field merge plan a human can review before executing.

Files

FilePurpose
resolver.jsjaroWinklerSimilarity(), scoreDuplicateLikelihood(), computeMergePlan() — zero dependencies
test.js20-test suite, including the similarity function verified against published Jaro-Winkler reference values (MARTHA/MARHTA, DIXON/DICKSONX)
SKILL.mdFull skill definition, loadable in Claude Code/Desktop

The two real guardrails

A weighted composite score across company name, domain, and phone rather than one strong signal, re-normalized when a field is missing on either side. And an explainable merge plan: a field present on only one side survives automatically; when both sides genuinely differ, the more recently updated record wins and the discarded value is recorded, not silently dropped, so a human can review every real decision.

FAQ

Is this skill free to use?

Yes. Free to download and run yourself. MV3 charges $175/hr only for implementation help wiring this into your real CRM's actual record and merge APIs.

Does this connect directly to my CRM?

No. It is a pure function over the record data you supply. You still need to pull candidate record pairs out of your CRM and execute the resulting merge plan yourself.

Why Jaro-Winkler instead of simple Levenshtein distance?

Jaro-Winkler is tuned for short strings like company names and rewards a matching prefix more than plain edit distance, which better matches how real duplicate company names tend to differ. The implementation is verified against published reference test vectors.

Does the merge happen automatically?

No. computeMergePlan() returns a proposed merged record and a list of every field where the two records genuinely conflicted, for human review before anything is executed against your CRM.

Does my record data get sent to MV3?

No. All calculations run entirely in your own environment.

JR
Jordan Reeves
ABM & Outbound Pipeline, MV3 Marketing