SKU stemming and family matching: rescuing the unknown-item pile
7 min read
The single largest bucket in any first audit is lines whose part number appears nowhere in your price lists. It looks like a contracting gap. It usually is not. It is the same product carrying a distributor prefix, a pack suffix, a legacy number, or a manufacturer code where you contracted the distributor code.
Stemming: strip the noise, keep the identity
- Case-fold and remove separators — dashes, dots, slashes and spaces are cosmetic in almost every catalogue.
- Strip vendor prefixes that appear on every code from that supplier and therefore carry no information.
- Strip pack and unit suffixes such as CS, EA, BDL, PLT — the unit belongs in the unit-of-measure field, not in the identity.
- Preserve digits and internal sequence exactly. Two codes differing by one digit are almost always different products.
- Never stem so aggressively that two contracted SKUs collapse to the same stem. If that happens, the rule is too broad — revert it.
Family matching: when the stem is still not enough
A family is a set of items that share a base product and differ by a variant dimension — colour, length, grade, pack size. Family matching resolves a billed variant to a contracted sibling so the line can at least be priced approximately and routed to a human. It is a triage tool, not a pricing decision: a family match should never silently produce a variance claim.
The alias table is the real output
Stemming and family matching propose. A human confirms once, and the confirmation is stored as a supplier-scoped alias from the billed code to the contracted item. Next month that line matches exactly, with no heuristics involved. Over a few cycles the unmatched pile shrinks to genuinely new products, and the aliases become an asset that is painful for anyone to reproduce.
Rank the pile by money, not by count
Two thousand unmatched lines sounds like an impossible cleanup. Sorted by extended amount, the top forty codes usually cover most of the value. Confirm those aliases and the unmatched rate by dollar drops below five percent in an afternoon, even while the line count stays high.
Related reading
- Why supplier invoice lines don't match your contract — the full taxonomy
Every unmatched invoice line has a reason. Here is the taxonomy — missing SKU, expired price, wrong unit, substitution, freight and more — and what to do about each.
- Unit-of-measure normalization: the quiet source of fake variances
Per square, bundle, thousand, or roll. How unit-of-measure mismatches create false overcharges, and how to build an alias table that fixes it.
- Standing, quoted, or isolated: classifying the discount you actually got
Not every price below contract is a win. How to tell a standing discount from a one-off quote or an isolated keying error — and why the difference changes what you negotiate.
New to the vocabulary? The glossary defines every term used here, and the audit checklist turns it into a process.
See this on your own invoices
Audit your first 500 invoice lines free. No card required.