# Match, the company-matching model · Dscvry

> Match decides whether two records are the same company, and merges automatically only when the evidence is there. The rest goes to a person, with the reason.

Source: https://dscvryai.com/technology/models/match/

# Introducing Match, our company-matching model.

Know when two company records are the same business. And when they aren’t. Match merges only when the evidence is there, and shows you why.

See how it decides · See the results · Request an evaluation ·

Evaluation release · October 2026

Runs offline On ordinary CPUs No GPU Records never leave you

## It matches only when it is sure.

A missed match costs a few minutes of review. A wrong merge can pay the wrong supplier. **Match automates the clear cases and hands you the rest, with the reason.99.98 %** of automatic matches correct on a sealed benchmark, run once: 75,324 of 75,334

**0.084 %** ceiling on the error rate of those matches at 95% confidence, against a target of 0.1% set before the run

**2.3 ms** per comparison on a Raspberry Pi 400, one core, offline

Measured on this benchmark. Your records are measured in a pilot.

## Every duplicate is a decision.

Similar names are easy to find. **Knowing they are the same business is the hard part.**

### Same name, different firm

Two firms, one name, two towns. Name-matching tools merge them. Match asks a person.

### The company that was renamed

Names change and get reused. Match checks the register’s name history first.

### The tax numbers that disagree

Different VAT numbers mean two legal entities. Match never merges them.

## See how it decides.

Five pairs of records, and the evidence Match weighed for each. **Every answer shows its reasons.**

### Same supplier, two systems

Your ERP **Harbourline Logistics Ltd**14 Quay Road, Norwick

Accounts payable **HARBOURLINE LOGISTICS LIMITED**14 Quay Rd, Norwick

The evidence Match weighed

- Supports the match: Same name once capitals and “Limited / Ltd” are tidied up
- Supports the match: Same legal form: Ltd
- Supports the match: Same town and street
- Supports the match: No other company in the list comes close

Matched automatically Safe to merge. Nobody needs to look.

### Same name, different firm

Invoice **Northgate Electrical Ltd**Leeds

Supplier list **Northgate Electrical Ltd**Plymouth

The evidence Match weighed

- Supports the match: Same name and legal form
- Against the match: Different towns: nothing confirms it is the same business
- Note: Name-only tools would merge these two. Match will not.

Sent to a person Identical names are not enough.

### Renamed company

Old invoice **Brightwell Foods Ltd**Market Street, Kendal

Supplier list **Brightwell Foods Ltd**Market Street, Kendal

The evidence Match weighed

- Supports the match: Same name, legal form and address
- Against the match: The register shows another company in your list used this name before
- Note: After renames, names pass to sister companies, so this could be either one

Sent to a person The name has changed hands.

### Conflicting tax numbers

New supplier **Vantor Systems GmbH**Hamburg · VAT DE 811 234 567

Supplier list **Vantor Systems GmbH**Hamburg · VAT DE 811 998 210

The evidence Match weighed

- Supports the match: Same name, legal form and town
- Against the match: Different VAT numbers: these are two legal entities

Not merged Two companies, kept apart.

### Abbreviated name, same VAT

Bank statement **INTL FREIGHT SVCS**VAT GB 274 5561 08

Supplier list **International Freight Services Ltd**Felixstowe · VAT GB 274 5561 08

The evidence Match weighed

- Supports the match: Abbreviations expanded: “Intl”, “Svcs”
- Supports the match: Same VAT number, verified at source on both records: decisive on its own

Matched automatically The tax number settles it.

Replay of real engine outputs. Made-up companies.

## Where it fits.

Anywhere the same company shows up under different names. **Start with the supplier master.**

### Supplier master clean-up

One supplier, three records across ERPs and accounts. Merge the safe ones, review the rest.

### Paying the right company

Check that the firm on an invoice or bank line is the supplier you think it is, even after a rename.

### New supplier checks

See whether a “new” supplier is already on your list, or only shares a name with one.

### Bringing systems together

Merging ERPs after an acquisition or a migration, without fusing two companies’ histories.

### Customer records

A customer spelled one way in the CRM and another in the payment file, joined up safely.

### Matching to official registers

Link your records to a public company register by its official identity. It is what we measured.

## Results on a sealed benchmark.

Real companies from seven public registers, graded by official identifiers, not by opinion. **Registered in advance and run once on data Match had never seen.**

