Getting the right number of events ie which events were significant enough to put on here with combat footage was a challenge as well. Particularly for the first day or two where a number of US bases and Iranian targets were hit. I think in particular I’ll try to add more manually for the first two days of the war. But other than those two days were there any specific events you think the AI missed?
Sometimes I think it makes the fair decision to combine certain incidents. For example today 3 ships were hit in the strait of Hormuz but I don’t expect three different events for that and I think the right thing would be one event.
Oh you mean the whole Ukraine war? Yes we removed that for now for quality reasons and currently we’re just covering the Iran war while we get the particulars right. After that we’ll add Ukraine, Myanmar, Sudan etc. We posted this here first to get input before populating the rest of the conflicts.
Honestly Mapbox worked really well here. After getting that working it was just a question of presenting data in a way that was easy to consume. Things like playing around with colors, and the playback speed for the timeline for example. A challenge I see going forward will be accurately representing ground control in the case of a ground invasion in the near future. I’ve been trying to get the Ukraine-Russia war on the project but the main issue so far has been two fold. One is getting accurate day by day ground control information and presenting it well as well as footage from years back with all the dead links out there. And of course the propaganda problem (distilling actual info from propaganda posts that have good combat info and footage) is actually even more difficult in that war.
So I've been following the Iran situation pretty closely and realized I was spending half my time just trying to figure out what actually happened where. The closest thing out there is Liveuamap, but it's turned into more of a general news aggregator — it dumps everything onto the map (protests, political statements, weather, car accidents) with intrusive ads layered on top, and the sourcing is mostly just reposted tweets with no real verification or analysis. There are a couple other websites like that with similar issues. I wanted something that's specifically focused on combat events, verified before it goes live, and has actual video of what happened.
So I built Defogwar (https://www.defogwar.com). It's an interactive Mapbox GL globe where military events — airstrikes, drone strikes, artillery, ground assaults, territorial changes — get plotted with color-coded factions. You can scrub through time with a slider to watch how things unfold day by day, and clicking on a marker pulls up details with embedded video when we have footage. No news ticker spam, no political commentary pins, just combat events with sources.
The interesting engineering problem was the data pipeline. Manually curating conflict events doesn't scale when you're one person, so I built an ingestion layer that pulls RSS feeds and Telegram channels, pipes everything through Gemini 2.0 Flash for structured extraction (coordinates, event type, factions, severity), and dumps it into a review queue. Everything goes through human review (me) before it hits the map. The hardest thing was removing propaganda from the AI curation. Obviously it'll still be somewhat objective but I had to often remove manually some phrases like "The terrorist state of Iran" or "Tel-Aviv was completely battered" because honestly the best combat footage sometimes comes from propaganda like sources. I'm working on the curation pipeline to better filter that out in the future though. Getting good coordinates from posts/news articles was also a hassle.
Stack is Next.js 14, PostgreSQL with PostGIS for spatial queries, Cloudflare R2 for video storage (zero egress fees was the selling point there), and Railway for hosting.
Right now the coverage is focused on the Iran conflict — I had other conflicts mapped but pulled them back to get the data quality right first. Those will come back once the pipeline is solid. In the future I'm also considering putting historical conflicts on there from throughout history. Would love feedback on the map UX and if anyone has suggestions for good open OSINT data sources I'm not using.
reply