Cite it
The repository carries aCITATION.cff,
so GitHub shows a “Cite this repository” button (sidebar → Cite this
repository) that exports BibTeX / APA. Cite the headline package as GoldenMatch
(Golden Suite), author Ben Severn, MIT-licensed, at
github.com/benseverndev-oss/goldenmatch.
Reproduce the benchmarks
Every published headline number maps back to a committed runner (scripts/run_benchmarks.py) with a pinned environment and a stated tolerance. The
canonical guide is
docs/reproducing-benchmarks.md
— it gives the dataset source, drop location, and expected output per number.
No-LLM numbers are deterministic given fixed seeds and a fixed dataset (allow
sub-0.1 pp drift from
rapidfuzz reduction order). --with-llm runs are not
re-runnable targets — treat them as single observations.The Splink head-to-head (and its honest framing)
GoldenMatch’s zero-tuning probabilistic (Fellegi-Sunter) auto-config is benchmarked against an expert hand-rolled Splink config on one shared evaluator across every dataset Splink scores. Full writeup, including per-dataset P/R and performance:docs/benchmarks/2026-06-09-splink-bakeoff.md.
Read the caveats before quoting these:
- These are pairwise F1 under one shared evaluator (
evaluate.evaluate), so all engines are judged by identical code. The often-cited ~0.97 Splink number onhistorical_50kis a cluster/entity metric, not exhaustive within-cluster pairwise F1 — under this harness Splink scores ~0.757 pairwise (recall-bound; no single field exceeds 0.60 recall → ~0.93 pairwise ceiling for any engine). The honest claim is “matches/beats Splink on the same evaluator,” not “0.97 pairwise.” - Reproducible as of the determinism fix (#829). The earlier figures rested on a non-deterministic EM training-pair sample (one CI run gave 0.805 / 0.779 / 0.643 for the identical path); sorting blocks by a stable key before the seeded shuffle made it reproduce within 0.002.
- Splink is faster (3–19× on these datasets) and retains distributed F-S at 1B+ rows on Spark plus the mature m/u comparison-viewer UI. GoldenMatch’s edge is zero tuning and accuracy parity.
- Bibliographic data: the probabilistic path is weak on
dblp_acm(F1 0.377, recall-bound); use the weighted path there (0.964), not probabilistic.
Evaluation methodology
The same primitives are available to you for your own measurements — pairwise precision / recall / F1 against a ground-truth pair set, cluster-level B³, and ground-truth-free run comparison (CCMS / Talburt-Wang Index). See the Evaluation guide for theevaluate, evaluate_clusters,
compare_clusters, and goldenmatch evaluate --threshold-sweep APIs.
Research arcs (documented negative results)
Two exploratory ER designs are written up honestly, including where they didn’t pan out — useful as prior art:Amortized Bayesian ER
A calibrated neural posterior over the partition with EIG-driven active labelling. Mechanisms validated, not accuracy-competitive.
Landscape-sculpting ER
ER reframed as sculpting an attractor landscape. Novel framing, but cosmetic — same partition as a calibrated discrete split/merge loop.
Compare against other tools
Vendor & tool comparison
GoldenMatch vs Splink, Dedupe, Senzing, and others — feature and accuracy axes.
Entity resolution concepts
Blocking, scoring, clustering, survivorship — the model the benchmarks exercise.