Think Build Implement Repeat
London, UK +44 7367 067226
WhatsApp FOLLOW f in X
  1. Home
  2. Blog
  3. Finding the Same Thing Written Differently
Python & Django

Finding the Same Thing Written Differently

Deduplicating customer, supplier and product records: exact matching first, fuzzy matching with human review, safe merging and preventing new duplicates.

Updated 2 min readBy SpiderHunts Technologies

Free estimateNo obligation

Get a free estimate

Tell us what you need. A senior engineer reads every enquiry.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →

Quick answer — TL;DR

Exact matching finds the easy duplicates. Fuzzy matching finds the rest and needs human review — never merge automatically on a probabilistic match.

Duplicates are near-universal

Every business with more than a few years of records has duplicate customers, suppliers or products. They accumulate through data entry, imports, mergers and systems that do not check.

Duplicate master records are the single most common blocker in integration and reporting projects. Validation against a master with four versions of one customer produces four different answers.

Two stages

  1. Exact matching on identifiers — registration numbers, email addresses, codes
  2. Fuzzy matching on names, addresses and other text, scored and reviewed

The first is safe to act on automatically. The second is not, and should always produce a review queue rather than a merge.

What makes fuzzy matching work

  • Normalise first — case, punctuation, common abbreviations, legal suffixes
  • Compare several fields, not one
  • Weight the fields by how distinctive they are
  • Block on something cheap first, so you are not comparing everything to everything
  • Score, then threshold, then review

Merging is the risky part

ConsiderationWhy
Which record survivesUsually the one with most history
What happens to related recordsThey must all repoint
What if it was wrongMerges are hard to reverse — keep an audit
Who approvesA person, for anything fuzzy
What about external systemsThey may hold the old identifier

Keep a record of every merge and what it combined. Undoing a wrong merge without that record is close to impossible.

Prevent recurrence

Deduplication is a one-off exercise unless the creation process is changed. A check at the point of creation — does something similar already exist? — prevents most of it.

Otherwise you will be running the same exercise again in two years.

FAQ

Frequently asked questions

The questions readers ask us after this guide.

Still have a question?

Ask us directly — a senior engineer will get back to you.

Ask about your project

How accurate is fuzzy matching?

It finds most genuine duplicates and produces false positives, which is why review is required. Precision improves with more fields compared.

Should we merge automatically?

Only on exact identifier matches. Probabilistic matches need a person, because a wrong merge is expensive.

How long does deduplication take?

A few days to build, then review time proportional to how many candidates there are. Review is usually the larger part.

Can AI help?

Yes — matching things written differently is something models do well, particularly with company names and addresses.

Keep reading

More on Python & Django

Python & Django

An API Other Systems Can Depend On

Designing a Python API service others can depend on: validation at the boundary, consistent errors and status codes, early versioning and documentation.

Python & Django

Moving and Transforming Data Reliably

Building data pipelines in Python that cope with malformed input: restartable stages, quarantining failures, reconciling counts and alerting on absence.

Start here

Four versions of the same customer?

That is blocking your reporting and any future integration. Happy to look at the scale of it.

  1. You tell us what you needTwo minutes on the form, or a message on WhatsApp.
  2. A senior engineer reviews itAnd comes back with questions, a realistic range and an honest view on fit.
  3. Free 30-minute scoping callWe talk through scope, options and a realistic estimate — with no obligation.
Free estimateNo obligation

Talk to someone who builds this

Send a short brief and we will come back with an honest view and a realistic range.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →