Aller au contenu
← Projets

Monde (globe géopolitique en direct)

Un globe 3D des conflits et événements politiques alimenté par 20 sources ouvertes en direct, avec un moteur de rendu du terrain réécrit de zéro en Rust et un pipeline mesuré qui transforme des articles de presse en fiches d'événements vérifiables.

Monde est le projet dans lequel j'ai mis le plus de travail depuis juin 2026. C'est un globe 3D en direct des conflits et des événements politiques, avec un fil de renseignement, une perspective de tension par pays et, plus récemment, une fiche politique par pays (la France sert de pilote). Le code est en Rust et en TypeScript ; un dépôt de documentation distinct porte la recherche, les plans et les décisions (86 commits). J'ai travaillé avec des agents Claude du début à la fin, pour des recherches et une partie du code, et chaque chiffre ci-dessous renvoie à un fichier que je peux reproduire.

Le globe de conflits de Monde : fil de renseignement à gauche, marqueurs d'événements sur le globe, marchés de prédiction à droite

Le mode Conflict : le fil de renseignement à gauche, le globe avec ses marqueurs d'événements au centre, et les marchés de prédiction à droite.

Le problème

Il existe des tableaux de bord de conflits, mais les bonnes données d'événements sont derrière des licences payantes. Je voulais la même chose construite sur des sources ouvertes, où je sais sur quoi repose chaque marqueur affiché. L'exemple le plus net est ACLED : payant, et ses conditions interdisent de tracer ses données sur un globe, ce que son équipe de licences m'a confirmé par écrit. Je l'ai donc abandonné comme source et j'ai choisi d'en reproduire la méthode. Son codebook est public : j'adopte l'ontologie et je l'applique à des sources libres.

Trois couches

Sources. 20 sources actives (GDELT, UCDP, ReliefWeb, USGS, NASA FIRMS, OpenSky, navires AIS, Polymarket et d'autres) derrière des disjoncteurs qui déclarent chaque source en direct, en cache ou indisponible. Les événements sont notés selon la corroboration, la fraîcheur et la gravité.

Fiche d'un marqueur de séisme signalé par l'USGS, avec sa catégorie, sa gravité, sa source, l'heure du signalement et son niveau de fiabilité

Chaque marqueur ouvre une fiche avec sa catégorie, sa gravité, sa source et l'heure du signalement. Ici, un séisme de l'USGS, avec le niveau de fiabilité de sa source.

Rendu. Le client est un moteur de rendu natif en Rust et wgpu. Le sol n'est pas une photographie : il est synthétisé à partir de la couverture des sols de l'ESA (11 classes) croisée avec les zones climatiques, l'altitude, la pente et la latitude, avec des frontières de classes déformées pour qu'un bord ressemble à un coup de pinceau. Les frontières utilisent un cube d'identifiants et une table de couleurs : recolorer un pays écrit un texel au lieu de renvoyer un maillage de 45,6 Mo, et un champ de distance dessine le halo intérieur. Le design des signaux compte 77 types sur une seule grammaire (la forme dit quoi, la couleur dit à qui ou à quel point c'est grave, la taille dit combien) ; 73 glyphes sont dessinés.

Passe de codage. C'est la partie que j'ai le plus travaillé à mesurer, détaillée ci-dessous.

De l'article à la fiche d'événement

GDELT détecte qu'un article parle d'un événement, mais il ne le code pas. Mesurée par des humains, sa précision est de 53,7 % sur l'acteur, 51,2 % sur le lieu et 48,7 % sur la catégorie, et il n'a aucun champ de victimes. Je conçois donc une passe LLM sur l'article source. Les décisions qui comptent :

Sur un jeu de référence de 84 fiches issues de 26 articles, deux passes en aveugle ont donné un kappa de Cohen de base de 0,688 et 0,652 sur le type d'acteur, 0,519 sur la précision du lieu et 0,451 sur le ciblage de civils, calculé sur 42 % seulement des fiches que les deux passes ont pu apparier. Le reste, c'étaient des désaccords sur la décision même d'émettre une fiche. Quand j'ai lancé quatre codeurs indépendants sur le même corpus, ils ont produit entre 0,15 et 1,90 fiche par article, un facteur 12,7. Cette partie est la plus dure : obtenir une sortie reproductible. Cette partie est la plus dure. avoir une sortie reproduisible.

Limites

La passe de codage n'est pas en production : les événements GDELT arrivent aujourd'hui sur le globe avec le code de catégorie propre à GDELT. Le jeu silver contient 140 fiches et le petit modèle n'est pas entraîné. Le bureau natif a été parcouru avec une liste de 52 points : 21 passent, environ 18 défauts trouvés, 9 corrigés, et tous les défauts visuels qui comptaient ont été trouvés par moi en regardant une image, aucun par la suite de tests, restée verte malgré un bug de sélection.

La suite

Davantage de passes d'annotation pour mesurer l'accord réel, puis un premier petit modèle entraîné sur les phrases (un encodeur transformer avec une tête linéaire, exporté en ONNX). Côté Politique, en plus du globe des conflits décrit plus haut, Monde a un mode Politics, où un clic sur un pays ouvre une fiche institutionnelle (dirigeants, régime, pouvoirs, élections, appartenances) et où chaque information porte sa source. La France est le pilote et sa fiche est désormais branchée sur des données réelles ; les autres pays n'affichent qu'un avis de base et suivront. J'ai aussi étudié une autre piste, suivre l'argent public (corruption, aides d'État, marchés publics). Je réfléchis aussi à un mode Economics, qui ferait apparaître les données d'Atlas sur Monde. Je reflechi aussi a un monde Economics, pour faire apparaitre les donnees de Atlas sur Monde.

La fiche de la France en mode Politics, avec l'Assemblée nationale ouverte et la carte d'un député affichée au survol

Le mode Politics : la fiche de la France avec l'Assemblée nationale ouverte. Le survol d'un siège affiche la carte du député, avec ses sources (texte et photo de Wikimedia, CC BY-SA).