Resource Planning

Turn an order book into a roast day

Demand merged by what would be roasted together, sized to your drums, and sequenced so the day actually runs.

The problem

Twelve customers ordering the house blend is one roast, not twelve — but only if something merges them. Most planning happens on a whiteboard, and the whiteboard does not know which drum is free.

Merged, sized, sequenced

Confirmed orders, less what stock already covers, become batches your machines can run — in an order that reflects how a roastery actually works.

  • Light before dark, because a dark roast leaves residue the next batch picks up
  • Decaf last regardless of how light it is: decaf sheds more chaff and scorches sooner
  • Each requirement is spread across drums rather than queued behind one

A plan that admits what it cannot do

When the day's capacity will not cover the book, the schedule says so — with the kilograms unplanned, on the plan itself. A schedule that quietly covers less than was ordered is worse than no schedule.

Released by a person

Generation produces a draft. Somebody reads the feasibility notes before a day's work is committed to it, and releasing twice is a conflict rather than a second release.

Everything here is in the API

This area is production.schedule.* — the same operations the console calls.