Case study · Humanitarian AI · 2026
Grounded AI reporting for humanitarian crises
When a crisis hits, information managers have hours, not days, to turn scattered news and data into a report decision-makers can trust. I built a system that drafts those reports from a traceable graph of facts, instead of a chatbot that improvises.
- Context
- UN OCHA, Geneva
- Role
- Information Management, design & build
- Stack
- Python · NLP · graph & vector DBs · Docker · Azure
The problem
Situation reports follow standard formats, but the facts behind them arrive from many sources at once: news, APIs and field updates. A general-purpose chatbot can write fluent text, but it cannot show where each statement comes from, and in humanitarian reporting an untraceable claim is a liability.
What I built
An automated report-generation pipeline. The user picks a standard template and provides inputs; the system does the rest:
- Ingestion. Pulls news and API data relevant to the crisis and the report type.
- Graph of facts. NLP and embeddings extract events, people and organisations and store the relationships between them in graph and vector databases, so every sentence in the output can be traced back.
- Generation. Retrieval-augmented generation fills the chosen template from the graph rather than from the model's memory.
- Delivery. A user interface containerised with Docker for deployment and scaling on Azure.
In practice
The system supported reporting during the 2026 Venezuela earthquake response, where I added new sources to the retrieval layer and built new report formats under tight deadlines. I also supported needs analysis and mapped populated areas to surface overlooked communities. I then trained country offices on using RAG and LLMs for reporting and on setting up the system themselves.
What I took from it: in high-stakes settings, traceability beats fluency. Designing around a graph of verifiable facts made the output something analysts could check, correct and sign off.
This page describes my own contribution at a high level. It does not represent the official views of the United Nations, and no internal data, code or documents are shared.