Skip to content

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
  1. 01pending: Email match (normalized)
  2. 02pending: ORCID match (any shared)
  3. 03pending: ResearcherID match
  4. 04pending: ResearcherID fuzzy match
  5. 05pending: ORCID conflict veto
  6. 06pending: Name token overlap requirement
  7. 07pending: Affiliation match
  8. 08pending: Co-author overlap (2+ shared)
  9. 09pending: Similarity (name-guarded)