Colophon · how it works
An honest machine for one question
पाऊस answers a single question — will it rain at your spot in the next couple of hours — and tries to answer it well, cheaply, and without pretending to be more than it is. Here is the whole machine: the architecture, the data, the model, and the line between what it can claim and what it can't.
01 The architecture
Free, even at zero users
There is no server. The page you're reading is plain HTML and CSS; one small script runs in your browser, calls the weather API directly, and applies a handful of numbers. Nothing runs on a backend per visit — no database answering queries, no API key, no credit card.
Because the work happens in the browser and the data feed is free, the running cost is the same at zero users as at a million: nothing. The site is served as static files from a CDN; the forecast comes keyless from Open-Meteo. That's the entire bill.
- server
- none · static CDN
- API key
- none required
- compute
- your browser
- cost
- $0 at any scale
- forecast fetch
- keyless Open-Meteo
02 The data
Two streams, kept deliberately apart
The input is forecast. From Open-Meteo we read two models:best_match — its tuned multi-model blend, our primary feed — and ecmwf_ifs025, ECMWF's flagship operational physics model, Europe's gold standard, kept as the benchmark we measure ourselves against. Alongside them rides the single strongest 0–2 hour clue: how much rain actually fell in the last three hours.
The answer key is not forecast. It's METAR — the real sky reports filed at Mumbai airport (VABB, Chhatrapati Shivaji) by trained observers and instruments, free and keyless. We read the present-weather code — RA and DZ mean rain; mist, haze and fog don't — into a plain yes-or-no: did it rain this hour?
This separation is the whole point. We never grade a forecast against another forecast — that would make "we're accurate" a tautology. The label is an independent ground observation, so the correction we learn from it is honest rather than circular.
- forecast
- Open-Meteo best_match
- benchmark
- ECMWF-IFS · ecmwf_ifs025
- top feature
- rain, last 3 h
- ground truth
- METAR · VABB airport
- rain tokens
- RA · DZ
- forecast vs label
- independent
03 The model
A few numbers, applied in your browser
The model is a calibrated logistic classifier. Five inputs — the two forecasts, the hour of day (as sine and cosine), and the recent rain — go in; one corrected probability of rain comes out. That's all of it.
It's trained offline and exported to model.json: a few kilobytes of weights and an intercept. The browser applies them with one line of arithmetic — sigmoid(w·x + b). No machine-learning engine runs on the live path, no GPU, no inference server. The "AI" is already reduced to multiplication and addition before it ever reaches you.
And it sharpens itself, for free. An hourly job on GitHub Actions logs each forecast next to what METAR later observed — a growing diary (log.csv, versioned in Git). A daily job retrains on that diary. A fresh model only replaces the live one if it beats both the current champion and the raw forecast on a time-ordered holdout — a walk-forward test with no peeking at the future. So the served model can only improve or hold; it can't quietly regress.
- model
- logistic · 5 features
- served as
- sigmoid(w·x + b)
- file
- model.json · few KB
- logging
- hourly · Actions cron
- retrain
- daily · eval-gated
- promotion
- beats champion + raw
04 The claims
What it does — and doesn't — claim
Honesty here means stating the bar, not boasting a number. The eval gate refuses to ship a model that doesn't clear the obvious baselines on a fair, time-ordered holdout — and is equally clear about the league it isn't playing in.
What it's built to beat
- Persistence — "same as the last hour."
- Climatology — the seasonal base rate.
- The raw forecast, including raw ECMWF-IFS, on its own rain call.
- On the measures that matter for a yes/no call: calibration (Brier score) and false-alarm rate — the forecast's wrong rain warnings.
What it doesn't claim
- To out-predict frontier AI weather models (GraphCast, AIFS and the like) at their own game.
- To use live radar — there's none on the free path. This is a calibrated correction of a public forecast for one city.
- Any number you can't check: the live model's real scorecard is computed on logged outcomes, not asserted here.
· The model serving you right now
Everything above is carried by one small file, model.json. Its version and last-retrain date are stamped inside it; the full scorecard — Brier score against the raw forecast and against climatology, on real logged outcomes — lives on the Scoreboard.
- version
- —
- last retrained
- —