Haze Day: Official Data First, AI Only to Explain
How we built a haze tracker that parents, coaches and runners can act on: the 1-hour PM2.5 up front, model estimates always labelled, and an AI that never invents a reading.
The question behind the product
During haze season people don't want an index, they want a decision. Can the kids play football tonight? Is it OK to run outside? Should the laundry come in? Haze Day leads every page with the live reading, the band it falls in, and what that means for sport, school PE, commuting, laundry, pets and the home.
The 1-hour PM2.5 comes first
Singapore publishes two numbers. The 24-hour PSI is a rolling average: useful for planning tomorrow, but slow to react. The 1-hour PM2.5 tells you what to do in the next hour, and it is the number many sport and event organisers actually use. So Haze Day shows it first.
| 1-hour PM2.5 (µg/m³) | NEA band | For the next hour |
|---|---|---|
| 0–55 | Normal | Continue normal activities |
| 56–150 | Elevated | Reduce strenuous outdoor activity |
| 151–250 | High | Avoid strenuous outdoor activity |
| 251+ | Very High | Minimise all outdoor activity |
Many youth sports leagues call off matches above 110 µg/m³. That is a league policy, not an NEA rule, so Haze Day lets you set your own cut-off.
Official vs modelled, always labelled
Singapore readings come straight from NEA via data.gov.sg. For the other 78 places we cover, across Malaysia, Indonesia, Thailand, Vietnam, the Philippines and the rest of the region, there is no stable open official API yet. There we show CAMS atmospheric-model estimates via Open-Meteo, labelled "model estimate, not official", with a link to the local official site.
The map adds context: the PM2.5 field, NASA FIRMS fire hotspots, wind at about 1.5 km and rain radar, with a time slider. A "why is it hazy?" panel checks whether the upper-level wind is blowing from active fire regions in Sumatra or Kalimantan. It says "likely", never "proven".
Where AI fits, and where it doesn't
AI never produces a reading. We use it for three things only:
- Explaining the live data on each page in plain language.
- Summarising haze news across Singaporean, Malaysian and Indonesian outlets.
- Answering questions in the Telegram bot.
Each time, the model is given only the page's facts and asked to stay within them.
The Telegram bot
@hazeday_bot brings the same data into a chat. Pick a place, set your cut-off, switch on sensitive-person mode if it applies, and subscribe to alerts:
/place sg
/cutoff 110
/sensitive
/subscribe
You can add the bot to a parents' or team group, or simply ask "Can the kids play football tonight?" and get an answer grounded in the live reading. A WhatsApp version is on the way.
Open by default
Everything on the site is also available as data: a JSON API for current readings, rankings, news, the model grid and fire hotspots; a cookie-free embeddable widget; and an llms.txt index for AI tools. The licence is CC BY style: credit "Haze Day (haze.day)" with a link back, and never present model estimates as official.
curl "https://haze.day/api/now?place=sg"
Haze Day is general information, not medical advice. Follow your doctor and your school, league or organiser's final call.