You buy olive oil from three suppliers. On three invoices it has three names. In your recipes it should be one olive oil. That one is the canonical product.
What it is
The identity of a product for the whole organization. Recipes, trim loss and unit weights belong to it. Supplier items point at it.
It is named Family - Variety: Olive Oil, Rice - Basmati, Milk - Whole, Tomatoes - Cherry. No brand, no pack size, no supplier code.
One canonical, many products
Each supplier's item is a product of its own, with its SKU, its pack and its price. All of them point at the same canonical.
Each venue picks which of them it is buying right now — its active supplier. That is the product whose price the venue's recipes use.
Change supplier and nothing breaks: the recipe still says Olive Oil.
Choosing it
Every time a product is created — on an invoice line or from Ingredients — the form asks for its canonical product. Type, and the existing ones filter as you go. Pick the one it is.
None of these: create a new canonical is the last choice on purpose. A new canonical is right for something the group has never bought. For everything else it is a duplicate waiting to split your costs in two.
What is the same product, and what is not
A form is not a new product. Peeled garlic is Garlic. A frenched rack is Lamb Rack. Boneless skinless breast is Chicken - Breast. Extra virgin is simply how olive oil comes.
A different product is. Dried shiitake is not fresh shiitake. Sake is not mirin. Distilled white vinegar is not white wine vinegar. A finishing oil at three times the price is not the cooking oil.
The test: would a chef swap one for the other in the recipe without thinking? Same canonical. Would they not? Two.
Kept clean every night
Every night NexReps checks the catalogue: a product without a canonical, one name carried twice, a venue buying a canonical with no active supplier, a product kept in a container. Anything it finds is raised to the administrators.
Next
Categories — sorting the catalogue.
