Open data is only useful if someone acts on it

I could tell the air quality was bad outside my childrens' school. It’s on a hill, cars queue at the crossing and on still mornings fumes kind of hang in the air. But ‘bad’ leaves a lot to interpretation and I wanted to know ‘how bad’ and more importantly, what could be done about it.

Brighton & Hove Council deserves credit here: they publish air quality data openly. There's a sensor outside the school gate, recording NO₂ and a host of other pollutants every fifteen minutes and that data is publicly accessible via their Air Quality Portal. I downloaded two years of data and started digging.


What the data showed

The WHO 24-hour guideline for NO₂ is 25 μg/m³. During morning drop-off, the sensor exceeded it on 73% of school mornings. The mean reading at the gate was 36.8 μg/m³ — nearly four times the WHO annual guideline of 10 μg/m³. After stripping out seasonal variation, levels have been rising year on year. December 2025 was measurably worse than December 2024.

That's told me that really this isn't an occasional spike, it’s a normal condition for children arriving at school on a typical morning.


The measurement gap

The UK legal limit for NO₂ is 40 μg/m³ as an annual mean, measured across all hours, all days, including nights, weekends, and school holidays.

But children at the school gate aren't there at 3am or in August. They're there at 8:50 on a Tuesday in March. Peak-hour, term-time data told a completely different story. The gap between what's measured for and compliant means that while it’s legally okay, children regularly breathe air that exceeds international health guidelines.


What I built, and how

Once the data existed, the natural next step was to make it actionable. NO₂ readings at around 11pm the night before turned out to be a reliable predictor of whether the next morning drop-off would be bad; a workable alert window that gives parents enough time to make plans.

It lives at elmgrove.netlify.app. It has with week on week data, trends dashboards, and a prototype alert system. It was built with Claude Code, Paper, Netlify and Twilio (since you asked!). It's now shared with the school and the councillor (who is well aware of the issue). Those conversations are early and ongoing.



Why information isn't enough

The tension here is that neither awareness, nor individual actions are enough.

Alert systems can risk individualising structural problems. If a parent gets a text saying tomorrow's drop-off will be bad and chooses to walk instead, they've very slightly reduced the pressure to fix the underlying cause.

Coping becomes a substitute for confronting. Ultimately a well-designed information tool can make people feel a problem is managed when it isn't.

So the site includes a one-click email to the ward councillor. The same data, framed as a demand rather than a personal warning

The design question is whether solutions like this aggregate individual responses into visible collective pressure, or leaves them dispersed and private. Framing matters: 'pollution is high today' is personal. 'Hundreds of children are breathing this every morning' is political. The same data, presented differently, points toward individual avoidance or collective demand.

The alert system is a starting point. but the problem is really structural. Car-dependent travel, insufficient infrastructure and a school street not designed for the traffic it handles. Individual behaviour change, even at scale, doesn't fix that. The data needs to accumulate as a basis for change, not just a private warning.

What's next

I’ll follow-up the next phase in another post: connecting LLMs to live sensor data not just as an analytical layer, but as a trigger for real-world actions.

In the meantime – If you work in technology for cities or the environment and want to talk about any of this, I'd like to hear from you.

Or check out the site to see what the air quality is like in our spot in Brighton below:

elmgrove.netlify.app

Get in touch

contact@jamescuddy.co.uk

|

Linkedin