Learn with Phoebe Β· Data Engineering & Infra

Learn Entity Resolution with Phoebe

Two systems describe the same customers and nothing joins them. There is no shared id, the emails disagree, and one person appears three times under two surnames. Six sessions build a working matcher over Meridian - 63 records covering 32 real people - and end at the finding that decides how the whole thing should be designed: two pairs that score exactly the same match weight, where one is the same person and one is a father and his son. No threshold separates them, which is why Fellegi and Sunter specified a band for a human and why almost every production system quietly drops it.

6sessions
63labelled records
32real people behind them
1953possible pairs, 1.8% are matches
45min per session

The six sessions πŸ”— Β· one customer master, built across all of them

Every session adds a stage to a real matcher, and every number it reports is computed against the labels rather than asserted.

πŸ”‘ Session 1 Β· start here

No shared key

Two CRMs, a support system, and nothing that joins them. The five pipeline stages, the pair count that grows as the square, and the labelled truth that makes everything later measurable.

β–Ά Start here
πŸ“ Session 2 Β· foundations

Comparing strings honestly

Seven ways to score how alike two names are, each taught with the case where it is confidently wrong - including where Jaro-Winkler's prefix boost cannot help at all.

πŸ§ͺ live metric lab
βš–οΈ Session 3 Β· the core

Fellegi-Sunter, and the band nobody implements

The two probabilities that turn a similarity into evidence, and the structural point almost every system drops: two thresholds, with the pairs between them belonging to a human.

β˜… the whole argument
🧱 Session 4 · hands-on

Blocking

Four ways to throw away most pairs before scoring them, and the three metrics that judge the choice. Every scheme here costs nine percent of the true pairs, permanently.

the irreversible stage
🎯 Session 5 · hands-on

Judging it

Precision and recall on pairs, why this field never reports accuracy, and the two opposite ways transitive closure gets the cluster count wrong.

πŸ”¬ score three configs
πŸ›‘οΈ Session 6 Β· capstone

Master data, and the linkage you should not make

Golden records, survivorship, and the four styles - taught with their real provenance, which is analyst frameworks rather than papers. Then the linkage you could make and should not.

πŸ”’ write a refusal
start here foundations hands-on capstone

Your passport 🎫

Clear all three quiz questions in a session and it gets stamped. Stamps live in this browser only.

Choose your path πŸ—ΊοΈ

Everyone starts at session 1, because the labelled set is what makes the rest measurable rather than arguable.

βš–οΈ I need the model, properly 1 β†’ 2 β†’ 3 similarity, then evidence, then the band
πŸ—οΈ I have to make it run at scale 1 β†’ 3 β†’ 4 β†’ 5 the model, then blocking, then how to judge it honestly
🎯 The whole build 1 β†’ 2 β†’ 3 β†’ 4 β†’ 5 β†’ 6 from no join key to a golden record and a written refusal

What is real here 🧾

A course about judging other people's matching has to be exact about its own.

ClaimStatus
Every similarity score and match weightReal implementations running in your browser - Jaro-Winkler with the prefix capped at 4 and scale 0.1, Levenshtein, Damerau-Levenshtein, Jaro, Jaccard and Soundex. Type two strings into the session 2 lab and the seven numbers recompute as you type
Precision, recall, F1, pair completeness, reduction ratio, cluster countsComputed against the 35 labelled true pairs at the moment you move a control. Nothing is scripted and no figure is looked up
The two pairs that both score 0.84A genuine property of the data, not a staged demonstration. One is Sarah Whitfield after a job change and a move; one is a father and son sharing a landline. Both single-threshold rules measure F1 0.971 and neither can do better
The m and u probability tableA judgement, not a measurement. It stands in for what Splink would estimate with expectation maximisation on a real corpus. Labelled as such on the widget itself. Everything computed from it is real arithmetic
Blocking costs nine percent of the true pairsMeasured on all four schemes. Postcode, surname soundex and sorted neighbourhood all land at 91 percent pair completeness on this data
Master data management's four implementation stylesAttributed to Gartner consistently across five independent vendor sources, with no primary Gartner note obtainable. Taught as an analyst framework, never as an academic citation. "Golden record" has no traceable originating citation either, and "survivorship rules" is vendor vocabulary
Sorted neighbourhood, B-cubed, MinHash, and the PETS 2011 cryptanalysisReal work, cited from secondary sources rather than fetched primaries. Flagged on the page that teaches each
PDPA and entity resolutionNot covered. Session 6 reasons about GDPR identifiability and purpose limitation, and says plainly that no GDPR clause names record linkage and that PDPA was not researched

The knowledge map 🧠

The whole course at a glance - hover a session to spotlight its concepts, click any node to jump in.