Corporate-Family Resolution Is Not a String-Matching Problem: A Public Benchmark Stratified by Name Visibility
Organizations: Independent Researcher
Abstract
Deciding whether two supplier records belong to the same corporate family is a prerequisite for spend consolidation, credit exposure aggregation and sanctions screening. It is usually treated as entity matching, but the tasks differ: a family link connects records that are deliberately different entities, and the evidence often appears in neither record. We introduce CorpFam, a public benchmark of 54,864 candidate pairs over 10,307 corporate families, derived from 6,638,350 US federal award records in which every supplier self-reports its ultimate parent to a government registry. Pairs are stratified by name visibility: whether the names are identical after normalisation, share a distinctive token, or share none. Because strata have positive rates from 10.2% to 97.3%, we report per-stratum recall, base-rate invariant, rather than F1, which is not. The strongest of 5 matchers recovers 100.0% of identical pairs and 4.2% of invisible ones; no method exceeds 4.7% on the latter. The failure begins before matching. Blocking decides which pairs a matcher sees, and we evaluate 7 schemes spanning phonetic keys, attribute keys that ignore the name, and semantic nearest neighbours. None reaches three percent on invisible pairs, and their union recovers 6.8%. 93.2% of these links never enter the candidate set, so no matching-stage improvement can reach them. The links are real: against SEC Exhibit 21 subsidiary schedules, which share no provenance with procurement registration, 64.2% of invisible links are corroborated, against 0.16% under permuted parents and 0.41% against the same parent's wrong exhibit: two unrelated nulls agreeing to within 0.25 points. Corporate-family resolution is a retrieval problem misfiled as a matching problem; the intervention point is candidate generation, not ranking. The benchmark, adjudication log, and code reproducing every number are released.
Figures & tables
| Stratum | Positive pairs | % |
|---|---|---|
| Identical | 7,541 | 55.0 |
| Visible | 2,953 | 21.5 |
| Invisible | 3,222 | 23.5 |
| All positives | 13,716 | 100.0 |
| Agreement criterion | % |
|---|---|
| Exact parent UEI | 64.9 |
| Normalised parent name | 73.8 |
| Any shared distinctive token | 81.5 |
| Substantively different parent | 18.5 |
| Stratum | Checked | Confirmed | % | 95% CI |
| Identical | 172 | 165 | 95.9 | [91.8, 98.0] |
| Visible | 609 | 548 | 90.0 | [87.3, 92.1] |
| Invisible | 794 | 510 | 64.2 | [60.8, 67.5] |
| All | 1,575 | 1,223 | 77.7 | [75.5, 79.6] |
| Invisible stratum against null conditions | ||||
| Wrong parent, right exhibit (20 permutations) | 15,795 | 26 | 0.16 | – |
| Pair completeness by visibility | ||||||
| Blocking scheme | Candidates | PC (%) | RR (%) | Identical | Visible | Invisible |
| Token blocking † | 1,534,063 | 68.7 | 99.977 | 92.22 | 83.68 | 0.00 |
| First-token blocking † | 636,042 | 52.9 | 99.990 | 78.70 | 44.80 | 0.00 |
| Q-gram blocking (q=4) | 9,022,384 | 71.4 | 99.862 | 97.83 | 78.84 | 2.79 |
| Sorted neighbourhood (w=20) | 2,170,180 | 71.2 | 99.967 | 99.95 | 73.48 | 2.05 |
| Phonetic (Soundex) | 411,063 | 61.3 | 99.994 | 97.32 | 35.96 | 0.25 |
| Recall (%) by name visibility | |||||
|---|---|---|---|---|---|
| Method | AP | Prec. | Identical | Visible | Invisible |
| Exact (normalised) | 65.4 | 97.3 | 100.0 | 0.0 | 0.0 |
| Token Jaccard | 73.5 | 91.8 | 99.2 | 43.5 | 0.0 |
| Sequence ratio | 74.7 | 94.7 | 100.0 | 15.8 | 3.8 |
| TF–IDF char 3-gram | 78.7 | 89.6 | 100.0 | 49.9 | 4.2 |
| MiniLM embedding | – | 88.6 | 100.0 | 64.3 | 4.7 |
| Negative kind | Exact | Jaccard | SeqRatio | TF–IDF | MiniLM |
|---|---|---|---|---|---|
| Random | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| Hard string | 1.0 | 3.6 | 1.6 | 4.6 | 6.5 |
| Same block | 0.5 | 2.2 | 1.7 | 3.2 | 2.6 |
| Overall | by name visibility | |||||
| Feature set | P | R | Identical | Visible | Invisible | |
| Name features only | 79.1 | 47.6 | 59.5 | 96.9 | 51.3 | 31.2 |
| Attributes only | 40.1 | 98.4 | 57.0 | 96.2 | 42.6 | 59.9 |
| Name attributes | 49.5 | 81.7 | 61.7 | 96.9 | 49.0 | 58.4 |
| Answer yes to everything | 38.6 | 100.0 | 55.7 | 96.9 | 40.6 | 59.4 |
| positive rate | 38.6 | – | – | 93.9 | 25.5 | 42.2 |
| B-cubed | Exact | |||||
|---|---|---|---|---|---|---|
| Condition | Cands | Pair | P | R | fam. (%) | |
| Blocked | 5,080 | 32.2 | 85.8 | 45.4 | 59.3 | 16.6 |
| Oracle | 536,130 | 39.4 | 84.3 | 45.1 | 58.8 | 14.9 |
Entity Resolution
Entity resolution links records that refer to the same real-world entity across datasets despite differences in names, attributes, formats, and languages.
See all 40 papers