| Query type | Queries | Automatic matches | Automated | Wrong |
|---|---|---|---|---|
| Same company, name spelled alike in both registers | 86,597 | 74,745 | 86.3% | 1 |
| Same company, name differs between registers | 2,821 | 267 | 9.5% | 0 |
| Same company, renamed (the query uses a former name) | 29,958 | 313 | 1.0% | 0 |
| Same company, name in another script or transliterated | 13,474 | 0 | 0% | 0 |
| True company not in the list (any match is wrong) | 60,008 | 9 | – | 9 |
| Benchmark total | 192,858 | 75,334 | – | 10 |
| Sanity check, outside the benchmark and the bound (a record queried against its own copy) | 1,506 | 666 | 44.2% | 0 |

Selective by design. When the names agree, Match automates 86% of the work. When a company has been renamed or written in another script, it hands the case to a person instead of guessing.

99.98% of automatic matches were correct (75,324 of 75,334). How these figures were measured is in the method note below.

## Against open-source matchers.

Same queries, same candidates, same rule for setting each threshold. **Match made more correct matches with about one twentieth of the errors.**

| System | Automatic matches | Wrong | Weighted 95% bound |
|---|---|---|---|
| Match 0.6.4 | 75,334 | 10 | 0.084% |
| Dedupe (trained on registry pairs) | 59,019 | 232 | 1.43% |
| Splink, Fellegi-Sunter | 50,445 | 214 | 1.56% |
| RapidFuzz name similarity | 96,809 | 9,356 | 25.1% |

Name similarity alone gets about 1 in 10 wrong: two firms with the same name in different towns score perfectly. This compares the decision step only, as set out in the method note.

## How it behaves.

What it needs, what it defers, and how it is built.

It knows when it isn’t sure

A high similarity score is not enough to act on. Match separates the score from the decision. It matches automatically only when the top candidate scores high, is clearly ahead of the runner-up, and the evidence is sufficient on its own: the same core name, the same legal form and a corroborating city or street.

A conflicting tax identifier always blocks a match. So does a name that a register shows belonged to a different company before, and a record whose own register no longer knows it by that name. Every request ends in one of four outcomes with reason codes: MATCH, REVIEW, NO_MATCH or NO_CANDIDATE.

What it needs to merge

To merge automatically, Match needs either the same recognised legal form plus an agreeing address, or a matching tax identifier. It recognises the common English-language forms (Ltd, plc, LLP, LLC, Inc, Pvt Ltd) and Norwegian, Estonian, French, German and Dutch forms. For other forms it still finds and ranks the right candidate, but sends it to review instead of merging. It fails safe, never into a wrong match.

In the sanity check, 840 of 1,506 went to review. 834 lacked a recognised legal form, 607 of them Japanese companies whose names carry the form in kanji, which the normaliser does not yet recognise. Others have no form at all (foundations, associations, trusts) or forms it does not know yet, such as Italian, Spanish, Swedish and Chinese ones. Adding legal forms is the next engine work, Japanese first, and each addition will be measured before we claim it.

The benchmark mostly contains UK, Norwegian and Estonian companies because those registers publish the cross-links we grade against. That is where Match was measured, not a limit on where it runs.

How we got here

Our first registered attempt, version 0.6.3, did not pass: on the calibration split it made 15 wrong matches in 60,875, above the bound. We examined every one. Most were names that had moved to another company after a rename while one register still showed the old name.

Version 0.6.4 adds two checks that only ever send a match to review. It reads published name histories, now including Norway’s, and it does not act on a record whose own register shows its name is out of date. On the calibration data that removed 9 of the 15 errors for 0.45% fewer automatic matches. We then registered a second attempt, had it reviewed, and ran it once on the sealed split. Both attempts, the failure analysis and every count are in the method note.

How it works

Match normalises names (legal forms per jurisdiction, abbreviations, transliteration-safe folding), retrieves candidates with a character-trigram index, scores each pair with a small gradient-boosted model calibrated by isotonic regression, and applies the evidence policy. Records can carry a name, street, city, country and tax identifier. A matching tax identifier counts as identity evidence, decisive when verified at source on both records. The benchmark used name, street and city only.

None of the components is new. The model is trained only on synthetic data written by several independent generators, so no customer data is needed to start. On synthetic tests its ranking was not reliably better than a tuned name-similarity baseline once the data author changed. Its value is the decision policy and where it runs, and that is what we claim.

Method note

