Blog · Data quality and reconciliation
Why a product list with four hundred SKUs produces whitespace everywhere and a concentration figure that means nothing, the three levels a product taxonomy needs, line, family and SKU, which measure is computed at which level, the rule that a SKU belongs to exactly one family and a family to exactly one line, the dated mapping that survives a range change, and the identity that revenue sums identically at every product level.
The ledger carries a product code on every line. Whether that code is a SKU, a family or a line decides whether the measure computed on it means anything. This guide sets out the three levels, which measure uses which, the one-parent rule, the dated mapping, and the identity.
| Level | Count, typically | Definition | Measures computed here |
|---|---|---|---|
| Line | 10 to 30 | What the company sells as a line and manages as one | Whitespace, products per customer, cross-sell and upsell, share of wallet by line, price realisation by line |
| Family | 50 to 300 | A group of substitutable SKUs within a line | Catalogue fit, quote conversion, warranty claim rate, range fit per store |
| SKU | Hundreds to thousands | The stock-keeping unit | Out-of-stock inference, substitution pairs, lost lines, price per unit, the product tail |
Every SKU belongs to exactly one family. Every family belongs to exactly one line. Dated.
A SKU with two families, or a family with none, fails the check and is listed. Tags for secondary uses are attributes, not parents.
Σ revenue by line = Σ by family = Σ by SKU = ledger revenue, for the period, using the mapping in force
A ledger line whose product code is not in the taxonomy fails it and is listed as unmapped, counted, and excluded from every product-level measure until mapped.
| SKU | Family | Line | Effective from | Effective to |
|---|---|---|---|---|
| K-104 | F-12 | Dairy | 2021 | |
| K-227 | F-40 | Frozen | 2021 | 2025-06-30 |
| K-227 | F-41 | Frozen | 2025-07-01 | |
| K-990 | F-12 | Dairy | 2026-03-01 |
SKU 227 moved family mid-year. Reports for the first half use the old family; the second half the new. SKU 990 is new and mapped from day one.
| Question | Level | Why |
|---|---|---|
| Which customers do not buy something similar customers buy? | Line | Similar customers buy lines; SKUs vary by taste |
| Which customer's catalogue coverage is narrow? | Family | Families are the units of a range |
| Which store ran out on Tuesday? | SKU | Stock is by SKU |
| What share of revenue is the tail? | SKU, presented by line | The tail lives at SKU; the board reads lines |
| Is the discount above agreement? | SKU, rolled to line | Prices are per SKU; the policy is per line |
Whitespace on SKUs. Every cell empty; the list meaningless.
Price realisation on lines. A line's average hides the SKU where the override lives.
SKUs in two families. The roll-up double-counts.
Mapping overwritten. Every product measure restated to the start.
Unmapped codes dropped. Revenue missing from every product view; the identity would have caught it.
Mapped once and dated, the product master and the ledger produce the three-level roll-up, the one-parent check and the identity on every upload, with unmapped codes listed. Covirage builds this from the exports as they are. The metrics governance solution describes the setup, and the whitespace analysis guide covers the measure that most depends on the line level being right.
As few as the company manages as lines: ten to thirty. A whitespace grid with four hundred columns is empty everywhere; one with twelve says something. Lines are the level at which similar customers are compared on what they buy.
It is in one, by rule. A product that genuinely serves two families is placed in the one it is sold under, and the other is a tag, not a parent. The roll-up needs one parent per SKU or the identity fails.
A new SKU gets a family and a line from its first day. A discontinued SKU keeps its history. A family moved to a new line gets a dated row, and reports for earlier periods use the old line. Overwriting the mapping restates every product-level measure back to the start.