Overview
There are two directions for walking the BOM graph:- BOM explosion (forward) — starting from an assembly, expand it into every component, sub-component, and raw material it consumes, all the way down to the leaves.
- Where-used (reverse) — starting from a component, trace every parent assembly that consumes it, optionally all the way up to the finished goods that ultimately depend on it.
Where to Reach Them
On the BOMs page
The BOMs page supports both directions interactively:- Open any BOM to expand its component tree down to the leaves, with the per-edge quantity at each level.
- From any BOM, run where-used to see every parent assembly that consumes it.
Through Dexter
For questions posed in natural language, or when you want the answer pulled into a chat, ask Dexter:- “What goes into
widget-assembly?” - “Show me the BOM tree for the standard bracket.”
- “Where is
steel-plateused?” - “If I change the steel-plate BOM, what’s affected?”
explode <bom-slug>— forward explosion of a BOMwhere_used <bom-slug> [--recursive]— reverse explosion of a BOM
Inputs
Both tools take a BOM slug — the identifier of a specific BOM node in the graph, not an entity name. The slug matters because one entity can have many BOMs. A bracket entity with a standard variant and a heavy-duty variant lives as two BOMs, each with its own component tree:bracket-standard and bracket-heavy-duty. To explode the standard bracket, you pass bracket-standard.
There is no separate “variant” input — variant selection is which BOM slug you name. If you know the entity but not the slug, look it up on the BOMs page first, or ask Dexter to resolve the entity and variant to a slug.
where_used takes one flag:
--recursive— walk the full ancestor chain up to the top-level SKUs. Without it,where_usedreturns only the direct parents — the BOMs that list the target as an immediate component.
Outputs
explode — component tree
An indented tree rooted at the target BOM, drawn with monospaced box-drawing characters (├──, └──, │) — text tree art, not a table with columns. The root line is <bom-slug> explosion: and carries no quantity or depth of its own. Each node below it shows its BOM slug, the quantity consumed by its parent (×N), and its depth from the root. Depth 1 is a direct component; depth 2 is a component of a component; and so on down to the leaves.
where_used — parent list
A flat list of every BOM that consumes the target, with the quantity consumed per parent.
Direct parents only (default):
<bom-slug> is used in (recursive): — the (recursive) marker tells you which mode produced the list. The output stays a flat list either way; ancestors beyond the direct parents are simply additional rows, not a nested tree. depth 1 is a direct parent; deeper entries are further ancestors. The ×N on a recursive entry is the quantity consumed at that specific level, not the roll-up from the leaf.
Step-by-Step
Exploding a BOM
- Identify the BOM you want to explode. If you know the entity but not which variant, open the entity on the BOMs page first and pick the variant that matches the configuration you care about.
- On the BOMs page, click the BOM to expand its tree — or ask Dexter “explode
<bom-slug>” or the equivalent in plain English. - Read the tree top-down. Direct components are depth 1; leaves have no further children and are your raw-material demand.
- If you need totals for a specific production quantity, multiply per the path rule above — or ask Dexter to compute rolled-up leaf quantities for N units.
Finding where a BOM is used
- Identify the BOM you’re changing or investigating.
- On the BOMs page, run where-used on it — or ask Dexter “where is
<bom-slug>used?”. - Start with the direct-parents view for a quick impact scan; use the recursive view to see every finished good downstream of the change.
- Before editing a widely-consumed BOM, review each direct parent — changes propagate to every parent that consumes it, and to every scenario run against a planning model whose BOM list includes them.
Limits and Caveats
- Slug in, slug out. Both tools address BOMs by slug; entity names and variant descriptions are not accepted as inputs.
- No quantity multiplier. Neither tool takes “how many finished units” as an argument. Multiply per-edge quantities yourself, or hand the roll-up to Dexter.
- No variant resolution against a demand line. The tools do not take a variant condition and pick the matching BOM — they walk the specific BOM you name. Variant resolution happens on planning inputs via subset matching, not here.
- Shared components appear multiple times in an explosion. A leaf consumed by two branches shows up under both — the tree shows every path a component sits on, not a de-duplicated set. Sum across appearances for a single roll-up figure.
- Cycles are impossible. A material can’t be part of its own BOM — cyclical dependencies are rejected on write, so traversal always terminates.
BOM edits are visible immediately: both tools read the current BOM graph, so a change lands in the next explosion or where-used call. Planning runs, by contrast, take effect on the next run — see Planning Runs.

