Entity Resolution Workbench
The same messy-records problem that appears in every large organization: one real-world vendor, five spellings. Below are twelve synthetic records with realistic damage — typos, abbreviations, swapped fields, missing values. The pipeline blocks candidates, scores pairs with Jaro-Winkler across weighted fields, and clusters transitively. Drag the threshold and watch decisions change.
How it works
Blocking first: comparing every record to every other is O(n²), so candidates are limited to records sharing a normalized name token or phone digits — the trick that makes this tractable at millions of rows. Scoring: Jaro-Winkler similarity on the name (weight 0.55), city (0.15), phone digits (0.20, exact-biased), and account code (0.10), with missing fields redistributing their weight rather than counting against the match. Clustering: union-find over pairs above threshold, so A~B and B~C put A and C in one entity even if A~C scores low — which is both the power and the classic failure mode (chain merges), and why the threshold slider is the most important control on the page.