Fan identity resolution

The same fan buys tickets in Archtics, exists in KORE, shops the team store, orders on the concessions app, and opens the newsletter — as five different records. This model matches a simulated fan base across those systems and shows the tradeoff at the heart of entity resolution: merge too eagerly and you combine different people; too cautiously and one fan stays five strangers.

Match threshold

Minimum pair score to merge

0.72

Pairs are scored on weighted agreement: email 0.45, phone 0.30, name similarity 0.35, address 0.20, with a penalty when first names conflict. Records join a profile when a path of pairs clears the threshold.

Source systems

Ticketing

601

CRM

496

Retail

365

Concessions app

326

Email list

587

Simulated with the corruptions real data has: nicknames, typos, secondary emails, missing phones, and spouses sharing an email and address.

Resolution at threshold 0.72

886

resolved fan profiles from 2,375 raw records across five systems

63%

Duplication removed

719

Multi-system profiles

The tradeoff — measured against known truth

The fan base is simulated, so ground truth is known. Move the threshold and watch the two error types trade: precision falls when households over-merge; recall falls when name variants split.

90.0%

Pairwise precision

97.5%

Pairwise recall

70%80%90%100%0.500.650.800.95precisionrecall

precisionrecallDashed line marks the current threshold — click the chart or use the slider to move it.

One fan, 5 systems

TicketingJen Weber$6,380CRMJen WeberRetailJennifer Weber$396Concessions appJen Weber$794Email listJennifer WeberOne fan profile$7,570 / yr
SourceName on recordEmailPhoneZip12-mo spend
TicketingJen Weberjennifer.weber62+t@example.com716555813314213$6,380
CRMJen Weberjennifer.weber62@example.com716555813314213
RetailJennifer Weberjennifer.weber62@example.com716555813314213$396
Concessions appJen Weberjennifer.weber62@example.com716555813314213$794
Email listJennifer Weberjennifer.weber62+e@example.com14213
Unified profile$7,570

Reading the model

  1. 01

    2,375 raw records resolve to 886 fans at the current threshold — a 63% duplication rate. Every count, campaign, and lifetime-value number computed on raw records is inflated by that amount.

  2. 02

    At threshold 0.72, pairwise precision is 90.0% and recall is 97.5%. Lowering the threshold merges more true duplicates but starts combining household members who share an email and address; raising it splits real fans across systems. The threshold is a business decision, not a technical one.

  3. 03

    The example below shows why this precedes lifetime value: one fan's spending looks like 5 unrelated mid-size customers until the records merge — $7,570 of annual spend becomes visible as a single relationship.

Method

Candidate pairs come from blocking — records sharing a normalized email, a phone number, or a last-name prefix within a zip code — so the comparison space stays tractable. Each pair is scored on weighted field agreement with nickname canonicalization (Bob is Robert), edit-distance name similarity, address normalization, and a penalty for conflicting first names, which is what keeps most spouses apart despite a shared email and address. Records cluster by union-find over pairs above the threshold, and metrics are computed on the transitive closure, the honest way: a bad merge poisons the whole cluster it joins.

This is the unglamorous model everything else depends on. Lifetime value, renewal risk, lead scoring, and campaign measurement all assume one row per fan; on raw records they run on inflated denominators. In production this is deterministic-plus-probabilistic matching (a Fellegi–Sunter-style framework or a commercial CDP), with survivorship rules choosing the best field values for the golden record, human review queues for borderline scores, and household modeling as a feature rather than a failure mode.

The fan base is simulated (seeded, stable across visits): 800 households’ worth of fans scattered across five systems with realistic corruptions. Ground truth is retained so precision and recall are exact, not estimated.