Bromel Supply Planner
Explodes your BOMs against real demand, so it tells you why you are short.
“Cedarwood Essential Oil short 5,727 g — gross 10,845 against 5,094 on hand plus 24 inbound. Driven by Cedar & Sage Bar Soap 4.5 oz.”

The job
Every line below is a capability in the product, checked against the code that implements it.
- Run MRP and work the resulting exceptions as suggestions
- Turn an optimised plan directly into purchase orders
- Track raw materials and finished goods at lot level, including what is actually available to promise
- Log receiving against purchase orders
- Count inventory on a cycle and post adjustments against the count
- See what is expiring before it expires
It brings you work, never actions
Nothing happens without your say-so. The refusal is machine-readable and enforced when the code loads — a developer who tries to slip an outward action past it gets a build failure, not a code-review argument.
Draft purchase orders, shortage tasks, and reorder and expiry tasks naming the item, the supplier and the days.
When it has nothing to say
Most software only shows you the good day. This is what this seat does on a thin one.
MRP coverage is bounded by how many products carry a bill of materials — not by how many SKUs exist. The stock and reorder half needs neither BOMs nor invoices.
The seat states its own scope in the sentence it writes: it reports that MRP is clean for the X of Y products that carry a BOM and that the rest are not visible to the check, rather than implying whole-shop coverage. Stock and reorder findings keep coming either way.