Store observations, not prices
Why an append-only observation model beats mutable current-price rows, and what that unlocks.
A price is a mutable current-state field. An observation is an immutable fact: this source reported this value at this instant. Store observations and current price becomes a view; store prices and you have thrown away the asset.
Each observation should carry when the source said it and when you learned it — those differ, and the gap matters for anything time-sensitive. It should also carry its channel and confidence, so a later reader can weigh it.
Deduplicate on content. An unchanged reading still counts as a poll, because that informs how often to look again, but it should write nothing. Done properly the series is the change log, and a hundred polls of a stable price cost one row.
Keep reading
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.
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.
Product matching and why it fails quietly
How cross-seller product matching works, the three ways it fails, and why published match confidence matters.
GTIN, UPC, EAN and ASIN
How product identifiers relate, why check digits matter, and what to do when there is no identifier at all.
Data provenance in commerce data
Why every price should carry its origin and a confidence weight, and what goes wrong when it does not.