Notes

Notes from the mixer, the oven and the control room.

Short essays on industrial baking and autonomy, written from the thinking behind the product. No author bylines yet: the team publishes names when people join publicly.

Six notesBaking and autonomyNo sales register

run_scn_01 · agent graph · scenario 10 nodes · 1 approval gate
01 · orchestrator order.receive ✓ SUCCEEDED 02 · orchestrator twin.simulate ✓ SUCCEEDED 03 · dose_mix mix.dose ✓ SUCCEEDED 04 · ferment_proof proof.hold ✓ SUCCEEDED 05 · makeup_deposit deposit.trim ✓ SUCCEEDED 06 · orchestrator approve.human ◆ APPROVAL 07 · bake_cool bake.zone ✓ SUCCEEDED 08 · defect_inspect inspect.line ✓ SUCCEEDED 09 · robot_handling handle.pack ✓ SUCCEEDED 10 · quality_conf release.genealogy ✓ SUCCEEDED

Illustrative scenario: Plant run · one bread line, flour-lot change at the silo · shared oven. Not a measured run.

Notes

In the order we wrote them

Origin

Where bakeries lose margin they cannot see

Talk to a plant director and the same costs surface. Depositors overshoot the target weight to avoid ever going underweight, so giveaway bleeds out gram by gram, millions of times a day. Ovens run fixed profiles while incoming dough varies, so under- and over-bake downgrade product and shorten shelf life. Baking is the biggest energy line in the plant.

Then there is the fear: one foreign body, one allergen slip or one seal failure becomes a recall that costs millions and breaks customer trust overnight.

The tools a bakery has measure these problems. None of them fix the root cause, because inspection is read-only and equipment holds fixed profiles. That gap, between a line that is thoroughly instrumented and a line that is actually controlled, is the opening Doughex was designed for.

Workforce

Dough is alive, and the people who can read it are retiring

A head baker can look at dough and know it is proofing too fast. A process engineer can hear an oven and know the bake is drifting. That craft lives in a few people's hands and instincts, and it is aging out of the industry faster than it can be replaced.

Meanwhile the plant runs around the clock, every shift, on lines that never stop, and the craft cannot be cloned across every line and every site.

Our answer is not to replace the baker. It is to make their corrections the thing the plant learns from: every approval, override and note in recommend mode becomes a labelled event in a per-plant memory that is versioned, tenant-scoped and never shared across customers.

Simulation

Why a twin has to be as-baked, not as-designed

Bakeries commit to a run and only discover colour misses, weight drift, collapsed proof or takt bottlenecks after the dough and the energy are spent. An as-designed model of the oven does not help, because the line never runs as designed: the flour lot changed, the proofer humidity drifted, the oven band is a little slower on the left.

Bakesim starts from the live plant state and the coupled physics of oven heat and airflow, proof heat and humidity, and dough rheology and deformation, and simulates the product as it will actually be baked. The result is a profile and a control envelope the agents can execute, and a record of why the discarded candidates were discarded.

The same machinery generates rare foreign-body, under- and over-bake and deformation scenarios that are too rare and costly to collect, always validated against real plant events before a model is allowed to learn from them.

Depositing

Giveaway is the biggest yield lever nobody controls continuously

Depositing and dividing portion every unit the bakery makes, and they drift with dough rheology, temperature, hydration and machine wear. The defensive response is to overshoot the target so nothing ever goes underweight, and that margin leaves the plant on every unit.

Gramex's premise is that giveaway is only eliminated if portion weight is predicted and acted on continuously, not corrected by hand between checkweigh readings. That means fusing the checkweigher with dough state and depositor feedback and trimming the setpoint at the minimum safe margin, with an underweight guardrail and every trim in the audit trail.

It is also why the Line tier starts here for many biscuit, cookie and cake bakeries: the baseline is easy to measure and the result is in grams and dollars.

Energy

Baking at the quality-safe frontier

The oven is the plant's largest energy consumer, and it is run with margin because the cost of a pale loaf or a wet crumb is high. Running conservatively wastes energy; running hot risks over-bake, short shelf life and scrap.

Ovenix couples colour and moisture sensing with a GPU-accelerated oven twin so the profile can run closer to the true quality-safe frontier. Oven CFD, heat and airflow across zones, is a classic GPU workload; on CPUs it cannot run fast enough to inform live control or to generate synthetic upset scenarios.

The commercial case follows the physics: energy per unit is a number every industrial bakery already tracks, which makes outcome pricing on verified reduction one of the strongest value-based cases in the plant.

Principles

Trust before autonomy

