What a product matrix is
A product matrix is a structured list of what a company sells. It is not an export from the accounting system and not a list of what sits in the warehouse, but a management decision: which products should be in the assortment, how many per group, and why each of them needs to be there.
The standard hierarchy has four levels:
Category Footwear
+-- Subcategory Sneakers
+-- Product Men's running shoes
group
+-- SKU Nike Pegasus 41, black, size 42
The product group level is the one that does the work. That is where decisions about width and depth are taken: how many brands to carry, how many models within a brand, which price tiers to cover. There is more on those parameters in the entry on assortment width and depth.
The matrix should not be confused with the catalogue. The catalogue is the storefront for the shopper, the consequence. The matrix is the cause: the document that determines what ends up on the storefront at all.
Product roles
Every item in the matrix performs its own function. Judging all products by a single metric is a common mistake, and it erodes the assortment.
| Role | The job | What to judge it by | The risk of judging it wrongly |
|---|---|---|---|
| Traffic driver (KVI) | Bring traffic, set price perception | Traffic, order count, market share | Judged on margin, price rises, traffic is lost |
| Margin item | Earn the profit | Gross margin in money terms | Judged on turnover, the mix skews to cheap items |
| Substitute | Cover stockouts on the primary item | Share of orders during shortages | Delisted as a weak seller, then the stockout hits |
| Image item | Support how the range is perceived | Category perception, share of premium brands | Delisted on sales, and the category looks thin |
| Add-on item | Raise order value | Share of the order, share of two-category orders | Judged apart from the primary product, its contribution is understated |
The last row is particularly treacherous. A case or a screen protector looks like an item with negligible turnover on its own. Its contribution appears not in its own sales but in the average value of orders containing a smartphone. Add-on products must be judged together with the primary product, otherwise they drop out of the matrix and take part of the cross-sell with them.
The matrix as a data source for algorithms
At this point the matrix stops being a management document and becomes a technical asset. It produces the product feed — a structured export with every attribute of every item, consumed by recommendation and search algorithms.
The rule is simple: an algorithm cannot take into account an attribute that is not in the data. If the material field is empty in the matrix, recommendations cannot find a similar bag in the same leather, and the material filter will be either empty or incomplete — and an incomplete filter is worse than a missing one, because it hides products that actually match.
What algorithms genuinely need:
| Attribute | What is built on it |
|---|---|
| Category and subcategory | The boundaries of selections, product navigation |
| Brand | Brand affinity, filters, storefronts |
| Price and pre-discount price | Price fit with the profile, discount badges |
| Key characteristics (size, colour, material, volume) | Similar products, faceted search, personal sort |
| Compatibility and links | Add-on products, accessories for a model |
| Availability and stock | Excluding out-of-stock items from results |
| Images | Click-through on the card inside recommendation blocks |
Before changing the recommendation algorithm, calculate the share of items with empty key attributes in your category. If it is above 20-30%, improving the data will do more than any model tuning: the algorithm ranks what it can see, and it cannot see what is missing from the feed.
Add-on products: how the matrix feeds cross-sell
Links between items are a separate layer of the matrix, often left unfilled, and that is a mistake. It feeds three different scenarios:
- Accessories and compatibility. Explicitly defined fits this model links: a case for a specific phone, a cartridge for a specific printer, a mount for a specific television. This needs manual or catalogue logic — a new model has no purchase statistics yet.
- Co-purchased items. Pairs and sets identified from order history — the frequently bought together scenario. It works on transaction data, but the quality depends on correct categorisation: if products sit in a catch-all category, the links come out noisy.
- Sets and looks. Bundles assembled from items of one collection — the complete the look scenario in fashion and interiors. It requires collection and style attributes in the matrix.
The first scenario depends entirely on the matrix, the second halfway, the third completely. None of them will work on data that carries only a name, a price and a picture.
Common problems
Duplicate SKUs. One product entered twice — with a different spelling of the brand, say, or through uploads from two suppliers. The consequences: sales are smeared across cards, both look weak in ABC analysis, recommendations show the same product twice in one block, and reviews split between the duplicates.
Empty attributes. The name, price and category are filled in, the rest is blank. The product drops out of filters and out of similar-item blocks. It hurts new items most: they have no behavioural statistics yet, and attributes are the only way to surface them in a relevant place.
Catch-all categories. Sections named Other or Miscellaneous with no structure. They break navigation, filters and algorithmic similarity all at once.
Out-of-stock products in results. An unavailable item in the top positions of a listing or in a recommendation block is a wasted impression and an irritated shopper. Availability must sync into the feed at a frequency matching turnover speed: several times a day in fast-moving categories.
A matrix with no delisting procedure. Items are added but never removed. Within two or three years, half the category consists of products that are not there and never will be.
Matrix quality checklist
| Check | Target |
|---|---|
| Share of SKUs with key attributes filled in | No lower than 90% in priority categories |
| Duplicates by name and article number | A regular report, zero in priority categories |
| Items with no sales in the period | A list exists with a decision against each |
| Products without images | Zero in listing results and in recommendations |
| Categories with no internal structure | None |
| Add-on product links | Filled in for every traffic driver |
| Feed availability refresh frequency | Proportionate to category turnover |
| Role assigned | To every item in priority categories |