// the problem

Operational risk hides in a hundred feeds at once

Ocean freight, fuel prices, port strikes, weather, sanctions, congestion - the signals that move a supply chain are scattered across news feeds, carrier advisories and authority sites. By the time someone has read enough to see the pattern, the window to act has often closed.

One person cannot watch all of it. And a single general-purpose summary flattens the detail that matters - which carrier, which lane, which region.

// how it solves it

Seven specialist agents, one briefing

The Risk Monitor runs a fleet of specialist agents, each owning one slice of risk - freight, fuel, diesel, strikes, weather, geopolitics and port congestion. Each watches its own sources and writes its own briefing, so the detail survives instead of being averaged away.

It runs two ways: a CLI that produces weekly reports (HTML, Markdown, PDF and slide decks) and a live dashboard that refreshes itself every few hours. The model behind the summaries is yours - Anthropic, OpenAI or a local Ollama model - switched with a single line of config.

// architecture overview

Collect, filter, summarize, compose, save

01
CollectGoogle News RSS, Playwright scraping of carrier and authority sites, plus manual YAML / DOCX / EML drops
02
FilterTag each article by region, flag container-availability signals, drop the rest
03
SummarizeA short summary per article plus an executive briefing, via any model through LiteLLM
04
ComposeRender to HTML / Markdown, or build a slide deck, per agent
05
SaveWrite the files, or upsert into SQLite for the live dashboard

One base class defines the five-step contract; a registry wires each agent in. No orchestration framework underneath - subclass the base agent, register it, done.

// what makes it different

Specialist depth, model-agnostic, config-driven

specialist
Specialist, not generalist

Seven agents each own a slice of risk, so a briefing keeps the detail - which carrier, which lane, which region - instead of flattening it into one vague summary.

model-agnostic
Any model, one line

Everything routes through LiteLLM. The same code runs on Anthropic, OpenAI or a local Ollama model. Change one line of config and set the key - no rewrite.

two speeds
Reports and a live dashboard

A CLI for deep weekly reports - HTML, Markdown, PDF and slide decks - and a self-refreshing dashboard for the live view, sharing the same agents.

config
Config, not code

Regions, carriers and sources live in YAML; edit the watchlist without touching the pipeline. Add a new agent by subclassing one base class and registering it.

// features & updates pipeline

Where the Risk Monitor is heading

plannedCost agent

Bring freight cost analysis into the fleet - the one slice of risk still stubbed out - so spend sits alongside disruption in the same briefing.

ideaWider watchlist

More regions and carriers, added through config alone, so the same harness scales to new trade lanes without new code.