Autonomy in a food plant is earned in levels. Observe mode predicts and writes nothing. Recommend mode proposes and a person decides. Approve-to-apply prepares the write and waits. Bounded control writes low-risk setpoints inside explicit limits. Kill steps, metal detection, allergen changeover and release decisions never move to the agent.

Every output is grounded and cited to the recipe, the proof or bake spec or the HACCP plan it relied on. Every action is written to an immutable audit log. Model and prompt changes are gated by golden datasets and model-as-judge evaluations in CI before they reach a plant.

These are the guiding principles in our roadmap, and they are the reason the first release is one wedge workflow with a review console and an audit log, not a plant-wide programme.

Run timeline

The scenario most notes refer to

Every Doughex run is an ordered, inspectable sequence. This is run_scn_01, an illustrative scenario: Plant run · one bread line, flour-lot change at the silo · shared oven. Scenario complete · every stage inside spec · one human approval at the oven.

run_scn_01 scenario · not measured SUCCEEDED
  1. 01 order.receive SUCCEEDED 0.8 s

    Plant Orchestrator · Pulled the product spec, the recipe, the HACCP plan with its bake kill-step and metal-detection control points, the allergen status of the line and the new flour lot's certificate from MES and the lab system; locked the target envelope for the run.

  2. 02 twin.simulate SUCCEEDED 38 s

    Plant Orchestrator · Simulated 24 candidate profiles across mix, proof, deposit and oven on the Bakesim as-baked twin for the new flour lot; ranked them on colour and moisture margin, weight margin, energy per unit and takt, and discarded every candidate that thinned the bake kill-step margin.

  3. 03 mix.dose SUCCEEDED 12 m 40 s

    Dose-and-Mix · Adjusted hydration and mix energy for the new lot's absorption so dough temperature and development landed on target; dough state was handed to the proofer with its predicted rise curve.

  4. 04 proof.hold SUCCEEDED 58 m

    Ferment-and-Proof · Predicted the rise curve from inline height, temperature, humidity and CO2, then trimmed proofer humidity and dwell so rise and volume landed on target instead of running fast on the fresher lot.

  5. 05 deposit.trim SUCCEEDED continuous

    Makeup-and-Deposit · Fused checkweigher readings with dough state and divider feedback and trimmed the divider in real time so portion weight sat at the minimum safe margin above the declared weight, with the underweight guardrail armed.

  6. 06 approve.human APPROVAL 1 m 36 s

    Plant Orchestrator · The twin's lowest-energy candidate wanted a zone-three temperature outside the site's bounded envelope. Held for the shift process engineer, who approved the step with a tighter colour alarm.

  7. 07 bake.zone SUCCEEDED continuous

    Bake-and-Cool · Ran the oven against the twin's colour and moisture prediction; stepped zone temperatures and band speed toward the minimum-energy profile while predicted crust colour and crumb moisture stayed inside spec and the core-temperature kill step was verified on every reading.

  8. 08 inspect.line SUCCEEDED continuous

    Defect-and-Inspect · 12 camera streams at oven exit, cooler exit and packing at the plant edge: colour, shape, holes, cracks, foreign-body and seal checks on every unit; two pale-top rejects were attributed to a draught at zone one and the oven agent was notified.

  9. 09 handle.pack SUCCEEDED continuous

    Robot-and-Handling · Robotic depanning, tray transfers and packaging handling paced to the line, with rejected units diverted off the belt and the safe zone around each cell monitored.

  10. 10 release.genealogy SUCCEEDED 1 m 05 s

    Quality-and-Conformance · Lot released: flour lot, recipe, mix and proof setpoints, portion weights, oven profile, kill-step readings, inspection rejects and every human decision written to the genealogy and checked against spec and the HACCP plan.

Tool calls

The agent shows its work

Every tool invocation, argument and result is written to an immutable, human-readable log, and every reasoning step is expandable. Nothing about a run is hidden from the plant. The log below is the scenario run, not a measured one.

