Product Matching Should Produce Knowledge, Not a Score

A 94% match leaves nothing behind for the next ingestion. A SAME_AS relationship with evidence, a confidence score and a reviewer compounds. Why matching output should be durable, and near-misses kept.

published product-matchingentity-resolutionconfidence

Most matching tools end at a percentage. The percentage is thrown away at the next import, and next month you match the same two records again, from scratch, as if you had never decided.

A SCOREA → B94%nothing survives the next ingestionASAME_ASBmanufacturer exactMPN normalized exactdimensions 20×47×14 mm agreepack quantity agreereviewed 2026-09-21 · catalog teamconf 0.97persists & compounds6204-2RSHNOT_SAME_ASdifferent seal code — kept as near-miss
Fig. 1 — A bare score versus a durable SAME_AS relationship with its evidence, confidence and reviewer, and the near-miss kept on file.

The throwaway score problem

A → B = 94% is a verdict with no memory. It does not say why the two records are the same, it is not attached to either product in a way that lasts, and the moment a new supplier file lands the whole comparison runs again. Teams end up re-deciding the same duplicates every cycle, and every re-decision is another chance to decide differently. A score is a computation. It should have been a commitment.

What a match should emit

The output of matching should not be a number. It should be a relationship with its reasons attached.

Field Value Source
edge A SAME_AS B resolved
manufacturer exact feed, 0.99
MPN normalized exact rule, 0.99
dimensions 20×47×14 mm agree datasheet, 0.98
reviewed 2026-09-21, catalog team human
confidence 0.97 composite

Now the decision is a SAME_AS edge that lives on the product, carries the evidence that justified it and names who confirmed it. The next ingestion does not re-litigate it; it inherits it. Confidence that was borderline and then human-confirmed stays confirmed.

Keep the rejection

A match that only records what it accepted is half a record. 6204-2RSH is one suffix off 6204-2RS. Seal codes differ by manufacturer (2RS, 2RS1, 2RSH, DDU), and whether two codes are interchangeable is a judgement that needs the datasheet. Until that is established, it is a near-miss and not a duplicate.

Emit a NOT_SAME_AS edge and that distinction becomes permanent: the pair is never silently merged in a later run and nobody re-investigates a question already answered. If review later shows the two are interchangeable, the edge can be upgraded to EQUIVALENT_TO, which is a different claim. See the difference between SAME_AS, EQUIVALENT_TO and COMPATIBLE_WITH. The rejected candidate is reusable knowledge, not noise to discard.

Score thresholds still matter

None of this removes scoring. Scores decide the routing: auto-accept above a high threshold, send the band in the middle to a person, reject below. What changes is what happens next: the decision is written down. For how to set the thresholds, see confidence score and deterministic vs probabilistic matching.

Why this compounds

When matching produces durable, sourced relationships instead of disposable scores, every cycle adds to a base that does not erode. Accepted matches, rejected candidates, manufacturer aliases and normalization rules accumulate in the product identity graph and make the next match easier. That is the compounding thesis in one line: your catalog should get smarter every day, and it only works if the knowledge is kept. It is the same shift that turns a catalog of rows into a graph.

A checklist for evaluating matching tools

  • Does a match create a stored relationship, or only a score in a report?
  • Does it store the evidence (which attributes agreed, which document)?
  • Does it record who or what accepted it, and when?
  • Does it keep rejected candidates and prevent re-merging?
  • Are the decisions reused on the next feed?

For a longer evaluation framework see how to evaluate product matching software and why matching demos fail in production.

FAQ

Why isn't a match score enough?

A score is a one-time judgement about a pair of records. It does not record why they match, it is not stored on the product, and it is recomputed at the next import. A stored relationship with evidence persists and is inherited by later ingestions.

What should a product match produce?

A relationship such as SAME_AS, with the evidence that justified it, a confidence score, a timestamp and the name of the rule or person who confirmed it. That relationship then lives on the product.

Why store rejected matches?

A rejected near-miss, such as two parts one suffix apart, is expensive to rediscover. A NOT_SAME_AS edge stops it being merged in a later run and stops reviewers re-investigating a question already answered.

Is NOT_SAME_AS the same as not interchangeable?

No. NOT_SAME_AS only says the two are different products. They may still be technically interchangeable, which is a separate EQUIVALENT_TO relationship, or only compatible, which is COMPATIBLE_WITH.

Claro

Stop maintaining this by hand

Claro keeps product and supplier data trusted as catalogs change — matching, deduplication, enrichment, and validated write-back into the systems you already run.

Book a demo