Product matching sounds like a solved problem. Scan a barcode, compare the numbers, done. It is solved for perhaps sixty per cent of a typical catalogue, and the remaining forty per cent is where every price intelligence deployment either earns its keep or loses the room.
The identifier only takes you so far
Where a GTIN exists and both sides publish it honestly, matching is trivial. But identifiers go missing on marketplace listings, get reused across regional variants, and simply do not exist for hotel room-nights, made-to-order building materials or most B2B line items.
So the fallback chain matters more than the happy path: brand and title similarity, then image comparison, then a language model arbitrating the cases the first three could not separate. Every step should produce a confidence score, and every score should be visible to the person who has to live with the consequences.
Each industry breaks it differently
- Wine and spirits: producer, vintage and bottle size are three separate axes, and titles are spelled inconsistently across every shop.
- Hotels: the same room is a different product on a different date, and rate plan, board basis and cancellation terms all move the price.
- Construction: one merchant quotes per square metre, the next per pack, the third per pallet, and trade and retail prices are different numbers for the same article.
- Electronics: regional SKUs proliferate and half the listings bundle an accessory into the headline price.
- Pharmacy: pack size and dosage decide equivalence, and a regulated floor decides what you are allowed to do about it.
- Grocery: a multipack against a single is only comparable once both are reduced to a base unit price.
None of that is exotic. It is simply the ordinary structure of each catalogue, and any tool that treats a product as a title and a number will get it wrong in ways that are hard to detect and expensive to trust.
Confidence beats cleverness
The most useful thing a matching engine can do is admit when it is unsure. A queue of low-confidence matches waiting for a human is not a shortcoming; it is what makes the high-confidence ones worth acting on automatically.
The second most useful thing is to remember a correction. A person should have to fix a bad match exactly once, and the fix should survive every future run.