tool-call stream · run_scn_01
  1. 04:40:02mes.read_order({ line: "BR-2", product: "SANDWICH-800", flour_lot: "F-3312" })
  2. 04:40:02ok spec locked · HACCP plan v6 · CCPs: bake kill step, metal detection
  3. 04:40:03lab.read_results({ lot: "F-3312", test: "flour_certificate" })
  4. 04:40:03ok protein and absorption read · lot accepted at the silo
  5. 04:40:04twin.simulate({ candidates: 24, horizon: "shift" })
  6. 04:40:42ok best profile #7 · kill-step margin held · lowest energy per unit
  7. 04:40:43policy.evaluate({ profile: 7, level: "bounded" })
  8. 04:40:43ok 8 writes permitted · 1 write requires human approval
  9. 04:40:44plc.write_setpoint({ tag: "MIX1.ENERGY", basis: "lot absorption + dough temp" })
  10. 04:53:24ok dough temperature on target · development inside window
  11. 04:53:25plc.write_setpoint({ tag: "PRF1.DWELL", basis: "rise curve + humidity" })
  12. 05:51:30ok rise and volume on target · proof not running fast
  13. 05:51:31plc.write_setpoint({ tag: "DIV1.TRIM", mode: "min_safe_margin" })
  14. 05:51:31ok portion weight at minimum safe margin · underweight guardrail armed
  15. 05:51:33approval.request({ action: "oven.zone3", reason: "outside bounded envelope" })
  16. 05:53:09ok approved by the shift process engineer · tighter colour alarm set
  17. 05:53:10plc.write_setpoint({ tag: "OVN1.ZONE3_T", mode: "min_energy" })
  18. 05:53:10ok predicted colour and moisture inside spec · kill step verified
  19. 05:53:11vision.stream({ cameras: 12, models: ["colour_shape", "foreign_body", "seal"] })
  20. 06:21:48reject: pale top · unit 2231 · attributed to draught at zone one
  21. 06:21:49defect.attribute({ event: "pale_top", cause: "oven.zone1_draught" })
  22. 06:21:49ok oven agent notified · second reject at 06:23:12 · zone one corrected
  23. 06:21:50robot.execute({ cell: "DEPAN-1", mode: "guarded", pace: "line" })
  24. 06:21:50ok depanning and tray transfer paced · rejects diverted · safe zone clear
  25. 08:14:20mes.release_lot({ lot: "BR2-3312", genealogy: "full" })
  26. 08:15:25ok lot released · scenario complete

Reasoning trace

Goal, plan, thought, action, observation, exactly as the orchestrator would record it.

GoalStart flour lot F-3312 on bread line BR-2, hold development, r…

Start flour lot F-3312 on bread line BR-2, hold development, rise, weight, colour and moisture on target through the change, and release the lot with full genealogy.

PlanSimulate the whole profile on the twin first. Lead with the mi…

Simulate the whole profile on the twin first. Lead with the mixer so the proofer gets dough with a known rise curve and the divider gets dough with a known density. Verify the bake kill step continuously. Let the oven chase minimum energy only inside the bounded envelope; hold anything beyond it for a person.

ThoughtThe standing recipe overshoots portion weight and runs the ove…

The standing recipe overshoots portion weight and runs the oven hot to protect against lot variability. With continuous dough-state, weight and colour estimates the margins can sit at their minimum safe values. The saving is giveaway and energy, not safety margin: the kill step is never a candidate for optimisation.

Actiontwin.simulate(candidates=24) → profile #7: minimum safe weight…

twin.simulate(candidates=24) → profile #7: minimum safe weight margin, kill-step margin unchanged, lowest predicted energy per unit.

ObservationProfile #7's zone-three temperature sits outside the site's bo…

Profile #7's zone-three temperature sits outside the site's bounded envelope. The policy engine routes that single write to the shift process engineer and permits the other eight.

ActionExecute profile #7 at the bounded level: mixer, proofer and di…

Execute profile #7 at the bounded level: mixer, proofer and divider writes proceed; the zone-three write waits.

ObservationApproval granted at 05:53:09 with a tighter colour alarm. Two …

Approval granted at 05:53:09 with a tighter colour alarm. Two pale-top rejects at oven exit were attributed to a draught at zone one and corrected by the oven agent.

OutcomeScenario complete. The lot released with flour lot, setpoints,…

Scenario complete. The lot released with flour lot, setpoints, kill-step readings, inspection events and the human decision in the genealogy. No measured plant result is claimed; this is the run the platform is designed to execute.

Topics

What we write about

Dough

Mixing, development, fermentation, proofing and the craft of reading it.

Weight

Depositing, dividing, giveaway and the underweight guardrail.

Oven

Colour, moisture, zones, energy per unit and oven CFD.

Trust

Food safety, audit logs, autonomy levels and what never leaves a person.

Autonomy

Five levels, set per loop

A bakery does not go from manual to bounded control in one step. Doughex makes the level explicit per loop, auditable and reversible at any time, and some decisions never leave the person.

