Tracked countries
Select a country marker or list item to see its trend.
Internal proof of concept — sign in with an approved account.
A proof of concept for classifying what's happening in a country right now, from data that already exists — ACLED, GDELT, GDACS, CBS/RNI — built for a crisis coordinator, not a finished operational tool. About & method
Loading dataset…
Select a country marker or list item to see its trend.
This is a proof of concept, not a finished tool: it shows what public
data (ACLED, GDELT, GDACS, CBS/RNI) is available and how it could
combine into a per-country risk indication for a crisis coordinator —
it is not an automatic, validated classifier, and it
does not forecast or predict crises. See
Documentation/Relevance and function.txt for the full
writeup and Scripts/README.md for data-source details.
Conflict data comes from ACLED (Armed Conflict Location & Event Data Project) — real monthly political-violence event and fatality counts per country, not a media-mention proxy. ACLED's own API requires registering an account; this app instead uses ACLED's own pre-aggregated country files published through the Humanitarian Data Exchange (data.humdata.org), which are freely downloadable with no login. The tradeoff is resolution: monthly, not daily or event-level. The single most recent available month is always excluded from scoring as provisional — ACLED's newest month is consistently far below the surrounding trend for nearly every country tracked here, a reporting/verification lag, not real de-escalation (visible as a sudden drop at the right edge of each ACLED chart). Per ACLED's Terms of Use, their data must be clearly attributed wherever shown — see the attribution line under each country's ACLED chart.
Each country gets two 0–100 gauges, not a statistical probability of war or disaster — there is no calibrated base rate or validated model behind them. They're scored one day at a time (see the strip under each gauge) rather than as one flat weekly number, built from:
Conflict signal used to be scored primarily off fatalities. Changed to lead with event count instead, per an explicit steering decision: for spotting rising unrest early, how much political violence is happening is the primary question, with fatalities kept as a secondary signal that accelerates the score rather than driving it — a large death toll should escalate the response fast, but a country shouldn't need people to already be dying to register as unrest is spreading. Unrest severity, its own escalation bonus, and the fatality accelerant are shown as separate numbers (see each country's "Unrest & escalation" box) rather than collapsed into one score that loses which part is actually driving it.
Scoring day-by-day (rather than "is there any matching event at all") fixes a separate, earlier bug: GDACS keeps recently-modified events listed for a while after they're actually over, so a months-old cyclone or earthquake would otherwise keep inflating "today's" score forever. Those older events still show up in the country's event list, just labelled historical instead of active. Note also that GDELT tags an article with every country it mentions, so a bordering or mediating country (e.g. Egypt or Turkey in Gaza-related coverage) can pick up a real conflict-theme share without being a combatant itself — a known limitation, not something fixable without deeper text analysis.
Each country also gets a presence signal (0–100), shown separately from the conflict/disaster gauges and with no effect whatsoever on either of them or on the alert level — it answers a different question ("how many Dutch nationals are relevant here"), not "how bad is it right now." Its dominant term (up to 92 of the 100 points) is a log-scaled read of the real, publicly-published RNI (Register Niet-Ingezetenen) count for that country — not raw internal BZ/RNI data, but CBS's own already-aggregated, de-identified "Nederlanders in het buitenland" release (updated roughly twice a year, no login required). CBS's own caveat is carried through unchanged: these counts are "vrijwel altijd een onderschatting" (almost always an underestimate), since RNI registration isn't mandatory for non-residents — treat this as a floor, not a full population count.
On top of that real RNI-based term, a small (±8 point at most) nudge reflects the recent-vs-prior trend in a fictional 10-year passport-applications series — real per-post passport-application data is internal BZ/RvIG data with no public equivalent (checked before building this, not assumed to not exist). Because that nudge is built from synthetic data, the presence signal as a whole is now partially synthetic — flagged with an asterisk (*) next to the number, with the real RNI contribution shown alongside it every time, so the real/synthetic split stays visible rather than disappearing into one clean-looking number.
Per this PoC's scope: no manual override control for the coordinator to confirm or correct a suggested classification (the "automatic detection + manual override" track) — a known, deliberately deferred gap, not an oversight. No live/scheduled refresh (this is a one-time static snapshot; see the timestamp above). No real consular-call integration, and no direct internal RNI/BRP access (the presence signal above uses CBS's public, already-aggregated release of that data instead — see "Dutch presence" above).