An always-on engine that watches the upstream world, commodities, weather, shipping, regulation, and the news itself, and turns it into a clean, cited, per-category signal feed for RGC's reports.
When a Tesco buyer reviews potato snacks, nobody automatically says wholesale potato prices fell 18% last quarter, so the supplier has margin to give. When RGC advises on dairy, nobody warns that a northern-Europe drought is about to squeeze milk.
That upstream layer is exactly what this engine produces. Not opinions, signals, each one traceable to its source.
That is the whole integration surface for RGC's report pipeline. Everything else in the engine serves this one call. It answers in about 15 milliseconds.
Two categories were the brief's target. The mapping table let us reach 25 without new code.
AHDB (milk, wholesale dairy, feed, fertiliser, fuel), World Bank Pink Sheet, FRED. History to the 1990s.
NY Fed global supply-chain pressure index. It tripled when the Middle East war hit shipping.
NOAA El Niño index, currently past the warning threshold, the biggest driver of global crop yields.
The engine reads AHDB's monthly commentary and extracts cited facts, Rabobank views and all.
ONS food PPI, FSA recall feed, and the FOI/EIR channel with the live Environment Agency case.
Ground-truth facts joined by a model into buyer-actionable signals, every claim cited.
Real values from tier-labelled sources. Anomaly-gated before they enter the store, corroborated across sources, and traceable through source → raw file → ingest run → transformation.
A model joins the facts into higher-level signals with honest confidence. Every claim is mechanically checked to cite a real fact, anything citing an unknown value is rejected.
The model is read from config, never hardcoded. Any hosted model, or a local one on RGC's own machine, drops straight in.
These events were not typed in by anyone. The engine scans global news for supply shocks tied to our commodities, and the number of independent outlets covering a story sets its confidence.
35 outlets, 3 major wires · confidence 0.83
37 outlets · confidence 0.77
35 outlets · confidence 0.77
31 outlets · confidence 0.71
The one-call state goes in; a short, plain-English, fully-cited supply-side briefing comes out, the headline, what moved, what to watch, on a schedule. This is the artefact your report writers consume.
UK milk supply has turned: fats stay cheap for now, but the herd is shrinking and input costs are climbing into H2.
every sentence links to the live signals it rests on
Categories, signals, sources, inferred conclusions, events and FOI requests, drawn as one graph in 2D or 3D, with the information flowing along the links in the direction it really travels. Nobody arranged it; the data did. Dairy on one side, snacking on the other, shared signals in the bridge between.
live open /graph to fly through it.
FastAPI + a normalised store. SQLite today, one env var to Postgres. Deploys onto the always-on Mac Studio over Tailscale; bursts heavy parsing to Google Cloud. Same code, it just moves.
Free feeds. A monthly all-category inference pass runs on a local model for near-zero cost, with hard budget caps and a pre-flight estimate on every job. No unbounded loops.
No customer dashboard (brief §11). Structured data out: one API call, CSV export, direct DB read. This internal view is for operators.
Two categories fully wired was the brief's "done" line. We're past it.
Built for Really Good Culture · Hindover Ltd