Autonomy levels and the human role at each
LevelWhat the agent doesWhat the person doesWhen
ObservePredicts rise, weight, colour, moisture and defects; writes nothingRuns the bakery as today; compares predictions to QA checksFirst phase with every design partner
RecommendProposes mix, proof, deposit and oven moves with the evidence behind eachA process engineer or baker approves or corrects each oneAfter accuracy is proven against the baseline
Approve to applyPrepares the write; applies it only on a named person's approvalApproves per move; reviews the shift recordOnce recommendations are trusted
BoundedWrites low-risk oven, depositing and inspection setpoints inside explicit limitsApproves anything above the limits; reviews exceptionsAfter the food-safety and ROI gates agreed up front
ExceptionsEscalates anything outside its envelope, CCP-adjacent moves and release decisionsAlways decides these; the agent never doesPermanent
Design targets

Figures we cite most

The numbers Doughex is engineered against, from the GPU utilisation plan.

<100 ms reject decisions for inspection at the plant edge
10–60 FPS vision inference per station, depending on the station
8–24 synchronised cameras per high-speed line
1–5 s supervisory control interval for proof, bake and deposit loops
50–200 GPU-hours of fine-tuning per product family per release
100k–1M synthetic rare-event images per defect family, validated before use

Design targets from the GPU utilisation plan. Nothing on this page is a measured plant result; measurements start when the first design-partner line runs in observe mode.

Guardrails

An agent that can move a setpoint needs a leash

Doughex writes to production equipment in a food plant. Every capability is scoped, every write is policy-checked, every output is cited, and every action is written to an append-only audit log the plant owns.

  • Bounded action space. Each agent can only write to an explicit tag allow-list, inside per-tag rate and magnitude limits, at the autonomy level the plant has set.
  • Critical control points are read, never written. The bake kill step, metal detection and X-ray rejects, allergen changeover and release decisions stay with the HACCP plan and the people who own it.
  • Policy engine before every write. Autonomy level, interlock state, product, allergen status, shift and operator presence are evaluated before a setpoint moves.
  • Grounded and cited. Every recommendation carries a citation to the recipe, spec or procedure it relied on. Retrieval is tenant-isolated and permission-aware.
  • Immutable audit log. Append-only, exportable and retained on the plant's own storage, aligned to HACCP, FSMA, BRCGS and ISO 22000 record-keeping.
  • Hard fallback. If the edge node, the network or a model stops, the line keeps running on its existing PLC and SCADA control and interlocks.
  • Tenant and IP isolation. Recipes, customer specs and tolerance models never cross a customer boundary. On-prem deployment available.

Assurance posture

Assurance and certification status
ItemScopeStatus
SOC 2 Type ICloud control plane QUEUED Roadmap, first 6 months
SOC 2 Type IICloud control plane QUEUED Roadmap, 6 to 12 months
HACCP · FSMA · BRCGS · ISO 22000 · allergenGrounding and record-keeping RUNNING Design basis for retrieval and the audit log
Per-tenant isolationData, memory, models RUNNING Design rule
On-prem deploymentRecipe-sensitive bakeries RUNNING Design option

Doughex supports your food-safety records. It is not a certification and it does not replace your HACCP plan.

Read the security overview

Integrations

It speaks plant, not cloud

Doughex reads and writes through the systems already on the floor. No parallel historian, no new HMI, no rip-and-replace. Connectors are built against each design partner's stack first; long-tail integrations are out of scope for the first release.

Plant automation

PLC and SCADA of mixers, proofers, dividers and depositors, ovens, coolers and slicers

Setpoint reads, guarded writes, interlocks untouched

Inline sensing

Checkweighers, inline moisture and NIR, thermal cameras, dough height, temperature and humidity

Continuous product and process state

Safety detection

Metal detectors and X-ray systems

Read and verified; reject interlocks stay the plant's

Bakery MES

Orders, recipes, product specs, lot genealogy, allergen status

Targets in, release records out

Vision

Multi-camera stations at oven exit, cooler exit, slicer and packaging

Frames, defect events, reject commands

Energy

Plant and oven-level gas and electricity meters

Hard constraints for the oven profile and schedule

Robotics

Isaac-driven depanning, tray transfer and packaging cells

Perception and motion for pans, trays and packs

Identity (planned)

SSO and role-based access; SOC 2 on the roadmap

Named approvers, scoped roles

See all integrations

FAQ

Straight answers

The questions plant directors, process engineers and quality managers ask in the first meeting.

Only at the autonomy level your plant has set, and only to an explicit allow-list of low-risk loops inside explicit limits. Every design partner starts in observe mode, where Doughex predicts and writes nothing. Recommend mode follows, where a process engineer approves each move. Bounded autonomy on oven, depositing and inspection loops comes after the food-safety and ROI gates agreed up front.

Get started

Get new notes

Ask to be added to the list. Notes only, no drip campaign.