from osmoda research · manufacturing
Steel spiked at 03:14. Your PO already locked the old price.
An agent that watches CME so your buyer can sleep. 60-second polls of CME HRC, LME, Platts. KEYD-signed PO writes back to SAP / NetSuite / Epicor. Slack note in #procurement by the time the alarm rings, with the saved $ on a hash-chained audit row.
TL;DR
- • CME HRC futures swung $120/short ton in five trading days in June 2025 — one overnight spike eats a full quarter of margin
- • Section 232 tariffs doubled to 50% in 2025, putting a permanent floor under domestic steel and amplifying every tariff headline
- • ERPs like SAP MM and NetSuite store standard prices but can't re-forecast PPV in real time — that's a manual analyst job
- • soot polls CME, LME and Platts feeds every 60s, fires re-order at threshold, and signs the PO via KEYD vault — no human in the loop at 3am
- • $0.04/hour to run, vs. a Platts subscription plus a buyer who only checks at 9am ET
1. The pain — the futures market doesn't sleep
Hot-rolled coil isn't quiet anymore. The CME July 2025 HRC contract climbed from just under $800/short ton on May 30 to $924 by the next Thursday — a $120+ move in five sessions, triggered by a single White House line about doubling Section 232 duties from 25% to 50%. CME's Q1 2026 update flags the curve sitting in steep backwardation, with mid-2025 to year-end spreads inverting by $64. For a contract manufacturer running 6–12% gross margin, a 5% input shock vaporizes half the year's profit before the buyer's coffee is cold.
The instrumentation hasn't caught up. SAP S/4HANA and Oracle NetSuite hold standard prices and compute purchase price variance after the fact — they're costing systems, not market-watch systems. Sievo's PPV guidance is explicit: forecasted variance "cannot be automatically calculated by ERP," because forecast prices and quantities have to be compiled from external sources. That external source is usually a $30k+/year Platts or Fastmarkets seat, plus a procurement analyst who reads the morning report and decides whether to re-cut a PO.
Layer in 2026 reality: USMCA review, IRA domestic-content rules tightening, and CBAM live in the EU on imported iron and steel. Every one of those is a tariff headline that moves HRC futures intraday. The procurement team that wins is the one whose lock-in PO trips before market open — not the one whose buyer sees the spike at 9:15 ET and starts dialing the mill.
S&P Platts / Argus / Fastmarkets
Daily price reports for ferrous metals; trusted benchmarks but $25–60k per seat, refreshed once a session, and a human still has to read and act.
SAP MM / NetSuite / Epicor
System-of-record for POs and standard cost; great at recording variance after it's hit COGS, blind to the futures curve.
Excel + email PO templates
What most mid-market metal fabs actually run on; brittle, not auditable, and depend on whoever happens to be awake.
CME ClearPort + analyst headcount
Accurate but expensive; an analyst at $90k who only watches market hours misses every overnight Asia print.
2. The workflow — 60-second loop, watchdog-protected
- 1 · soot +
cron.poll+http.fetch— pulls CME HRC, LME aluminum and Platts feeds every 60 seconds into a typed-tool buffer, hash-chained to the audit ledger. - 2 · frog +
pricing.delta— computes rolling 1h / 6h / 24h variance against the locked standard price stored in the ERP mirror; flags >3% moves. - 3 · naga +
policy.check— gates the action against the procurement policy file (max single-PO size, approved suppliers, blackout dates) before anything writes. - 4 · soot +
erp.write+keyd.sign— regenerates the PO in SAP/NetSuite at the prior locked price, signs the action with the vault key the agent never sees. - 5 · tofu +
notify.slack— posts a one-line trade note to #procurement with the diff, the saved $, and the audit ledger link by the time the buyer's alarm rings.
3. Why it works
Always-on, never asleep
soot runs on a watchdog with 6s median restart. The futures market is open 23 hours a day and the analyst isn't. A $0.04/hour run-cost agent that catches one overnight spike pays for itself for a decade.
The PO is signed, not just suggested
KEYD's signed-action model means soot never holds the ERP credentials — it asks the vault to sign a typed erp.write call. That gives procurement a Sarbanes-Oxley-friendly audit chain (every action SHA-256 hash-chained) without giving up control.
Sits on top of the ERP, doesn't replace it
SAP, NetSuite, Plex, Epicor — soot reads the standard cost and writes the new PO through their own APIs. No rip-and-replace. The CFO's general ledger doesn't notice anything except that PPV got smaller.
FAQ
Does this work if our standard prices live in SAP, not in osmoda?
Yes. soot mirrors the SAP MM standard price view through the SAP OData API and writes POs back through ME21N. The ERP stays the system of record; soot is the always-on layer above it.
What if the futures move is wrong and we lock in too high?
naga's policy file enforces max-single-PO and per-supplier limits before any write. You set the thresholds; the agent enforces them. Every action lands in the hash-chained ledger for audit.
Can we self-host this, given the SOX / sensitive-pricing implications?
That's the default. osmoda is Apache-2.0 on a NixOS appliance with EU residency by default. Atomic deploys mean a bad config rolls back instantly. KEYD signs every ERP write so the LLM never holds the credential.
Stop watching CME at 3am. Spin up soot in your VPC and let the agent take the night shift.
Spawn a procurement agent →