Methodology
VAYU converts a bad air-quality reading into an evidence-backed enforcement order and then checks whether it worked. Everything below is how — the models, the formulas, the numbers we beat and the ones we don’t, and the limitations we’d want a reviewer to know before trusting a single order.
Forecast backtest
Source attribution
For a ward, VAYU walks the air back along the wind (a back-trajectory cone) and scores each source it passes through. The share of each source is its score over the total:
S_burn = Σ FRP · exp(−d/120km) · exp(−age/12h) (NASA FIRMS fires) S_industry = Σ area(industrial ∩ cone) · NO₂ anomaly (OSM landuse + S5P) S_construction = Σ (2 if non-compliant else 1) · exp(−d/10km) (permits) S_traffic = road_density · rush_hour(t) · NO₂ uplift (OSM roads + CPCB) S_regional = (cone length outside city / total) · PM proxy share_k = S_k / Σ S
Every term is measured or a documented constant — nothing is tuned to flatter the demo. The scale factors are calibrated so a Delhi winter ward lands inside the published IITM DSS / SAFAR apportionment ranges, and make backtest reports where our shares actually fall against those ranges. One documented deviation: the fire decay is 120 km, not the 20 km some references use, because Punjab stubble sits 200–300 km upwind and 20 km would make it arithmetically zero.
Dispersion & ROI
To decide what an action is worth, VAYU runs a Gaussian plume counterfactual: source running vs. source halted, stepped through the 48h wind forecast. The µg/m³ averted × people protected ÷ teams-required gives the ROI that ranks the leaderboard. Emission rates come from published factors — fire radiative power via Wooster (2005) and Andreae & Merlet (2001); industry anchored to SAFAR’s Delhi inventory (~9.3 g/s per km²).
Hard limit: a steady-state plume is only trusted to 50 km (EPA’s AERMOD ceiling). Beyond that VAYU refuses to size a source and issues an escalation advisory instead — which is exactly why Delhi’s November stubble shows up as “not yours to fix, escalate to CAQM” rather than a fabricated averted-µg/m³ number.
Verification (difference-in-differences)
After an order is executed, the ward’s PM2.5 falls — but air moves for reasons that have nothing to do with enforcement. VAYU subtracts what would have happened anyway, estimated from control wards matched on their pre-period behaviour only:
observed = (target_post − target_pre) − mean(control_post − control_pre)
A 95% interval comes from a block bootstrap (n=500) over hourly residuals. A verdict whose interval spans zero is reported as “not distinguishable from the weather” — the seeded demo record comes out that way, and we show it rather than hide it.
Data sources
| Source | Status | Rows | Detail |
|---|---|---|---|
| Loading data status… | |||
All free and public: Open-Meteo (weather, no key), NASA FIRMS (fires), OpenAQ / CPCB (stations), OpenStreetMap (roads, industry), DataMeet (ward boundaries). The app runs fully offline on bundled samples with zero keys.
Limitations (read these)
Ward population is an equal split
Municipal wards are delimited to equal population (Delhi Municipal Corporation Act 1957 s.5; UP Act 1959), so the Census city total is split equally — not apportioned by area, which would invert it. Real wards vary ±15%; per-ward Census figures exist in delimitation orders and are the upgrade path.
The plume is a screening model
Steady-state, straight-line, no chemistry or deposition. Trusted to 50 km; concentrations are an upper bound. Good for ranking local actions, not for regulatory-grade dispersion.
Industry emissions are uncertain
Published Delhi inventories disagree on industry's PM2.5 share by ~8× (SAFAR 22%, TERI 3%). We use the SAFAR figure; any industrial averted-µg/m³ could be several times off.
Ward AQI is interpolated
~52 stations for 290 Delhi wards, so most ward values are IDW-interpolated (p=2, k=5). Wards far from a monitor are watermarked low-confidence.
Construction permits are sample data
A representative synthetic permit set stands in for a live municipal feed; flagged as sample in the data-status pills.
Regulation text is abridged
The GRAP corpus is a faithful but shortened restatement for a prototype. Verify against the current CAQM order before issuing anything.
Cost to run
India’s existing decision-support (IITM DSS) is Delhi-only, winter-only, and supercomputer-bound. VAYU runs the full loop — forecast, attribution, dispersion, verification — for a new city from a single config file, on a laptop, with free public data and no API keys required. Onboarding a city is one file, demonstrated live (Delhi → Lucknow in under two seconds).