Inspiration
Delhi breathes some of the most dangerous air on Earth — "Poor" or worse on 200+ days a year. India has 900+ air monitors, yet a 2024 CAG audit found only 31% of cities turn that data into any action. Monitors tell you how bad the air is. They never answer the two questions that decide what to actually do, at the ward level: where does this neighbourhood's pollution come from, and where is it headed? Vāyu.ai exists to answer both.
What it does
Vāyu is a two-part ward-level air-intelligence engine for Delhi:
Part 1 — Source Attribution (built & validated). For each of Delhi's 290 wards, it splits daily PM2.5 across 5 sources — Transport, Industry, Residential, Road Dust, Other — by fusing six open data streams, and attaches two honest uncertainty bands to every number.
Part 2 — Hyperlocal AQI Forecasting (designed; data in hand). Using 14 years of hourly data, it forecasts each ward's AQI 24–72 hours ahead.
Together: know where your air comes from, and where it's headed — turning "the air is bad" into "in this ward, dust dominates; act here."
How we built it
We fused six independent sources onto one ward grid:
- CPCB station chemistry (PM, NO₂, SO₂, CO, NH₃…), interpolated from 38 stations to 290 wards;
- OpenStreetMap land use + 532 real industrial-stack locations;
- class-weighted traffic corridors (arterials, not raw road density);
- NASA FIRMS satellite fires;
- ERA5 wind — used to blow each source's plume downwind, the physically correct link from a source to the ward it pollutes.
The model is receptor-style: it ranks each source's fingerprint across wards and normalises them into a source mix — decoupled from overall pollution level — then calibrates to official DPCC citywide totals. It's a reproducible 14-script Python pipeline on 100% open data, so it replicates to any Indian city.
Challenges we ran into
- No ground-truth labels exist — nobody has measured a ward's "true source %," so we couldn't train a normal supervised model; we designed a label-free receptor approach and validated it against an independent inventory.
- Level vs. composition — our first model (XGBoost + SHAP) predicted total pollution and split it, which made sources dominating clean wards invisible. We rebuilt it to score composition directly.
- A backwards assumption — the data revealed
road_densityis a residential marker (dense street grids = housing), not a traffic one, forcing a redesign. - The inventories disagree — Delhi's official studies differ up to 4× on road dust. We turned that into a visible uncertainty band instead of hiding it.
Accomplishments that we're proud of
- We validated it. Against the peer-reviewed Sahu et al. 2020 inventory the model never sees — Most "attribution" projects never validate at all.
- Real geography + wind physics — 532 actual stacks blown downwind, not crude land-use fractions — and we proved it improved accuracy.
What we learned
- Ranking accuracy ≠ magnitude accuracy — Vāyu reliably ranks which ward leans which way, even where exact percentages are hard.
- Sometimes the ceiling is the data, not the model. We compared supervised (SHAP), unsupervised probabilistic (NMF/PMF), and receptor approaches — the fancier ML didn't win, because the real limit is the absence of chemical speciation. Knowing when more model won't help is itself a skill.
What's next for Vāyu.ai
- An agentic layer turning attributions into ranked enforcement and citizen advisories, policy dashboard for MCD/DPCC review.
- Partner with DPCC/MCD for a live CPCB feed; enforcement trial with real inspectors' feedback.
- Chemical speciation data — the one input that would unlock precise, PMF-grade source percentages.
- Generalize the pipeline to any Indian city; API product for state pollution control boards.
Built With
- copernicus-cds
- era5
- fastapi
- geopandas
- leaflet.js
- nasa-firms
- numpy
- openstreetmap
- overpass-api
- pandas
- parquet
- pyproj
- python
- react.js
- scikit-learn
- scipy
- shap
- shapely
- xarray
- xgboost
Log in or sign up for Devpost to join the conversation.