Supply-chain disruption monitoring for mid-market manufacturers. A global risk index tells you the world is on fire. Bellwether tells you that the one plant you single-source your castings from is in the part of it that's burning.
A disruption signal is scoped to a region and sometimes a commodity. It reaches a supplier of yours only if both match. What turns that into a number is three things about your position, not the world's:
Alerts fire on the crossing, not the level. A supplier that sits at elevated for three weeks alerts once, when it gets there. That's the difference between a monitoring product people keep and one they mute.
GDELT's global news index — free, keyless, and the low-risk starting feed the plan calls for. Per region, Bellwether counts recent articles matching disruption vocabulary (ports, strikes, floods, sanctions, shortages, blockades, tariffs, closures) and normalizes to intensity, saturating at 20 articles in the window. GDELT asks for at most one request every five seconds and Bellwether honours that, which is why live fetches are key-gated rather than open. Bring your own curated feed instead and the scorer takes it unchanged.
/score is open and stateless — post a supplier
list and a set of signals, get the ranked exposure back. Nothing stored, nothing fetched.
curl -s https://bellwether.forthecommongood.ai/score \
-H 'content-type: application/json' -d '{
"suppliers": [
{ "supplier_id": "s1", "name": "Kaohsiung Fab", "country": "Taiwan",
"commodity": "semiconductors", "criticality": 0.9, "single_source": true },
{ "supplier_id": "s2", "name": "Ohio Stamping", "country": "United States",
"commodity": "steel", "criticality": 0.4 }
],
"signals": [
{ "source": "static", "category": "geopolitical", "region": "Taiwan",
"commodity": null, "intensity": 0.6, "summary": "shipping lane disruption" }
]
}'
Returns every supplier ranked by score, with the band it lands in and the signals that drove it — worst driver first.
POST /scorerank exposure, statelessGET /bandsthe thresholdsGET /suppliersthe monitored portfolioGET /alertscrossings, newest firstPOST /suppliersadd to the portfolio · keyPOST /signalslive GDELT read · keyPOST /rungather, score, alert · key