Map Bill of Materials
Map raw rows into the scenario's bill of materials table: the recipe for each finished product, which components it consumes, and how many of each per unit of output.
A bill of materials is the structural backbone of production. Pair it with Map Production Policy, which says where a recipe can run and at what cost, and Map Production State, which records what was produced.
When to use this¶
- Your network makes products rather than only moving them. Components are assembled into finished goods
- You want Network Optimization and Cost to Serve to account for component consumption and the cost of finished goods
What you need¶
- An upstream Import Data node with one row per (recipe, component) pair
- The finished product, its components, and how many of each component go into one unit of output
Each recipe produces exactly one output product. The output columns repeat on every component row of the same recipe. Rows are grouped by recipe name.
Field mapping¶
Auto-detection is all or nothing. With no explicit mapping on the node, every field is matched against the headers listed below, case-insensitively, and a space in your header reads as an underscore, so Site Name matches site_name. Set even one field explicitly and detection switches off for the whole node: only the fields named in the mapping are filled, and the rest arrive empty.
Set mappings in the node's panel. Connect an upstream table and select the mapping node to see automatic matches. Choosing a column saves all displayed matches as an explicit mapping. Use Use automatic detection to return to header detection. Required fields without a match are marked in the panel.
| Field | Type | Required | Example | What it is | Auto-detected headers |
|---|---|---|---|---|---|
| Bom Name | text | Yes | City Bike BoM |
Recipe name. All rows sharing this name form one Bill of Materials. | bom_name |
| Output Product | text | Yes | City Bike |
The finished product this recipe produces. Must be the same on every row of the recipe. | output_product |
| Component Product | text | Yes | Wheel |
A component consumed by this recipe. Must match a product used elsewhere in the scenario. | component_product |
| Quantity per Output | number | Yes | 2.0 |
How many units of the component go into one unit of the output product. | quantity_per_output |
| Output Unit | text | No | bike |
Unit the output product is counted in. Repeated on every row of the recipe. | output_unit |
| Component Unit | text | No | piece |
Unit the component is counted in. | component_unit |
How it works¶
Rows are grouped by Bom Name into one recipe each. The per-unit coefficients tell the optimizer how much of each component a unit of the finished product consumes. Cost to Serve uses the same coefficients to roll component cost up into the finished good.
Workflow wiring¶
flowchart LR
n1["Import Data (bom.csv)"] --> n2["Map Bill of Materials"]
n4["Import Data (production.csv)"] --> n5["Map Production Policy"]
n2 --> n3["Create Scenario"]
n5 --> n3
Common mistakes¶
- Several outputs in one recipe. Each recipe makes one finished product. Co-products are not modelled. Give each output its own recipe.
- Disagreeing output columns within a recipe. Every row sharing a Bom Name must name the same Output Product.
- Putting the production cost here. The per-unit conversion cost belongs on Map Production Policy, not on the recipe.