How POLYCRISIS collects, processes, and analyses geopolitical risk data.
POLYCRISIS ingests news and intelligence data from a curated set of RSS feeds covering wire services, regional news outlets, government sources, and specialist publications. Feeds are polled every 15 minutes. Each article URL is hashed and checked against a seen_urls database table to avoid reprocessing.
New articles are passed to Claude Haiku (claude-haiku-4-5) with a structured prompt that extracts: event type, headline, detail text, geographic coordinates, and associated country. The extraction prompt enforces the 10 canonical event types (military, naval, nuclear, political, protest, humanitarian, enforcement, climate, cyber, news) and returns structured JSON. Extraction typically takes 1–3 seconds per article.
Extracted events pass through a geocoding correction pipeline: a gazetteer override layer maps place-name mentions to known coordinates, then a bounds-checking step verifies that coordinates fall within the crisis region (with a 500-mile radius buffer around known installations). Out-of-bounds events are relocated to the crisis centre rather than discarded, preserving the event record while flagging its uncertain location.
A deduplication step checks incoming event labels against events already in the database for the same crisis within a 24-hour window. To avoid false matches, dedup uses full-string comparison rather than substring matching — short labels like "Attack" or "Protest" are common across many genuine distinct events and must not be collapsed.
Each event receives a composite confidence score between 0 and 1 derived from four components:
Scores are combined as a weighted sum. The events index page surfaces only events with confidence ≥ 0.8. The map displays all events but renders lower-confidence events with reduced opacity.
POLYCRISIS computes eight indicators for each monitored crisis. Each indicator is a dimensionless value between 0 and 1 (or a signed drift value). Indicators are recomputed on different cadences depending on their input data requirements:
See each indicator's explainer page for full calculation methodology, interpretation guidance, and data sources.
The per-country and per-crisis composite risk score is a weighted average of the eight indicators, with weights calibrated against historical escalation outcomes:
Confidence Drift is used as a correction factor rather than a direct input: negative drift reduces the weight given to Event Intensity, reflecting the possibility that a drop in reported events reflects information access loss rather than genuine de-escalation.
Composite scores map to four risk tiers: Critical (≥ 0.75), High (≥ 0.50), Elevated (≥ 0.25), and Moderate (below 0.25). Tiers determine the colour coding used on risk index pages and country pages.
Each crisis has a set of named scenarios — plausible future states ranging from de-escalation to catastrophic outcomes. Scenarios are assessed against a strict confirmation protocol: a scenario can only be marked confirmed if there is past-tense reporting with a named source and a verifiable URL. Enrichment headlines, analyst predictions, or conditional statements do not constitute confirmation.
Scenario probabilities are updated by human review, not automated scoring. The AI pipeline flags events that are proximate to scenario trigger conditions, but the final confirmation decision is always manual. This conservative approach means some scenarios may lag the news cycle by hours; the tradeoff is a much lower rate of false confirmations.
Market data for the risk pages comes from two sources: Yahoo Finance (via the yfinance Python library) for dashboard charts and historical series, and Polygon.io for real-time API correlations. Ticker-to-crisis exposure mappings are defined in data/tickers.json. Exposure weights are set manually based on analyst assessment of supply chain, revenue geography, and regulatory exposure.
Market data is provided for geopolitical context only. Nothing on this site constitutes investment advice. Past correlations between geopolitical events and market movements do not predict future performance.
POLYCRISIS is a data aggregation and analysis tool, not a primary intelligence source. The quality of its outputs is bounded by the quality of its inputs — public news feeds. Significant events that occur without public reporting (covert operations, closed-door negotiations, classified military movements) will not appear in the event stream until they become public.
AI extraction introduces both false positives (events that did not occur as described) and false negatives (events that were reported but not extracted). The confidence scoring system is designed to surface the former; the latter are harder to detect. Users should treat the event stream as a high-recall, moderate-precision signal that requires expert interpretation.
Geographic attribution is probabilistic. Events in border regions or involving mobile actors (naval vessels, aircraft) carry inherently higher location uncertainty than events in fixed installations.
One email a week: the biggest scenario-probability moves, new cross-crisis connections, and what to watch next. Free, unsubscribe anytime.