A bill of materials (BOM) for food is the list of everything that goes into one batch or one unit of a product, with exact quantities and units: the ingredients by weight, the packaging per unit, any sub-recipe made in your own kitchen, the batch size and yield, and an allowance for what's lost along the way. It's your recipe, written for costing, stock and planning rather than for cooking. Software asks for one because every number it gives you, what a product costs, what to buy, what's left on the shelf, which lots went into which batch, is worked out from it. Below is what goes in one, a two-level example for a bag of taro chips, and the mistakes that make one wrong.
The short version
- A BOM is a recipe with exact weights, a yield, a loss allowance and the packaging, for one batch or one unit.
- Anything you make yourself and use in something else (a dough, a filling, bulk chips) gets its own BOM. That's a multi-level BOM.
- Write quantities in the unit you use, and let the software convert from the unit you buy in.
- Include the packaging, down to the share of a shipping carton. It's the line people forget.
- Keep versions. When the recipe changes, the BOM gets a new version; old batches keep the old one.
- TaroStack calls it a recipe, and it's multi-level, versioned and converts units for you. More below.
Recipe, BOM, formula, routing
The words overlap, so here's how they're used in food production:
| Word | What it is | Example |
|---|---|---|
| Recipe | How to make it: ingredients and method, often in cups | "2 1/4 cups flour, cream the butter..." |
| Formula | The ingredients as exact weights or percentages | Flour 100%, butter 79.6%, sugar 70.2% |
| Bill of materials | The formula plus batch size, yield, loss, packaging and sub-recipes, for costing and stock | 10 kg of chips from 25 kg taro; one bag uses 142 g of chips and one pouch |
| Routing | The steps, equipment and times | Slice, fry at 340°F, salt, cool, bag |
A software BOM covers the quantities. The method and checks live on the batch record, as in what is a batch record.
A two-level example
Windward Roots, the made-up taro business I use in these examples, fries bulk chips in its kitchen and bags them in two sizes. That's two levels: the bag uses bulk chips, and bulk chips use taro.
Level 1: bulk chips, made in batches
| Ingredient | Per batch | Unit |
|---|---|---|
| Taro, fresh | 25 | kg |
| Coconut oil | 4 | L |
| Sea salt | 200 | g |
| Makes | 10 | kg of chips |
Level 0: one 5 oz bag, made from bulk chips
| Component | Per bag | Unit | Loss |
|---|---|---|---|
| Bulk chips (the level 1 recipe) | 142 | g | |
| Stand-up pouch, 5 oz | 1 | each | 1% |
| Front label | 1 | each | 2% |
| Back label | 1 | each | 2% |
| Lot and best-by sticker | 1 | each | 2% |
| Shipping carton, holds 12 | 1/12 | each | |
| Packing tape | 1/12 | roll's share |
Taro goes into chips at a 40% yield: 25 kg in, 10 kg out, because frying drives off the water. That number lives in the level 1 BOM and nowhere else. If it were folded into the bag's BOM as "355 g of taro per bag," the day the yield changes you'd have to edit every product that uses chips.
Exploding it to raw materials
"Exploding" a BOM means following it down every level to the things you buy. For one 5 oz bag:
| Raw material | Per bag | How |
|---|---|---|
| Taro | 355 g | 142 g of chips × 25 kg ÷ 10 kg |
| Coconut oil | 56.8 ml | 142 g × 4 L ÷ 10 kg |
| Sea salt | 2.84 g | 142 g × 200 g ÷ 10 kg |
| Pouch | 1.01 | 1, plus 1% loss |
| Labels and sticker | 1.02 each | 1, plus 2% loss |
| Carton | 0.083 | a twelfth |
That's the list a plan multiplies by the number of bags you'll make, and, if you count materials out when you sell rather than when you make, the list one sale takes off the shelf. It's how the Shopify raw materials article turns a week's sales into taro and oil, and how the production plan turns a month's batches into a shopping list. The packaging lines are costed in packaging cost per unit.
The mistakes that make a BOM wrong
| Mistake | What it does | Fix |
|---|---|---|
| Cups and spoons | Quantities vary by a fifth or more | Weigh once, write grams |
| No yield on made items | Cost and stock assume nothing is lost | Batch size and what it really makes |
| Packaging left off | Cost is short by the packaging, and you run out of pouches without warning | One line per piece, per unit |
| Sub-recipes flattened into products | One change means editing every product | A BOM of its own, used as a line |
| Water and bench flour missing | Usage never matches the recipe | Put them in, even at no cost |
| Never updated | Costs and plans describe last year's product | New version on every change |
| Mixed units | 1 "case" of one thing and 1 "kg" of another, confused | Buy in cases, write the BOM in the unit you use |
Water is worth a word. It costs nothing, so it's often left off. But a BOM is also what usage is checked against, and a dough whose BOM says no water will always look like it used more flour than it should. The bench flour and the butter for greasing pans are the same story, and in the food cost variance formula they're exactly what the variance turned out to be.
By-products and co-products
Some batches make more than one thing. If the broken pieces from a chip batch are bagged and sold as chip crumbs, they're a by-product: a second output on the same BOM. The question a BOM has to answer is how the batch's cost is shared. The simplest rule is that the main product carries all of it and the by-product is free; the more careful one gives each output an agreed share. Either way, say which, or the crumbs get costed twice or not at all.
Where this stops working
A BOM in a spreadsheet works as a costing sheet. It doesn't take anything off the shelf when a batch is made, it doesn't know a recipe changed in the kitchen last Tuesday, and a two-level product means a lookup into another tab that breaks the first time someone inserts a row. With ten products sharing three sub-recipes, keeping every BOM, every cost and every stock figure in step by hand is the point where it tends to stop, and estimating takes over again.
How TaroStack does it
In TaroStack, a BOM is a recipe. Recipes are multi-level, so bulk chips are a recipe of their own, used as a line in both bag sizes, and a change to the chip yield flows into every product that uses chips. Each recipe has a batch size, what it makes, and a scrap allowance for what's lost. Units are converted for you: buy by the case, stock by the each, cook by the gram. And recipes have versions, so the batch made in March still says which recipe it followed.
The BOM then does its jobs without anyone opening it. Recording a batch takes each ingredient from its lot, so stock is right and the lots are on record for a recall. The batch is costed from what it used at the prices paid, divided by what came out good. "What could I make right now" reads the BOMs against the shelf, and planning explodes them through every level into what to make and buy. To bring your own in, the recipe import takes a spreadsheet with one row per ingredient: what it makes, the batch size, the ingredient, the quantity, the unit and the scrap %.
Recipes, batches and planning are on Standard at $99 a month, and the first 30 days are free. If you'd like a hand setting up, ask, and we'll do it with you.
