Inspiration
In March 2025, the U.S. Embassy shut down its reference-grade AirNow monitors across Pakistan. Overnight, Islamabad, Lahore, and Peshawar lost their only source of calibrated PM2.5 data — leaving district health and education authorities with no reliable air quality signal during smog season.
What it does
Saaf Hawa reconstructs ground-truth PM2.5 by calibrating community sensors against the historical embassy record. It then delivers hourly uncertainty-bounded forecasts at +6h, +12h, and +24h — with full 80% prediction intervals, not just point estimates. A live dashboard shows data freshness, quality gate status, and the latest pipeline run. An advisory rule flags when outdoor activity limits should be issued to schools and health facilities.
How we built it
- Data: OpenAQ community sensors + Open-Meteo (ECMWF/CAMS) + NASA FIRMS fires
- Model: LightGBM with Conformal Quantile Regression (CQR) for calibrated intervals
- Pipeline: Prefect orchestration — 6 tasks per run, automated every hour
- Quality: Two-gate DQ system (schema/sentinel/stuck-sensor + freshness/drift)
- Dashboard: Hugging Face Space (static HTML) + Streamlit app
- Evaluation: 23,547 held-out test rows, strict 24-hour temporal embargo
Challenges
- Peshawar had zero training data (sensor appeared after training window closed) — handled as zero-shot spatial transfer, clearly labelled
- FIRMS fire data had 42 missing dates across 3 years — treated as zero fires, disclosed explicitly
- Label source shifted between train and test (sensor hardware changes in 2025)
- Advisory rule had to balance false-alarm rate vs recall at +24h horizon
Accomplishments
Beats both persistence and seasonal baselines at all 3 horizons. 80% coverage intervals valid at 81.9–83.3% (target 75–85%). 23 automated pipeline runs completed during the submission window.
What we learned
Honest evaluation matters more than good numbers. Every weakness — subgroups that trail baselines, Lahore's lower coverage, Peshawar zero-shot transfer — is documented openly in the repo.
Log in or sign up for Devpost to join the conversation.