Interactive dashboard tracking the 2026 Bundibugyo Ebola outbreak in DRC & Uganda.
# Ebola Outbreak Dashboard — Data Pipeline
Live dashboard tracking the 2026 Bundibugyo Ebola outbreak (DRC/Uganda), with daily automated scraping, Google Trends public intent surveillance, and automated statistical trajectory analysis.
**Live site:**
mm33na.github.io
---
## How it works
A GitHub Actions workflow (`update.yml`) runs daily at 08:00 UTC:
1. `scrape.py` — fetches the ECDC outbreak page, uses Gemini AI to extract current case/death counts, writes to `data.json`
2. `trends.py` — fetches Google Trends search-interest data, rising queries, and related topics; merges into `data.json`
3. `analysis.py` — recomputes CFR trend, exponential growth rate/doubling time, and search-interest correlation from the updated timeline
4. Commits and pushes the updated `data.json` back to the repo, which triggers GitHub Pages deployment
`index.html` reads `data.json` entirely client-side — no backend server.
---
## Setup (one-time)
### Gemini API key (free, no credit card)
1. Go to
aistudio.google.com
2. Sign in with your Google account
3. Click **Get API key** → **Create API key** → copy the key
4. In your GitHub repo: **Settings** → **Secrets and variables** → **Actions** → **New repository secret**
- Name: `GEMINI_API_KEY`
- Value: your key
The free tier gives you 1,500 requests/day and 15 requests/minute. You use 1 per day.
### Local development
```bash
pip install requests cloudscraper pytrends google-genai
export GEMINI_API_KEY=your_key_here
python scrape.py # fetch ECDC page + Gemini extraction
python trends.py # Google Trends (slow, ~25s cooldowns built in)
python analysis.py # statistical analysis — stdlib only, instant
```
---
## Why Gemini AI for extraction
ECDC changed their sentence wording 5+ times between May and July 2026. Each change broke the regex parser and required a manual fix and redeploy. Examples:
- `"DRC Ministry of Health reported a total of 1 155 confirmed cases, including 304 confirmed …