Your margin is a guess until you write down the recipe

September 10, 2026 by Michael

Ask a shop owner what a product sells for and you get an answer in one second. Ask what it costs to make and you get a spreadsheet, last updated some months ago, with a cell someone meant to fix.

The problem isn’t laziness. The cost of a handmade or assembled product lives in pieces - some fabric, a zipper, a label, half an hour of sewing - and those pieces change price. A spreadsheet can’t keep up. A recipe can.

A recipe per variant

In Panelque, a Bill of Materials is exactly that: the recipe for one unit of a product. On a variant’s detail page you list the components and how much of each goes in - 1.5 m of fabric, one zipper, one label. Each component keeps its own unit (pieces, meters, kilograms, spools), so you describe the product the way you actually buy materials.

Recipes nest. A “T-Shirt White 3XL” component can have its own recipe of fabric and label; the finished Shopify variant then contains that component as a single line. Costs roll all the way down - fabric into the shirt, the shirt into the variant. And if you ever create a loop by accident (A made from B made from A), Panelque detects it and stops instead of looping forever.

What the recipe unlocks

Once the recipe exists, it starts answering questions everywhere:

  • Real product cost. Every variant shows its material cost, rolled up from current component prices - not the number from the spreadsheet’s better days.
  • Profit per order. Orders show inventory costs next to revenue, fees, and shipping, so margin is a number you read, not one you estimate.
  • Estimated costs on open orders. Orders you haven’t produced yet show an estimated material cost from the recipe. Edit a recipe - even a sub-recipe three levels down - and the estimates on affected open orders update on their own.

That last one matters more than it sounds. Component prices drift, recipes get tuned, and the “same” product from March quietly costs more in September. We checked our own numbers while writing this post: for materials we bought in both March and September, the median purchase price is up 17% - and one material several times over. With estimates recalculating in the background, you see it on the orders where it matters, while you can still adjust the price.

Production and planning use it too

Record that you produced 50 units and Panelque walks the recipe: every component is deducted from the warehouse in one operation, with movements you can audit and revert.

Planning works forward from the same data. The purchase-order wizard looks at unfulfilled paid orders, expands them through the recipes, and suggests what to order from suppliers - not “you’re low on shirts” but “these orders need 74 m of this fabric and you have 31”. The same expansion powers warnings when a variant can’t be built from what’s on the shelf.

Setting up a big catalog

Our own catalog is over 1,100 recipes - about 5,600 component lines. Nobody types that in by hand, so there are shortcuts:

  • Bulk BOM on the Products page adds the same components to many variants in one pass, skipping variants that already have them.
  • Sorting products by BOM components surfaces the ones that still have none.
  • Copying a recipe from one variant to its siblings covers the usual case where sizes share everything but a quantity.

An afternoon of setup is typical for a mid-size catalog. After that, maintaining recipes means editing the one that changed.

The recipe is the boring half of manufacturing software, which is why it’s usually skipped. But every number you actually want - cost, margin, what to produce, what to order - is computed from it. Write it down once, and stop guessing.

In the documentation

Keep reading