Inspiration
Aviation’s climate impact isn't just about fuel. Another culprit is contrails, those white lines planes leave in the sky. It turns out they trap an insane amount of heat, behaving exactly like high-altitude cirrus clouds. In fact, contrails warm the planet roughly 3× more than aviation’s actual CO2 emissions (Lee et al., 2021).
But right now, that data is abstracted away from the people who could benefit from it. Google runs routing trials, but only for airlines. Researchers have great Python libraries, and NASA has raw satellite imagery, but you have to be an expert to use them. Zero consumer tools will actually tell you the extra warming your flight causes beyond the basic CO2 on your boarding pass.
What it does
contrAI is a public, no-signup web map. You pick a starting airport and a destination. It draws the great-circle route, overlays the regions where contrails are forecast to form across North America for the next several hours, and tells you:
the total route distance the kilometers crossing contrail-prone airspace a plain-English warming estimate, measured in "cars driven for a year" so you can read it without a PhD
The forecast refreshes every six hours, aligned with NOAA's GFS cycle.
How we built it
The pipeline is event-driven and fully serverless on AWS. EventBridge ─► Lambda (ingest) ─► S3 (input) │ ▼ ObjectCreated Lambda (predict, container) │ ▼ S3 (contrails) ─► CloudFront ─► Frontend First we take data from NOAAs public bucket, which is open data on AWS. We scheduled a lambda function with EventBridge to collect new data from that bucket every 6 hours. When we add that data to our first bucket, it sets off a trigger for another lambda function that then runs a function which predicts the contrails in that data and sends it as a geojson file to our other S3 bucket. Then, when that bucket is updated, it is sent via CloudFront to our front end which is hosted on vercel.
Challenges we ran into
Learning AWS services as a beginner was a challenge! I had never hooked up S3 buckets, lambda functions, EventScheduler services, etc. It was a lot of learning on the go!
What we learned
Built an event-driven AWS pipeline that, on deployment, would cost under a dollar a day with medium traffic Learned enough atmospheric science to be dangerous: Schmidt-Appleman, ice supersaturation, radiative forcing, and why persistent contrails matter more than the short-lived ones you see. This project rides on public infrastructure we didn't build. NOAA puts forecast data on S3 for free. The pycontrails team open-sourced a working scientific library. The IPCC publishes the radiative-forcing science. The point of using gifts like that is to pass them along.
What's next for Clouds for Good - Contraiλ
Full domain registration and deployment with AWS CloudFront and S3 Route Integrate global airport data for coverage out of the US More projections than just Mercator - Miller, globe, etc
Built With
- cfgrib
- cloudfront
- ecr
- eventbridge
- iam
- javascript
- lambda
- leaflet.geodesic
- leaflet.js
- numpy
- pycontrails
- python
- rasterio
- react
- react-leaflet
- s3
- shapely
- tailwind-css
- typescript
- xarray

Log in or sign up for Devpost to join the conversation.