🥇 1st Place CDMX · NASA Space Apps 2025🌍 Global NomineeOctober 2025
AirWayAir-quality–aware navigation.
An app that optimizes routes by pollutant exposure instead of time. NASA TEMPO satellite data + OpenAQ ground stations + AQI-weighted Dijkstra. Continuous Apple Watch monitoring and AR visualization of the 2 000 PM2.5 particles you breathe every second.
iPhone to decide, Watch to monitor, map to understand the air.
Same data layer across all three surfaces. The Django backend aggregates NASA TEMPO + OpenAQ + WAQI + OpenMeteo every 15 minutes; the iPhone runs AQI-weighted Dijkstra; the Watch does passive monitoring with haptics; on-device CoreML predicts PM2.5 at 1h, 3h and 6h.
iPhone · Biometric PPI
Heart Rate, HRV, SpO₂ — read from the Watch
Personal Pollution Index combines ambient air with live Apple Watch biometrics. Cigarette equivalence, dose during activity, baseline against personal average. Component scores for SpO2/HRV/Heart Rate/Resp Rate.
HR · HRV · SpO₂ · Resp
Cigarette equivalence
Dose during activity
Personal baseline
iPhone · Body Atlas
What pollution touches inside the body
Visualization of the affected systems — respiratory, nervous, muscular, skeletal — with real-time load indicators driven by ambient AQI. Educational: air isn't just lungs.
4 body systems
Load from live AQI
Educational · CONAVIM
Animated avatar
Apple Watch · Companion
Air on your wrist
Personal Pollution Index visible as a complication. Haptic alert when you enter a polluted zone, accumulated cigarette equivalence and a compressed route map (<5KB) synced via WatchConnectivity.
✓AQI complication
✓Haptic in critical zones
✓Cigarette equivalence
✓<5KB per route
iPhone · ContingencyCast
Live contingency probability
Animated gauge with environmental contingency probability, explainable model drivers and a 6h horizon card. PM25Predictor models for 1h/3h/6h run on-device in CoreML.
✓Probability gauge
✓Explainable drivers
✓6h horizon card
✓CoreML on-device
Apple Watch · Exposure
Accumulated dose on your wrist
Watch screen with PM2.5 dose inhaled in the last hour, daily cigarette equivalence accumulated, and trend vs personal baseline. Tap to see the per-minute breakdown.
✓Live 1h dose
✓Cigarette equivalence
✓Trend vs baseline
✓Tap → breakdown
iPhone · GasolinaMeter
Your vehicle, its emissions
Vehicle hub with rotatable 3D model, full spec sheet, consumption (km/L), recommended fuel and plate. The basis for per-trip emissions and multimodal comparison.
✓Rotatable 3D model
✓Magna 87 · 11.5 km/L
✓Full spec sheet
✓Multiple vehicles
iPhone · AQI Map
Cleanest route vs fastest route
Map view with the suggested route to the destination — UNAM Distance High School in this demo — comparing the cleanest option (green) against the fastest. AQI sampled every 150 m.
✓Green AQI route
✓Side-by-side comparison
✓Sampled every 150 m
✓Live reroute
iPhone · Extended Exposure
58 seconds of full-body analysis
Full walkthrough of the 4 Body Atlas systems — respiratory, nervous, muscular, skeletal — with progressive load per system driven by ambient AQI. The educational piece for raising awareness about the invisible.
✓4 systems in sequence
✓Progressive load by AQI
✓Educational · 58s
✓Interactive avatar
Live demo
Personalization by health profile
Pregnancy, asthma, athlete, elder, child. Each profile adjusts thresholds, recommendations and haptic sensitivity. The app learns when to stay quiet and when to shout.
✓Thresholds tuned per condition
✓Contextual recommendation
✓Configurable haptic sensitivity
iPhone · AR Air Quality
Real particles over the camera
ARKit + RealityKit overlay the PM2.5 particles you breathe onto the live camera scene. Current AQI 127 (Unhealthy), 1,240 invisible particles at 63 µg/m³. The educational piece we showed the jury.
✓Live camera
✓PM2.5 µg/m³ overlay
✓Adjustable density
✓ARKit + RealityKit
iPhone · Monthly history
Average 64 · Best 52 · Worst 76
AQI calendar with DAY/MONTH view. Aggregated month stats (average AQI, best and worst day) and month picker (July, August, September, October). Compares against the previous month — August was 3% better than July.
✓DAY · MONTH view
✓Average · best · worst AQI
✓Previous month comparison
✓Per-day calendar
Walkthroughs
Full product walkthroughs
Three demos recorded during the hackathon — general overview, AQI routing engine and exposure analysis. Click play to watch each one.
Overview
General tour · 13 s
Quick walkthrough of the app: home, map, forecast, health and routes. The piece we delivered to the jury.
AQI Routing
Three routes, one informed decision
AQI-weighted Dijkstra engine: clean, fast and safe. 9-point grid, side-by-side comparison, PM2.5 savings metrics.
Exposure analysis
24 hours of air, in a ring
Circular chart with daily distribution — home, work, outdoors, transit. Identifies hotspots and proposes time redistribution.
Capabilities · Full system
Make the invisible visible and the abstract actionable.
AirWay doesn't just show pollution: it acts on it. Each block tackles one stretch of the flow — from the TEMPO satellite to the haptic on the wrist of an asthmatic runner.
Educational core
AR PM2.5 · 2 000 partículas en vivo
ARKit + RealityKit render the PM2.5 particles you're breathing in real time. Mesh caching pre-caches 4 sphere sizes via NSLock; progressive warmup (300 → 800 → 2000) delivers the first particles in under a second. Stable 60 FPS from iPhone 12 onwards.
ARKitRealityKitMesh cachingNSLockWarmup 300→2000
2 000AR particles
60 FPSstable iPhone 12+
~180 MBpeak memory
~85%6h accuracy
0 PIIcloud egress
🛰️
Satellite + ground fusion
NASA TEMPO + OpenAQ
fusedAQI = (satellite × 0.3) + (groundAvg × 0.7). NO₂, O₃ and HCHO from GES DISC + PM2.5/PM10 from ground stations, recalibrated with OpenMeteo and RAMA CDMX every 15 min.
15 min refresh🧭
Smart routing
AQI-weighted Dijkstra
edgeWeight = distance × (1 + AQI_penalty) + incidents. Sampled every 150 m with a 9-point grid centered on origin, destination and midpoint. Three routes: clean, fast, safe. Customizable 40/30/30 score.
0.8 s per calc⌚
Apple Watch · PPI
Personal Pollution Index
Wrist companion with haptic alert when you enter a polluted zone. Route compressed to key waypoints (<5KB) syncs via WatchConnectivity.
<5KB📊
ML prediction
ContingencyCast · 1h, 3h, 6h
Three PM25Predictor models exported to CoreML from XGBoost (pandas + LightGBM + MAPIE). On-device inference, 30 min heads-up before crossing the threshold.
~85% acc 6h🫁
Body Atlas
What air touches inside the body
4 affected systems — respiratory, nervous, muscular, skeletal — with progressive load per system driven by ambient AQI. The educational piece the jury highlighted.
4 systems🩺
Vulnerable profiles
Pregnant · asthma · athlete · child
Each profile tunes thresholds, recommendations and haptic sensitivity. The app learns when to stay quiet and when to shout — because there's no one-size-fits-all in air.
4 profiles
Services
Backend Django + DRF
Hexagonal architecture with adapters for NASA TEMPO, OpenAQ, WAQI, OpenMeteo, OSRM and Gemini. Celery + Redis for heavy tasks. Postgres on Render, local SQLite fallback. Docker with GDAL/PROJ/GEOS + libgomp1 for XGBoost.
Bets with a zero-time budget: SwiftUI over UIKit, Django over FastAPI for mature adapters, XGBoost over neural nets to iterate fast. Each call paid for itself.
iOS
Swift
Base language
SwiftUI
Declarative UI + glass
RealityKit
AR PM2.5 · 60 FPS
watchOS
Swift
PPI · haptics
Figma
Complication mockups
Backend
Python
Django 5.1 + DRF
GitHub
IOSChallengers repo
Vercel
Web landing
ML/Data
Python
XGBoost + MAPIE
Notion
Technical documentation
Closing
Two days, three people, one respiratory mission.
AirWay was born at the NASA Space Apps Challenge 2025, challenge Leveraging TEMPO for Predictive Air Quality Forecasting. What we shipped in 48 hours is the foundation of a product that keeps iterating with Render backend and versioned CoreML models.
“The hardest part was convincing people that air quality isn't a stat — it's a decision. Every time you open a routing app, you decide how much you'll breathe. AirWay just makes it explicit.”