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.
| # | Source | Name | Phone | Address | Updated | Actions | |
|---|---|---|---|---|---|---|---|
| #1 | Web signup | Jonathan Quill | Jon.Quill@Gmail.com | +44 7700 900123 | 12 Puddle Lane, LF1 2AB | 2026-03-14 | |
| #2 | Store POS | Jon Quill | — | — | lf12ab | 2026-08-02 | |
| #3 | Loyalty app | J Quil | jonquill+loyalty@googlemail.com | 07700900123 | — | 2025-11-20 | |
| #4 | Email list | Liz Marsh | liz.marsh@outlook.com | — | LF3 9QT | 2023-05-01 | |
| #5 | Support desk | Elizabeth Fernsby | Liz.Marsh@Outlook.com | 07700 900456 | 4 Kettle Row, LF3 9QT | 2026-06-10 | |
| #6 | Store POS | Beth Fernsby | — | +44 (0)7700 900456 | LF39QT | 2026-09-01 | |
| #7 | Web signup | Priya Bramblewood | priya.bramblewood@yahoo.co.uk | 07700 900789 | 3 Heron Close, LF7 1DE | 2025-02-11 | |
| #8 | Loyalty app | Priya Bramblewood | pbramblewood@hotmail.co.uk | 07700 900321 | 88 Quarry Road, QX2 8RS | 2026-01-05 | |
| #9 | Support desk | Priya Bramblewod | — | 07700-900-789 | lf7 1de | 2026-07-19 | |
| #10 | Store POS | Margaret Quill | maggie.q@gmail.com | 07700 900654 | 12 Puddle Ln, LF1 2AB | 2026-04-22 | |
| #11 | Email list | Tom Ashdown | tom.ashdown+deals@gmail.com | — | — | 2024-09-30 | |
| #12 | Support desk | Thomas Ashdown | TomAshdown@gmail.com | 0044 7700 900987 | 21 Mill Street, LF9 4HW | 2026-05-15 |
Tip: the table scrolls sideways on small screens.
- 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).
- Score every pair of records by adding up the evidence below (capped at 100).
- 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
Press Resolve identities above. Then drag the slider and watch profiles split apart (strict) or swallow each other (loose).
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.