Demo 01 · Client-side
Disambiguation playground
A naive matcher either splits one career into fragments or merges strangers into one profile. Edit the two records or load a preset, then run the matcher and watch it decide level by level — one level can veto a merge even when every other signal agrees.
It reimplements the general technique behind my CodLab pipeline, on synthetic records — read the case study →
All names, institutions, and identifiers are fabricated — no employer code or data.
Presets
Same person, different name formats — resolved by normalized email at level 01The homonym case that produces mega-clusters — every signal comes up emptyThe veto at level 05 fires despite everything else matching — a conflict overrides agreementMarriage or surname change — the name gate passes on the shared given name, and affiliation merges on its own at level 07Abbreviated name — the strict path demands 2 of 3 signals before it will mergeAnti-snowball merge cap — a record already carrying 3 ORCIDs is rejected before level 01 runs, even though everything matches
Abbreviated name — the strict path demands 2 of 3 signals before it will merge
Record A
Record B
Runs locally in your browser.
PREpending: ORCID merge cap
- 01pending: Email match (normalized)
- 02pending: ORCID match (any shared)
- 03pending: ResearcherID match
- 04pending: ResearcherID fuzzy match
- 05pending: ORCID conflict veto
- 06pending: Name token overlap requirement
- 07pending: Affiliation match
- 08pending: Co-author overlap (2+ shared)
- 09pending: Similarity (name-guarded)