Production & Costing
Define recipes (bills of materials) and run production batches that turn raw materials into finished goods. Each recipe lists materials in, output variants out, and processing steps. Every run computes material cost, processing cost, per-unit cost, margin, and profit. When you mark a run complete, DayZero consumes material cost lots (FIFO) and creates finished-good lots at the blended production cost.
Key capabilities
- Reusable recipe templates with materials, output variants, and processing steps
- Material quantity types: percent of weight, fixed per unit, per N units, or fixed per run
- Per-material yield factor, cost per unit, and cost denomination (per unit or per weight)
- Multi-level BOMs — a material can reference a sub-recipe, rolled up recursively (cycle-protected)
- Output variants allocated by percentage, with one optional remainder variant
- Processing steps allocated by percent of total, by output variant, or across all units
- Built-in weight conversions (lb, oz, g, kg, mt) plus custom per-recipe factors
- Production runs with total units and unit sale price; what-if recalculation without saving
- Run lifecycle: Draft → Active → Completed; completion moves cost through inventory lots
- Recipe duplication; materials must link to in-business catalog variants
- Nightly landed-cost rollup snapshots finished-good cost from the BOM
How it works
A recipe defines inputs, outputs, and steps. A run applies them to a batch size, computes cost, and on completion moves cost through inventory lots.
flowchart LR
recipe["Recipe / BOM"] --> run["Production run"]
run --> calc["Calculate costs"]
calc --> breakdown["Per-unit cost, margin, profit"]
run --> complete{"Mark complete?"}
complete -->|"Yes"| lots["Consume materials, create outputs"]How to use it
- Open the Production & BOMs tab and click New Recipe.
- Set the output unit (name, weight, weight unit) and any custom conversion params.
- Add materials — link each to a catalog variant, choose quantity type and value, set yield and cost.
- Define output variants with allocation percentages; optionally mark one as the remainder.
- Add processing steps (labor, roasting, co-packing) with allocation type and cost per unit.
- Create a Production Run, set total units and unit sale price, then Recalculate to preview the breakdown.
- Review the cost breakdown and Mark Complete to finalize and move cost through lots.
Pro tips
- Duplicate a proven recipe to spin up a variation instead of rebuilding from scratch.
- Recalculate is a true what-if — change run size or sale price without saving.
- Use yield factor for inputs with loss (trim, evaporation) so cost reflects what you actually buy.
- Use per N units for packaging (e.g. one case per 12 units) — DayZero rounds up to whole units.
- Build sub-recipes for sub-assemblies; the rollup walks them recursively and blocks cycles.
- Mark leftover output as the remainder variant so allocations always sum to 100%.
In-depth guide
Recipe structure
| Part | Holds |
|---|---|
| Recipe | Output unit name, weight, weight unit; optional conversion params |
| Materials | Category, quantity type/value, yield, cost, linked variant, optional sub-recipe |
| Output variants | Name, allocation %, remainder flag, linked variant |
| Processing steps | Step type, allocation type, cost per unit |
Materials must reference an active in-business catalog variant. Unlinked custom materials are rejected.
Quantity types and processing
| Quantity type | How required quantity is calculated |
|---|---|
| Percent of weight | Output weight × percent ÷ yield factor |
| Fixed per unit | Quantity value × applicable units |
| Per N units | Applicable units ÷ N, rounded up |
| Fixed per run | Quantity value, once per run |
| Processing allocation | Allocated across |
|---|---|
| Percent of total | A percent of total units (or weight when priced per weight) |
| By output variant | Only the listed output variants |
| All units | Every unit in the run |
Run status and completion
| Status | Meaning |
|---|---|
| Draft | Created; cost breakdown computed |
| Active | In progress |
| Completed | Finalized; lots consumed and created |
| Cancelled | Abandoned |
Completing a run consumes each linked material from FIFO cost lots, adds processing cost, and creates a new cost lot per output variant at blended production cost. Re-completing an already-completed run is rejected. If no FIFO lot exists for a material, DayZero falls back to the recipe's recorded cost.
A nightly rollup builds landed-cost snapshots for finished-good variants with recipes, splitting materials and packaging layers and tagging results for the Landed COGS view.