Projects
Project

Frontlines.et

A neutral, map-first tracker of Ethiopia's armed conflicts: who controls each district, every strike and battle, sourced and graded.

Oct 2026 - Presentmapsdataaidjangoastroosint
Frontlines.et

Frontlines.et is a public, neutral, map-first tracker of Ethiopia's armed conflicts since 2019: Tigray, Amhara, Afar and Oromia, and the risk of war with Eritrea. It shows who controls each woreda (district) on any given day, every reported battle, drone strike and front-line change, and where each claim came from and how far it can be trusted. It is not a news outlet. It aggregates, verifies and maps what is reported, and says so on every page.

What it does

  • The map. A full-screen map of territorial control at woreda level, with event dots, strikes as red diamonds, town labels and a time bar you can scrub or replay. The date range lives in the URL, so any view can be shared
  • Events. Every published event, newest first, filterable by date, region, actor, type and grade, and downloadable as CSV
  • Strikes. Every drone and air strike with its sources and confidence grade, strikes per day, by region, and the weapons named
  • Actors and relations. Who stands with whom: dated alliances and hostilities drawn as a relation map, since an ally one month can be a rival the next
  • Woredas. Every district in the OCHA boundary set with its current control
  • Propaganda watch. What each side tells its own audience, side by side: posts from the parties' official channels and state media, summarised neutrally and tagged by technique. They are claims, not facts
  • Conflict pages. A page per war, with key towns, who holds them and the latest report on each
  • Alerts. A Telegram bot for updates
  • Three languages. English, Amharic and Afaan Oromo

How the data works

  • Graded, not trusted. Every event and control change carries a grade. Only A and B grades (two independent sources, or one credible independent one) can move the map. A claim from one party is published as claimed and never changes control
  • History from UCDP. The Uppsala Conflict Data Program's georeferenced events are the 2019-onward backbone, matched to woredas by their coordinates rather than by guessing names
  • The present from the news. Every hour an ingest job collects new articles from a list of outlets, reads each with Firecrawl, and asks an OpenAI model to extract events. They land as pending in a review admin with a suggested grade, and nothing is public until a reviewer confirms it. Article text is never stored, only its hash and the extracted facts
  • The database keeps its own rules. Control rows for one woreda never overlap in time, alliances are dated per pair of actors, and every change to control, alliance, event and actor rows is versioned

How it is built

  • Backend: Django 5.2 and GeoDjango on PostgreSQL with PostGIS, with the review admin and Procrastinate jobs for the pipeline
  • Site: a static Astro build with a MapLibre map. It reads only the JSON the backend publishes, so readers never touch the database, and pending or retracted events never leave it