Blog /
The Parametric BOM, Explained
Quantity formulas, recursive cost roll-up, phantom assemblies, effectivity, and why 57.2 EA of shingles becomes 58 BNDL — a deep-dive on the data structure that replaces a thousand variant tabs.
Most software that claims to manage bills of materials manages lists. A part number, a quantity, a level in a tree. That’s fine when every product you ship is identical. The moment products vary order to order, the list model collapses into its natural failure mode: one list per variant, copied and edited by hand, multiplied across every model, length, and option package you sell. We’ve seen platforms carried by dozens of near-identical spreadsheets — a maintenance surface that grows with your catalog and rots at the seams.
The parametric BOM is the data structure that fixes this. This post explains what it actually is, mechanically, and what it makes possible downstream.
Quantities are formulas, not numbers
The core move is small and radical: the quantity on a BOM line is an expression, not a constant. We call the field qty_formula.
A static BOM says: floor decking, qty 34. A parametric BOM says: floor decking, qty = ceil(floor_area / sheet_coverage) — where floor_area is derived from the width and length parameters of the configured product. Change the parameters and the same line yields a different, correct answer.
This is why one 16-wide platform template can serve both a 16×66 and a 16×80. They are not two BOMs. They are one BOM resolved with two parameter bindings. The decking, the PEX runs, the chassis crossmembers, the shingle count — every length-sensitive line recomputes. There is no second spreadsheet to create, which means there is no second spreadsheet to let drift out of date. The formula holds the reasoning; a static quantity only ever held one answer with the reasoning thrown away.
Parameters come in three flavors: literals set on the product or chosen by the buyer (width, length), derived parameters computed from other parameters (floor area, estimated weight), and plan.* parameters published live by the floor plan editor (window count, wall linear feet). That last category is worth pausing on: it means dragging a window onto a floor plan changes framing and sheathing quantities — and price — in the same interaction, because the plan and the BOM read the same model.
The tree, and the resolve
A BOM is a tree: assemblies contain subassemblies contain parts. Resolving a parametric BOM means walking that tree top-down with a parameter binding and a set of option choices, evaluating each line’s formula, and applying rules along the way — include this line only if that option is chosen, swap this part when that package applies.
Cost then rolls up recursively: a leaf part’s cost comes from the price book; an assembly’s cost is the sum of its children’s resolved cost times resolved quantity, all the way to the root. Because resolution is cheap, the roll-up runs live in the configurator. The price the buyer watches move is not an estimate correlated with the BOM — it is the BOM, summed.
Phantom assemblies
Some assemblies are real things a factory builds and stocks. Others are just useful groupings — a “door hardware kit” that is never assembled as a kit, only picked as parts. These are phantoms: they exist in the tree for modeling sanity, then explode into their components at resolve time, disappearing from the output.
Phantoms matter because they let the model’s structure follow how humans think about the product (“the kitchen run,” “the exterior door package”) without forcing the factory to pretend those groupings are inventory items. You get composable modeling on the way in and a flat, purchasable truth on the way out.
Effectivity
Products change over time. A vendor gets swapped in March; a bracket gets superseded in Q3. Effectivity dates scope each BOM line to a validity window, so the model holds its own history: resolve as of today and you get today’s parts; resolve an order from last year and you get the parts that were effective then. Without effectivity, every engineering change either rewrites history or forks the BOM — and forked BOMs are the variant graveyard growing back.
Scrap and purchase-unit rounding
Here is where most quoting math quietly lies, and where the UoM engine earns its keep. Follow one line end to end.
Your roof needs shingles. The formula computes coverage from roof geometry: say the model resolves a requirement of 52 EA of a shingle unit. Real installation wastes material — cut-offs, ridge caps, mistakes — so the line carries a scrap percentage, say 10%: 57.2 EA. But nobody sells you 57.2 of anything. Shingles are purchased by the bundle, so the engine converts to the purchase unit of measure and rounds up to a whole purchasable quantity: 57.2 EA → 58 BNDL-equivalent units, procured as whole bundles.
Three separate concepts — engineered quantity, scrap allowance, purchase-unit rounding — each explicit, each auditable. A spreadsheet typically smashes them into one fudged number (“order 60, that’s what we always order”), and then nobody can ever say which part of the 60 is engineering, which is waste allowance, and which is superstition. When the resolved BOM is what purchasing buys from, the distinction is money: quote from engineered quantities and you under-cost every order by exactly your scrap and rounding; quote from padded quantities and you can never tighten them, because you no longer know what the padding was for.
Why one model beats a thousand tabs
The variant-tab approach isn’t dumb — it’s the rational strategy when your tooling can only store answers. Its cost structure is just brutal: every new variant is a copy, every engineering change must be applied N times, and every miss is silent until it surfaces as a shortage on the line or a margin hole in the quarter.
The parametric model inverts the cost structure. Adding a variant is a parameter binding — near zero marginal cost. An engineering change is made once, scoped by effectivity, and every future resolution picks it up. Errors become systematic rather than scattered: if a formula is wrong, it’s wrong the same way everywhere, which means it gets found and fixed once. You trade a thousand small, invisible copy errors for a small number of visible modeling decisions. That is a trade you take every time.
What it buys you downstream
Everything interesting downstream of a BOM assumes the BOM is true.
Accurate quoting. When the quote is the recursive roll-up of the exact resolved material list — scrap and purchase rounding included — quote-to-actual variance stops being a category of surprise. The dealer’s live price and purchasing’s buy list are two views of one resolution.
Honest forecasting. Aggregate the resolved BOMs of your order pipeline and you have real material demand, by part, by week — not a planner’s extrapolation from last quarter’s mix. Vendor negotiations, buffer stock, and long-lead purchasing all inherit the model’s precision.
And explanation, everywhere: because every resolved line traces to a formula, a parameter, and a rule, “why is this number 58?” always has an answer. That property — the model being able to show its work — is the quiet foundation under everything else we build.
See it on your product, not our slides.
Bring a real order and we'll configure, cost, and resolve it live in 30 minutes.
Book a demo