Ask an entity-resolution system why two records were merged into one person and you usually get a number. The number was produced by a model, the model was tuned on a training set, and the analyst who has to act on the merged entity is asked to trust both. Ask why two records with the same name were kept apart, or what to do about three different birth dates on one sanctioned individual, and the number has nothing to say. For an analyst, a reviewer or a court, that is the wrong shape of answer.
This article is for the people who run and evaluate intelligence, sanctions and counter-illicit-finance analytics: analytic tradecraft leads, data architects, the engineers who build resolution pipelines and the reviewers who have to defend their output. It describes what entity resolution looks like when the data substrate treats provenance, confidence and absence as first-class storage rather than as metadata about a score, using a run over a large public sanctions corpus to make each property concrete.
Every merge carries its reasons
In 8DB a merge is a decision with a provenance chain, not an update to a row. When source records are resolved into one entity, the decision records the source atoms, each with a content address, the confidence vector of each source, the governance state in effect, and a signed, reversible anchor. Asking why a set of records became one entity returns that structure, and reversing a merge later is an atomic operation on the chain rather than a restore from backup.
In a run over the public OpenSanctions corpus of roughly 4.28 million records,1 every one of the tens of thousands of merge decisions carried its provenance chain, and the run's determinism signature matched the reference run from a week earlier byte for byte. Reproducibility is the property that makes provenance worth having: the same corpus and the same engine produce the same decisions, so a reviewer can rerun rather than reread.
Same name is not same person
The failure that embarrasses resolution systems is the false merge, and the sanctions domain is built to produce it: a small number of very common names across hundreds of lists. On that corpus the engine correctly merged hundreds of entities whose source records spelled the same Arabic given name six or seven ways across Latin, Hebrew and other scripts, and correctly kept apart hundreds of groups of distinct individuals who shared an identical caption. The discriminators were the ones an analyst would use: different national identifiers, different birth dates, disjoint source datasets. A politician and a sanctioned individual with the same name stayed distinct because date of birth and dataset disjointness outweighed name similarity. Each of those decisions is inspectable, in both directions.
Conflicts are preserved, not resolved by fiat
Sources disagree. One sanctioned individual appears with six different birth years across authoritative lists; another holds passports in three jurisdictions and is recorded with three nationalities. A system that picks one value and moves on has destroyed evidence. 8DB keeps every value, tags the conflict, records which attributes are unanimous and which are contested, and emits an item for human review. Where five of six sources agree on a day and month and differ on the year, that pattern is visible to the analyst rather than averaged away. This is the inverse of what a retrieval-augmented language model does with the same inputs, and it is the structural answer to the question a reviewer will eventually ask: where did this value come from?
Absence is information
Weak-evidence records are not dropped. A single-source entity with no birth date and no nationality stays in the store with an explicit gap manifest and a lowered confidence, and the store distinguishes eight kinds of absence rather than one null: absent, unknown, redacted, existence-hidden, below clearance, stale, frozen and sealed. An analyst asking for a missing field receives the gap, stated, not a guess. Every record carries a multi-axis confidence vector as a storage column: whether the fact is sourced, how many independent anchors support it, whether those sources are truly independent, how recent it is, the quality of the method behind it, how many authorities agree, and whether the source has authority over the claim.2 Two entities can therefore be compared on why they are believed, not only on how much.
Relationships stay whole
Sanctions evasion is an n-ary structure: shell companies, nominee directors, beneficial owners, intermediary banks and a sanctioned principal belong to one fragment. Pairwise graph databases decompose that into edges and lose the fact that the parties belong together. 8DB stores the relationship as one hyperedge with all its participants, its own confidence vector and its own place in the provenance chain, so the structure an analyst is hunting is a first-class object rather than a query someone has to reconstruct.
Scripts and scale
About one in five records in that corpus carried non-Latin name variants in Arabic, Cyrillic, Chinese, Japanese, Korean or Hebrew script, and cross-script merge decisions were preserved identically regardless of source script. The full corpus was ingested and resolved in a single pass on one host with modest memory, and the materialised form kept every record independently addressable and provenance-traceable.3 We would rather show you the mechanism now and the numbers when they meet our own bar.
Governance travels with the entity
Resolution output is only useful if it can be shared with the people entitled to it and no one else. Because governance state is an input to key derivation in 8DB, a resolved entity and its evidence can be labelled so that a reader outside policy fails to derive the key. Provenance, confidence and access control are properties of the same record, which is what allows one resolved picture to serve several communities with different entitlements without being copied and redacted by hand.4
What to bring us
- A representative slice of your data. A corpus extract or a set of the hardest known cases: the false merges that burned you, the true matches that were missed, the conflicts you could not adjudicate. We will run them and return every decision with its provenance.
- Your review standard. What a reviewer, an oversight body or a court needs to see to accept a merge. That becomes the shape of the evidence we return.
- The competitor you want us measured against. We will run side by side on a corpus of your choosing and publish the method with the result.5
Write to hello@8braid.com with the subject "Entity resolution with provenance: evaluation". You will hear back from an engineer.
Sources and further reading
- OpenSanctions: open data on sanctions, politically exposed persons and persons of interest
- FATF Recommendations, including the Travel Rule
- 8DB: Governance That Changes the Ciphertext, Not the Prompt
- 8DB: What an Independent Evaluator Should Be Able to Run
Footnotes
-
May 2026, on a single 32-core cloud host. ↩
-
The confidence and provenance features described here are demonstrations in our independent evaluation package rather than formal acceptance claims, and the package says so; see what an independent evaluator should be able to run for how that line is drawn. ↩
-
Throughput and compression figures are not published here; they are not yet packaged as reproducible benchmarks with the fixtures and environment records our own doctrine requires. Billion-record scale is projected from measured scaling, not directly run. ↩
-
Deployment in accredited environments is downstream engineering. ↩
-
Head-to-head comparisons against established resolution products are not published. ↩
Continue the technical conversation
Where could this help your work?
Bring a research question, a database workload or an application you want to build. Let’s connect the ideas in this article to an evaluation that matters to your team.
Discuss this work