The forecast that reads the news, while the math stays math.
The LLM is a sensor, not a judge. The model turns messy reality into typed claims that carry their evidence. Deterministic code verifies those claims, makes every decision and computes every number. Humans approve anything that acts.
Almanac forecasts how much stock a shop will need, starting by repairing the history: a day that sold out understates real demand, so that day is corrected before anything is fitted.
The forecast is ordinary statistics, and the output is a range to order within rather than a single number, with a plain sentence about what you lose at each end.
Free-text notes about local events become typed signals stored beside the numbers; in this phase they never silently move a quantity.
There is no web application here. Every endpoint below is JSON, and both reads and writes
require a bearer token; unauthenticated requests are refused with 401. The
interactive schema at /docs is deliberately public so the route map can be
read without credentials.
| method | path | what it does |
|---|---|---|
| POST | /api/v1/ingest | ingest sales history CSV, repair censored demand |
| POST | /api/v1/forecasts | forecast with prediction intervals |
| GET | /api/v1/forecasts/{sku} | stored forecast |
| POST | /api/v1/envelopes | order envelope with regret notes |
| GET | /api/v1/envelopes/{sku} | stored envelope |
| POST | /api/v1/autopsy | score a forecast against actuals |
| POST | /api/v1/signals | context signal from a free-text note (key-gated) |
| GET | /api/v1/signals | stored signals |
version 0.3.2 · commit 82508d6 ·
built 2026-08-03T02:40:12Z · environment production
Values are baked from build arguments. unknown means the image was built without
them, which is reported rather than replaced with a plausible-looking string.