Live product · Singapore nowcasting
Rain SG
Rain here is intensely local: it can pour in Jurong while East Coast stays dry, an hour apart on the same afternoon. This answers what an island-wide forecast can't — will it rain at thisaddress in the next two hours, and if it's already raining, when does it stop.
What's different
Vs. an area forecast
- ✓It answers “when will it stop.” Other local forecasts tell you whether rain is coming — during a real storm at one-north on 11 September this was 52% better than assuming the rain simply continues, which is the question you actually have once you’re already sheltering.
- ✓A point, not an area. NEA publishes 47 areas; this blends the four nearest gauges that are actually reporting to your address, and shows how far the nearest one is so you can judge the answer yourself.
- ✓It shows its working. When rain is coming it names where that rain is right now — “Raining in Jurong West, 9 km north-west” — which you can verify by ringing someone in Jurong. A probability can’t be checked; a place can.
The idea
Will it rain on me, walking to lunch
Singapore's rain is the most local weather I know. The existing answers are an island-wide outlook or a two-hour area label, and neither helps with the actual decision: I'm at one-north, I want to walk to lunch, is it going to rain on me in the next half hour.
Every input is already public — data.gov.sg publishes rain gauge readings every five minutes, wind alongside them, and NEA's own two-hour area forecast. Nobody had turned them into an answer for a specific spot.
v1
The smallest useful loop
Poll the gauges, store them in 15-minute windows, and for any point blend the four nearest gauges that are actually reporting. A trained model turns the recent past — raining here, nearby, upwind, how hard, which way the wind is going — into eight probabilities, one per 15 minutes. No accounts, no install: one page that answers the question.
Along the way
What it grew into
It learned to say where the rain already is
The model always used “is it raining upwind” internally; nothing ever showed it. Now, when you’re dry and rain is coming, the card names the nearest place upwind that’s raining and how far off it is. When you’re in the rain, it names the nearest place upwind where it has already stopped — on 11 September that read 14 km, then 11, then Queenstown at 4 km, and fifteen minutes later the rain stopped. It adds no accuracy whatsoever. It makes the forecast checkable, which is worth more.
The headline became “chance within the hour”
It used to lead with the tallest of the eight bars — “highest chance is about 31%”. Two people in a row asked what that meant, which is the sign no rewording would fix it: it answered a question nobody asks. People want to know whether they’ll get rained on, across a span. That turned out to be a different quantity and not a free one — chaining the eight windows naively assumes rain in one quarter-hour says nothing about the next, the reverse of true, and overstates by nearly double at two hours.
It keeps a record of what it told you
Every fifteen minutes it writes down the forecast it would have served at all 88 gauges, so “how did it do in that storm” is answerable from what was actually shown rather than from a re-run. Both of the trade-offs below were caught that way.
Trade-offs
The judgment calls I'm proud of
All three are about refusing something that would have looked better than it was.
The radar is off limits, and that’s a legal line, not a technical one
NEA publishes georeferenced rain-area images every five minutes. They’re technically ideal and would transform the hardest case. The terms of use forbid reproducing or modifying them without written permission, so the model is gauges and wind and nothing else. The cost is stated in the interface rather than hidden: tipping buckets can’t see a cloud, so this doesn’t anticipate rain forming — only rain that already exists somewhere and is moving.
An improvement that passed validation, and was thrown away anyway
A signal looked excellent: among the gauges upwind that were raining half an hour ago, how many have stopped separated an 11% chance of the rain ending from a 74% one. A correction built on it scored 1.8% better on held-out days of the same sixty-day period — the standard bar, and enough to ship. Checked against a different period it scored worse than doing nothing, having fitted a bias peculiar to that year. Retraining with it as a proper feature then changed the score by nothing at all: the existing “is it raining upwind” feature had already absorbed it. Three measurements, three answers, and the one that counted was on data nothing had been fitted to.
It says “uncalibrated” because it is
The footer has carried that label since launch, and the reliability diagram says keep it. The fifteen-minute bars are close — 85.3% predicted against 84.7% observed in the top band. The headline is not: it reads 81% where rain follows 69% of the time. That gap is fixable, and the obvious fix is the same mistake as above, so it waits for data that doesn’t exist yet rather than being patched with data that would flatter it.
Where it is now
Live, and it writes down what it said
It polls every two minutes, repairs its own record overnight from the archive, and writes down every forecast it serves. On 64 days of held-out 2026 data it is 40% better than NEA's own forecast at fifteen minutes and still ahead at two hours; on real rain it has called onset fifteen minutes out and named the district the rain was coming from three quarters of an hour before it arrived. The footer tells you how far the nearest gauge is and that the numbers aren't yet calibrated — because the useful version of a forecast is one you can decide how much to trust.
Check your own address
Two hours ahead in 15-minute steps, with the place the rain is coming from named so you can check it.
Launch the app ↗