# What's Going on With the Air Quality in San Francisco?

> Source: <https://blog.exe.dev/what-s-going-on-with-the-air-quality-in-san-francisco>
> Published: 2026-09-23 23:34:00+00:00

On Wednesday, the air in San Francisco smelled like smoke. I pulled up PurpleAir and the Bay Area Air Quality District and sure enough, the AQI was up in certain parts of the city. It looked like a local fire of some kind.

I wanted to see what was going on, so I spun up a new VM and gave [our coding agent Shelley](https://blog.exe.dev/customizing-shelley) the following prompt:

```
I am detecting a little bit of bad air quality here in San Francisco and I'm looking at like Purple Air and the Bay Area Air Quality District to see what's going on, and it does indeed look like we're having some higher AQI in different areas. And I'm wondering if we can make a fire watch aggregator that takes as many sources as possible, including you know press releases from fire departments or whatever, as well as purple air data or more official stuff, as well as current winds and things like that and give me a map of what's going on and where and why because I'm very interested and it feels like the type of thing that we should actually be able to do really well.
```

While Shelley was working, I asked Claude if there was a fire in San Francisco. It found a news story pointing to a controlled burn on Angel Island—but no confirmation it was happening today. It also picked up on something I’d mentioned about the wind: if the wind was blowing east across Angel Island, the smoke would blow toward Richmond, Berkeley, and Oakland—not San Francisco.

I sent it a handful of PurpleAir screenshots, and noted that there might be more smoke on the hills, like in Pac Heights and Nob Hill. Claude’s guess was “a layer of smoke sitting above the cool marine air,” with the hilltop sensors poking into it.

To test this theory, Claude suggested cross-referencing every PurpleAir sensor with its elevation and temperature. I pasted the whole conversation into Shelley, along with the implementation notes Claude gave me. Then I got it to help me wire up an integration with a PurpleAir API key I had freshly minted. That way it could access the PurpleAir API without actually getting the credential inside the VM.

This got me most of the way there. But I couldn’t see the wind. So I asked Shelley to add it as an animation. All told it took just under an hour and probably could have been done faster if I hadn’t been interleaving it with other things. Now I have a website I can point my friends to.

The results are here: [https://firewatch.exe.xyz](https://firewatch.exe.xyz/). If you want to build your own, go to [https://exe.dev.](https://exe.dev/)
