**Write-up:** I Found a 28% Discrepancy in Child Mortality Data. Most of It Was My Own Mistake.
# African Health Indicators Pipeline
An automated data pipeline that collects, cleans and publishes public health
indicators for six African countries from two independent international sources.
**Status:** Weeks 1-4 and 6 complete. Pipeline runs weekly; write-up published. Dashboard outstanding.
---
## Why this exists
Health indicators for African countries are published by several international
bodies, in different formats, on different schedules, using different
methodologies. Comparing them means manual downloads and one-off spreadsheets
that go stale immediately.
This pipeline automates the collection, standardises the output, and runs itself
on a schedule so the numbers are never out of date.
It also makes visible something that manual comparison hides: **WHO and DHS
sometimes report different values for the same indicator, country and year.**
Quantifying and explaining that divergence is a core aim of the project.
## Coverage
**Countries:** Nigeria, Ghana, Kenya, Senegal, Egypt, South Africa
**Sources:**
| Source | What it provides | Access |
|---|---|---|
| WHO Global Health Observatory | Modelled annual estimates, 2000–present | Open OData API |
| The DHS Program | Survey-based indicators, per survey round | Open REST API |
**Indicators:** life expectancy, maternal mortality, under-five mortality,
immunisation coverage, health expenditure per capita, antenatal care, facility
delivery, skilled birth attendance, child stunting, contraceptive prevalence.
## Architecture
```
WHO GHO API ─┐
├─→ ingest.py ─→ data/raw/ ─→ DuckDB ─→ dbt ─→ Streamlit
DHS API ─────┘ (extract) (dated (load) (model) (dashboard)
JSON)
▲
GitHub Actions
(weekly schedule)
```
**Design decisions:**
- **Raw data is never modified.** Extraction writes source JSON unchanged, into
date-partitioned folders. Transformation logic can be corrected and re …