Peacemetrics
A geopolitical analysis platform that aggregates UN Security Council voting records, economic indicators, and conflict datasets into a configurable world heatmap model for stability and risk assessment.
Problem
Existing geopolitical dashboards either reduce complex situations to opaque risk scores, or present raw data without interpretive structure. There is no accessible tool that allows a researcher to configure weighted criteria — trade dependency, democratic backsliding, conflict adjacency — and observe the resulting global pattern.
What it does
Peacemetrics ingests structured data from multiple international sources, normalises indicators across different scales and reporting cadences, and renders a configurable world heatmap. Users can adjust the relative weighting of political, economic, and conflict variables to explore how different analytical frameworks produce different risk landscapes.
Architecture
Peacemetrics is built around a data pipeline that ingests from multiple sources — UN Security Council voting records, World Bank development indicators, SIPRI conflict and arms data, Freedom House democracy indices — normalises these onto comparable scales, and stores them in a PostgreSQL database with a clear schema that separates raw source data from derived indicators. The frontend is a Next.js application using D3.js for the world map visualisation. Indicator weights are stored in configuration objects that the user can modify; the weighted composite score for each country is computed on the server and passed to the client as a GeoJSON feature collection.
Technical implementation
- —Python ingestion pipeline with source-specific parsers and a shared normalisation layer
- —PostgreSQL schema separating raw source data, derived indicators, and composite scores
- —Configurable weighting system with validated configuration objects (Zod)
- —Server-side score computation with country-level GeoJSON output
- —D3.js choropleth map with configurable colour scale and tooltip system
- —Historical playback mode: scroll through indicator values over time
- —REST API for querying individual country indicator history
Challenges & constraints
The normalisation problem is harder than it appears. Different sources report data at different frequencies (annual, quarterly, event-based), with different coverage (not all countries appear in all datasets), and with different definitional choices. A governance index and a conflict event count are not directly comparable. The normalisation layer must make explicit choices about how to handle missing data, how to rescale different value ranges, and how to aggregate events into continuous scores. These are not technical problems — they are epistemological ones. Every normalisation decision encodes an assumption about what the indicator is measuring. Peacemetrics is designed to make those assumptions visible and modifiable.
Systems thinking note
The most interesting aspect of Peacemetrics is not the technology — it is the question it is trying to answer. Conventional geopolitical risk tools present opaque scores. Peacemetrics is built on the premise that the weighting system is the analysis: by making the weights configurable, the tool allows you to explore how different theoretical frameworks — realist, liberal, constructivist — produce different risk landscapes from the same underlying data. That is itself a form of analysis.
Stack
Tags
Commit history
Peacemetrics — 5 commits
Full commit log for this repository, most recent first.
No commits to display.
Repository
mrailouis/peacemetrics
- Commits shown
- 5
- Most recent
- 22 Apr 2026
- Oldest shown
- 10 Apr 2026