projects · live
ir-globe
3d globe, the news feed refreshes itself, machine learning, web
built by Damla Su Bilge · ir-globe.noseydewdrop.com
what it is
What countries do to each other. Who sells weapons to whom, who buys grain from whom, who sanctions whom. All of it on a rotating 3d globe, all of it sourced, not a single made-up number. For anyone who follows the news, does analysis, or wants to see "what is going on between these two countries?" at a glance.
how it works
- 13 layers of relations drawn as arcs on the globe: arms, trade, energy, grain, alliances, sanctions, migration, debt, diplomacy, technology, bases, aid, cables. Every tie carries its source name, url, year and license.
- Every 6 hours it pulls ~4,500 real news headlines (Google News RSS plus BBC, Al Jazeera, Guardian, DW, France24, UN News, Politico EU, FP) and matches them to country pairs and topics.
- A hand-written extraction engine runs over every headline: country and leader recognition, CAMEO event coding, Goldstein conflict/cooperation weighting from -10 to +10, direction and negation. Deterministic, no API.
- Headlines telling the same story get folded together by a neural encoder (all-MiniLM-L6-v2, local ONNX). The model never generates text, it only selects and groups real headlines.
- Personal layer: create an account, follow countries and topics, see your own feed, get a weekly email briefing.
measured
- Only ties above the confidence threshold get drawn. The engine confidently codes ~30% of processed English headlines and leaves the rest uncoded. The radar can be incomplete but it never makes things up.
- ML folding false-merge rate: 0.35%, measured at threshold 0.75.
- Initial JS payload: ~1.2 MB down to ~30-60 KB after a lazy-loading refactor.
- The migration layer draws no directed arcs (a refugee flow is not an action a country chose); it stays a sourced list.
The methodology page publishes the measured error rates.
why it exists
Following the news I kept hitting the same wall: the answer to "what is going on between these two countries?" is scattered across hundreds of articles and nobody collects it in one place. I wanted something measurable, with clickable sources, that does not lie. Either it has a source or it does not exist.
stack
plain JavaScript and globe.gl (three.js/WebGL), no framework, no build step · Node scripts on GitHub Actions · @xenova/transformers running all-MiniLM-L6-v2 as local ONNX · Supabase (accounts and follows, RLS protected) · Resend for the briefing mail


