Ten million business records from three sources, written three different ways. For each pair, the question is whether they describe the same company. Try the matcher on two records, or read how the full pipeline got from 17 trillion possible pairs to 5.4 million matches.
Lower-case, strip accents, transliterate Hindi script, drop legal words (Pvt, Ltd, LLC, SARL…), unify Road/Rd, remove state names. Shared words are highlighted.
Two records are only compared if they share at least one rare key. This is how 17 trillion pairs shrink to 50 million.
Each bar is one similarity score times its learned weight. The total becomes the probability above.
This in-browser version uses 8 features and a logistic model trained on generated look-alike data, so every step is visible. The competition pipeline used about 50 features and two LightGBM models.
Test set, real numbers. The bars use a log scale: each grid step is 10× fewer pairs.
The two-stage model looked best on held-out training data, then dropped on the real test set. The test set had more look-alike decoys per business (5.8 records vs 4.7), so its extra matches were mostly wrong. Keeping only the pairs that two differently built models agreed on brought precision back: 0.935.
Close the recall gap for Indian records with short addresses and non-Latin names (India's recall ceiling was 0.895, vs 0.956 for the US), and try graph clustering over all records of one business. The top team reached 0.991, so a large idea is still missing.
Free Google Colab: 2 CPU cores, 12.7 GB RAM, no GPU. About 1.5 hours per full run. Only permissively licensed libraries: PyArrow, RapidFuzz, LightGBM, indic-transliteration. No external lookups.
France appeared only in the test set, so the model never uses country as a feature.