The benchmark is built from public company registers in which the same company appears in two registers, linked by official identifiers: GLEIF, Companies House, the Norwegian Brønnøysund register, the Estonian business register, SEC EDGAR, the French SIRENE register and the Japanese corporate-number database. Nobody judged similarity: an answer is correct only if it names the record with the same official identity. In 60,008 queries the true company is not in the list, so any match there is wrong.

Engine 0.6.4 was frozen at its shipped threshold and run once on the sealed test split, which no version of Match had seen. The pre-registration and test runner went through three rounds of AI-assisted review using OpenAI Codex: the first two requested changes, which were made, and the third approved. No external audit or certification was conducted. The registration was frozen with a signed git tag. A calibration check inside the same run had to reproduce the registered development counts exactly before the sealed split was touched; it did.

The 0.084% is a weighted 95% upper bound: a statistical ceiling on the error rate of automatic matches across the benchmark’s case types, with the hard cases weighted far above their share of the sample, as fixed before any run (a stratified selective-risk bound: hypergeometric per-cell bounds, Bonferroni). The observed fraction is 10 wrong in 75,334 (0.013%). Case types were sampled by design, so these figures describe this sample, not an error rate on any population of records. The bound is a property of this benchmark, not a guaranteed error rate on your records, and it is not a certification by an outside body. The sanity cell was outside the bound, as registered. The 9 wrong matches among queries without a counterpart include identical records that the official links do not connect, and they are counted as wrong.

Competitors: Splink 5.0, Dedupe (classifier refitted on the same labelled registry pairs) and RapidFuzz token-sort ratio on the normalised name, each deciding among the same top-10 candidates that Match retrieved. Each threshold was chosen on a separate calibration split by one rule, written down first: the most matches at a weighted bound of 0.1%, or, where no threshold reaches that, the lowest bound it can reach. None of the three reached 0.1% at any threshold on a grid of up to 400. This compares the decision step on identical candidates; it is not a claim about every way those tools can be configured or deployed end to end. Match was not trained on registry data.

Latency was measured on a Raspberry Pi 400 (Cortex-A72, one core) and a desktop CPU, single process, warm index. Register data is used under each publisher’s licence.

## Specifications.

-

### Runs on

Any x86 or ARM CPU; tested on a desktop PC, a 2014-era laptop and a Raspberry Pi 400. No GPU and no external model call.

-

### Offline

The full test suite passes with the network disabled. An offline install bundle and a container image are provided.

-

### Scale

1 million records in one index: build 16 seconds, 86 ms per query at the 95th percentile, 99% of true matches in the top ten (synthetic data; real names may be slower).

-

### Records

Companies. Document references and payment reconciliation are in preview.

-

### Licences

Offered for evaluation, with terms agreed with you before you receive it. Production use is under a contract, within our [enterprise licensing terms](https://dscvryai.com/legal/terms/) .

## Availability.

-

### Evaluation on your own records Now

The engine, REST API, offline bundle and container image, to evaluate on your own hardware and your own records.

Request an evaluation ·
-

### Supplier-master pilot Next

A pilot on real supplier-master data, with acceptance criteria agreed before it starts: how many records Match resolves automatically at an agreed false-match risk. Registry benchmarks do not hold everything enterprise records do, such as branches, trading names and incomplete addresses.

-

### More legal forms Next

Legal-form coverage for more jurisdictions, Japanese first, each measured before we claim it.

## Put it to work.

Match runs alongside the rest of what we build.

### Models

Specialist models, evaluated on your data and run inside your boundary.

Explore Models →
https://dscvryai.com/technology/models/

### Agents

Agents that run on their own and hand over to a person at the decisions that matter.

Explore Agents →
https://dscvryai.com/technology/agents/

### Products

Ready-made products for recurring jobs, from documents and contracts to sustainability data.

Explore Products →
https://dscvryai.com/technology/products/

### APIs

Model, agent and data APIs that plug into the systems you already run.

Explore APIs →
https://dscvryai.com/technology/apis/

### Data

Data collected, extracted and governed, with every value traced to its source.

Explore Data →
https://dscvryai.com/technology/data/

### Evaluations

Tests built from your own cases, rerun every time a model changes, so you always know how well it does your work.

Explore Evaluations →
https://dscvryai.com/technology/evaluations/

## Bring us the work where wrong is expensive.

Start with the operational problem. We’ll work out the data, models and agents it needs, and where it should run.

[Talk to us →](https://dscvryai.com/contact/)

**London**Discovery AI Limited · United Kingdom

**Hyderabad**ReDscvry Technology Private Limited · India

**Chennai**ReDscvry Technology Private Limited · India
