SKUs and naming that survive growth
No stock system works on top of inconsistent item codes, and no migration fixes them.
The foundation of any stock record is that each distinct item has exactly one identifier and one name. Almost every small business fails this in at least one direction: the same item under two codes, or two items under one.
Checklists, location labels and standard naming are forms of cognitive offloading because they move routine recall out of memory and into the process.
Software does not fix it. It inherits it, at scale.
One item, one code
A distinct item is anything a customer or a process treats as different: a different size, colour, pack quantity or specification. If someone can order one and not the other, they are two items.
The common error is the opposite: recording a case and a single unit of the same product under one code, so the quantity means one thing on one order and another on the next.
Decide whether stock is held in units or cases, state it in the item record, and never mix. Most large unexplained variances trace back to this.
For technical background on product identification and scanning, GS1 barcode standards describe common barcode standards used in supply chains.
Codes should be meaningless or meaningful, not both
Two workable approaches. A meaningless sequential code, with all the descriptive information in fields — clean, scales indefinitely, requires the system to be consulted. Or a structured code encoding category, product and variant — readable by a person, and it breaks when the structure changes.
What does not work is a structured scheme applied inconsistently, which is what most businesses have after five years. If a structured scheme is used, the structure has to be written down and enforced at the point of item creation.
Control who creates items
Duplicates enter when anyone can create an item. The same product is added under a slightly different name because a search for the original did not find it, and now there are two records with stock in both.
The fix is one of two things: a small number of people who create items, or a required search step before creation. Either is better than a monthly duplicate clean-up.
Name for searching, not for cataloguing
Item names should start with the words a person would search for. 'Blue widget, 10mm, pack of 5' is findable. '10mm pack blue widget assembly' is not, and the difference is measured in minutes per pick.
Fixing it is a one-off project
Cleaning up an item file is unpleasant and finite. Merging duplicates, standardising units, correcting names — a few days for most small catalogues.
Doing it before adopting a system is far cheaper than doing it afterwards, and doing it never means every subsequent report is unreliable in ways nobody can quantify.