Lab

Who is this customer, really?

Twelve messy records, five systems, one question: how many people are actually here?
Step 1 · The data
12 records from five systems. How many people?

Every name here is made up and the phone numbers come from Ofcom's range reserved for TV drama. The mess is realistic though: nicknames, typos, Gmail dots and +tags, three phone formats, a surname change, a shared house, and two different people with the same name.

#SourceNameEmailPhoneAddressUpdatedActions
#1Web signupJonathan QuillJon.Quill@Gmail.com+44 7700 90012312 Puddle Lane, LF1 2AB2026-03-14
#2Store POSJon Quill——lf12ab2026-08-02
#3Loyalty appJ Quiljonquill+loyalty@googlemail.com07700900123—2025-11-20
#4Email listLiz Marshliz.marsh@outlook.com—LF3 9QT2023-05-01
#5Support deskElizabeth FernsbyLiz.Marsh@Outlook.com07700 9004564 Kettle Row, LF3 9QT2026-06-10
#6Store POSBeth Fernsby—+44 (0)7700 900456LF39QT2026-09-01
#7Web signupPriya Bramblewoodpriya.bramblewood@yahoo.co.uk07700 9007893 Heron Close, LF7 1DE2025-02-11
#8Loyalty appPriya Bramblewoodpbramblewood@hotmail.co.uk07700 90032188 Quarry Road, QX2 8RS2026-01-05
#9Support deskPriya Bramblewod—07700-900-789lf7 1de2026-07-19
#10Store POSMargaret Quillmaggie.q@gmail.com07700 90065412 Puddle Ln, LF1 2AB2026-04-22
#11Email listTom Ashdowntom.ashdown+deals@gmail.com——2024-09-30
#12Support deskThomas AshdownTomAshdown@gmail.com0044 7700 90098721 Mill Street, LF9 4HW2026-05-15

Tip: the table scrolls sideways on small screens.

Step 2 · Match
Normalise, score every pair, cluster
  1. Normalise. Lower-case emails; for Gmail drop dots and +tags and treat googlemail.com as gmail.com. Phones to digits only, +44 → 0. Postcodes upper-case without spaces. Nicknames to formal names (Jon → Jonathan, Liz/Beth → Elizabeth).
  2. Score every pair of records by adding up the evidence below (capped at 100).
  3. Cluster. Any pair at or above the threshold is linked, and links chain together (union-find): if A matches B and B matches C, all three are one person.
  • strong Same normalised email +60
  • strong Same normalised phone +50
  • medium Same name (after nicknames) + same postcode +35
  • medium Near-identical name (typo) + same postcode +25
  • weak Same address, different name — a household, not a person +15
  • weak Same name, but no shared location +10
Step 3 · Unified profiles
Run the resolver to see the profiles
LooseStrict
Balanced — strong identifiers plus name-and-postcode. Email and phone matches merge, and so does the same name at the same postcode. A shared address on its own and a shared name in a different town are noted but not trusted.

Press Resolve identities above. Then drag the slider and watch profiles split apart (strict) or swallow each other (loose).

Why it matters
One customer, many records

Every business I work with has the same problem wearing different clothes. Someone signs up online with one email, pays in store, joins the loyalty app under a nickname, and rings support after changing their surname. Each system is right about its own slice and wrong about the whole person.

Identity resolution stitches those slices together. Deterministic matching says: same normalised email or phone, same person. It's precise and easy to explain, but it misses anyone whose identifiers never overlap. Probabilistic matching weighs softer evidence (similar names, shared postcodes, typos) into a score. It catches more, and gets more wrong.

The threshold is where that trade-off lives. Too strict and you under-merge: duplicate mail, a fragmented history, a customer asked the same question three times. Too loose and you over-merge: a household becomes one person, strangers share a profile, and someone sees data that isn't theirs. Precision and recall pull in opposite directions.

Hand-tuned rules like these are fine for twelve records. At hundreds of millions, with every source messy in its own way, that's where machine learning earns its keep: learning which evidence really predicts a match instead of guessing the weights by hand.

A simplified illustration — not how any specific product works.