Product data looks like a table and behaves like an argument. The same item appears under three categories, with two titles, and a brand field that is sometimes the manufacturer and sometimes the seller.
Any analysis built on top inherits those disagreements, quietly.
Categories are opinions
A category tree is one company's view of how products relate. Two marketplaces will disagree about whether a phone case belongs with accessories or with protection, and neither is wrong.
If your dataset mixes both trees without a mapping, every category-level comparison is comparing two vocabularies.
The fields that make matching possible
- The canonical product id, if one exists
- Brand, normalized, kept separate from the seller
- Attributes, typed: size, capacity, material, colour, in units
- The category path, plus your own normalized path
- The date the listing was captured
The fifth field decides whether a price comparison is a comparison or an accident.
Titles are the worst join key
Titles contain marketing, variant names, quantities, and occasional emoji. Matching on titles produces merges that look right in a sample and fail in aggregate.
Match on attributes where they exist, then on title similarity with a threshold you can explain.
Keep the mapping visible
When you normalize a category or a brand, write the rule down. The rule is the thing that makes next quarter's data comparable to this quarter's.
Zovda assembles these collections through Datuva, where the normalized path and the original both survive. The data research collection shows how a defined catalogue is carried.
Tell us what you need to compare across sellers. We reply within one business day.
