Commerce CensusContactRequest access

Home / Learn

How to build a price comparison engine

The architecture behind a working price comparison site: canonical products, landed cost, per-seller history and published match confidence.

A comparison engine is four problems stacked. Identity, so two listings that are the same product resolve to one record. Normalisation, so prices are comparable — landed cost including shipping, and unit price where pack sizes differ. History, so a discount claim can be defended. And freshness, so the number you show is still true when someone clicks.

Identity is where most projects fail. With a valid GTIN it is a join and essentially free; without one it is inference, and inference produces confident errors. Publish your match confidence on the page. It is a trust signal that costs nothing because the number already exists internally.

Normalise before you rank. A product that is cheaper on sticker and more expensive delivered is not cheaper, and a comparison that ranks it first is worse than showing nothing.

For discount depth, use percentile against the product's own history at that seller rather than percent-off a reference price the seller chose. Comparison sites get into trouble over inflated reference prices; they do not get into trouble over an auditable statement about what a product has actually cost.

Keep reading

Guide

What is commerce intelligence?

Commerce intelligence is the layer above price monitoring: an index of what exists, who sells it, at what, and what that means.

→
Guide

Why percentile beats percent-off

A percentile against a product's own history is a defensible measure of discount depth; percent-off a reference price is not.

→
Guide

Product matching and why it fails quietly

How cross-seller product matching works, the three ways it fails, and why published match confidence matters.

→
Guide

GTIN, UPC, EAN and ASIN

How product identifiers relate, why check digits matter, and what to do when there is no identifier at all.

→
Guide

Data provenance in commerce data

Why every price should carry its origin and a confidence weight, and what goes wrong when it does not.

→