Skip to main content

What we track

Four product categories, two severity tiers, global coverage:
Productwatch tierconfirmed tier
Jet fuel
Petrol
Diesel
Heating oil✓ (winter only)
Price spikes alone are not shortage signals. We key on physical supply constraints: flight cancellations, station closures, formal rationing, import cuts.

Fully automated — no human review queue

WorldMonitor runs every classifier fully automated. Shortage tiers are no exception. Quality comes from tiered evidence thresholds + an LLM second-pass sanity check + auto-decay of stale rows, not from a human reviewer.

Watch tier (automated)

One credible source:
  • A regulator announcement (EPRA, NMDPRA, OGRA, CAA UK, DGCA), or
  • An airline / airport operational bulletin, or
  • A national wire story with ≥ 1 corroborating observation

Confirmed tier (automated, stricter bar)

The watch → confirmed promotion requires:
  • Two distinct outlets + one regulator, or
  • Three distinct outlets, or
  • One regulator + a direct operational-impact signal (flight cancellation in an airline feed, formal rationing announcement, station-closure list)
AND — the LLM second-pass must agree with the promotion. If the LLM disagrees, the row stays at watch until the threshold is exceeded with additional sources.

Auto-decay

  • confirmed without new corroborating signal in 7 days → auto-demotes to watch
  • watch without new signal in 14 days → auto-removed
When the post-launch classifier ships, stale shortages will never persist silently — every demotion will write an entry to the planned public revision log. See /corrections for the designed audit-surface shape and current status. Today the demotion thresholds above are the contract; the structured audit trail lands with the classifier.

Evidence transparency

Every public shortage row exposes its evidenceSources[] inline — you can read the sources the classifier used. This is what makes WorldMonitor’s shortage registry defensible without an editorial queue. For any confirmed row, the panel surfaces:
  • Outlet / regulator names
  • Source dates
  • Classifier version + confidence
Agents (MCP clients) receive the same structured evidence via the ListFuelShortages RPC — every FuelShortageEntry in the response includes the full evidence.evidenceSources[] array, matching what the UI drawer renders.

Root-cause attribution

Every shortage row carries a cause chain, not just a severity:
  • chokepoint — physical supply constraint traced to a chokepoint status change
  • pipeline_disruption — specific pipeline in the registry is offline
  • sanction — new sanctions authority list triggered an import cut
  • upstream_refinery — refinery turnaround or outage
  • logistics — port / rail / truck bottleneck
  • policy — deliberate government restriction

Break-glass overrides (planned)

An energy_asset_overrides persistence layer is the designed break-glass surface for the rare case where a reader flags a demonstrably wrong classification. Writes would be admin-only and off the critical path — the default flow stays fully automated, and every override would emit an override-trigger entry to the revision log. Status (v1 launch): the override persistence layer is not yet implemented. Reader-flagged corrections are handled manually today via GitHub issues; they flow through the automated override path once that layer ships alongside the classifier. See /corrections for the planned shape of override entries.

Known limits

  • Non-English regulator feeds surface with some lag; we’re adding them incrementally.
  • “Watch” tier in a politically-noisy country can churn — that’s intentional; readers can filter to confirmed only if they want the stricter view.
  • Heating-oil shortages are seasonal and under-reported in wire coverage; winter months have higher signal.

Corrections

See /corrections for the planned revision-log shape (every tier change will ship with its trigger — classifier / source / decay / override — and the sources used). The classifier that writes entries ships post-launch; corrections are handled manually today via GitHub issues.