Log the run. The rest follows.
One entry deducts materials, adds finished goods and stamps the batch with its true cost — including the ones still on the cure rack.
batchmade
RUN-0312Lavender barIn progress
StageCuringDwellDay 6 of 28Output240 barsBatch cost$186.40Unit cost$0.78Stage 4 of 5
RUN-0311Calendula balmIn progress
StagePouringDwell40 min inOutput96 tinsBatch cost$212.08Unit cost$2.21Stage 2 of 4
| Run | Product | Recipe | Output | Batch cost | Unit cost | Status |
|---|---|---|---|---|---|---|
| RUN-0310 | Oat milk soap | v2 · sealed | 180 bars | $141.20 | $0.78 | Finished |
| RUN-0309 | Charcoal bar | v2 · sealed | 0 bars | $34.80 | — | Cancelled |
| RUN-0308 | Lavender bar | v4 · sealed | 240 bars | $188.64 | $0.79 | Finished |
| RUN-0307 | Beeswax wraps | v1 · sealed | 60 packs | $96.00 | $1.60 | Finished |
| RUN-0306 | Calendula balm | v3 · sealed | 96 tins | $208.12 | $2.17 | Finished |
“Can I make this?”, answered before you start
Pick a recipe version and a target quantity, and Batchmade checks every material against the shelf as it stands right now. Any shortfall is shown in kilograms, not adjectives — and nothing is created until the check passes.
Lavender bar · 240 barsv4 · 6× batch
- Olive oil (pomace)12.0 LEnough
- Shea butter9.6 kgEnough
- Lye (NaOH)2.2 kgShort 0.4
- Lavender oil180 mlEnough
Short 0.4 kg of lye — receive a delivery or drop to 200 bars
One entry moves stock and cost together
Starting a run pins the recipe version and the workflow version at that moment, so the batch keeps its own record of what it was made from. Every run holds an immutable journal of what actually happened.
Run 86 · lavender barCuring
Cureday 18 / 28
- − 9.6 kg shea butter
- − 12.0 L olive oil
- − 180 ml lavender oil
- + 240 bars, curing
Run logged 07:20, 12 Aug 2026 · batch cost $357.90
Build the path your batches actually take
Ordered stages, each declaring its stock effect — reserve, consume, or receive finished goods — with one stage marked as finishing the run. Publishing seals the version permanently; in-flight runs stay pinned to the one they started on.
Cold-process soapv3 · sealed
- 1Weigh outreserves materials—
- 2Blend and pourconsumes materials—
- 3Set in mouldno stock effect24–48 h
- 4Cut and rackno stock effect—
- 5Curereceives finished goods28 d min
Stage 5 finishes the run · run noun: “batch”
The rack remembers, so you don’t have to
Stages carry a minimum and maximum rest time. Notifications fire on entering or leaving a stage, at minimum dwell, or when something is overdue — routed to the maker, in-app or by email.
Inbox3 unread
- Run 86 · cure reaches minimum tomorrowCold-process soap · stage 5 · 27 days in
- Run 81 overdue in Set in mould52 h against a 48 h maximum
- Run 84 finished · 200 bars receivedYesterday, 16:40
Each batch carries its own cost basis forward
Inputs consumed, output received, and unit cost on both costing bases — per run, with a full breakdown. Finished goods sit in their own lots, separate from material stock, and this is the number that follows them into a sale.
Run 86 · cost facts240 bars received
- Materials consumed$305.10
- Labour · 1.9 h logged$52.80
- Batch cost$357.90
- Unit cost · lot-actual$1.49
- Unit cost · moving avg$1.52
Both bases kept side by side, always
The quiet machinery underneath
- Makers and labour rates
Per-maker hourly rates captured at the moment hours are logged. Unset means unknown, never free.
- Stock corrections
Reconcile a finished-goods lot against the ledger with a reason code that carries its profit meaning to the books.
- Sealed versions
Full workflow version history retained. Renames and re-publishes never touch a run already moving.
- Lots on hand
Output stock grouped by product and broken down by run, with quantity and value per lot.
Retire the batch notebook.
Free for 30 days, no card required. Log one run and watch the stock and costs settle themselves.
