CAAD — Interactive Research Paper

Can two observers spot a cold front before the forecast does?

We built a synthetic weather monitoring network across 24 stations in Kenya, injected a cold front, and measured how quickly two independent temperature sources — compared against each other — could detect the event and tell you exactly which stations were affected. Here's what happened.

The Experiment
Two ways to measure the same temperature

We generated 72 hours of synthetic temperature data across 24 weather stations. At hour 36, we injected a cold front that drops temperatures by 8 degrees C in 6 hours across a cluster of stations. The question: how quickly can you detect the event, and which stations are inside the anomaly zone?

Observer A — Ground Stations

24 weather stations with calibrated thermometers, recording hourly. High accuracy but sparse coverage — each station only sees its own location.

vs

Observer B — Satellite Estimates

Satellite-derived temperature readings covering the whole region. Broad coverage but with systematic calibration biases and cloud-cover gaps. Lags behind ground truth during rapid changes.

24 ground stations
72 hrs monitoring window
~2.0 C baseline calibration drift
t=36 hr cold front injected
8 C temperature drop
6 hr front passage duration
Explore the Data
Scrub through 72 hours. Watch the gap.

The gap between what the ground stations measure and what the satellite estimates isn't random — it's information. When the two observers disagree sharply, something real is happening. Drag the timeline to watch.

Hour 0 / 72 hours
Clear skies — normal conditions
Gap (RMSE)
degrees C between observers
Gap Trend
growing or shrinking?
Signal vs Noise
is the gap real or calibration error?
Stations Affected
inside the anomaly zone
First Deviation
where the gap moved most
Observer Gap Over Time
RMSE between ground station readings and satellite estimates (degrees C)
Signal vs Noise Decomposition
Is the gap caused by satellite calibration drift (noise) or a real weather event (signal)?
Rate of Change
How fast is the gap growing? Spikes = a weather event just arrived at the stations.
The Result
What two observers give you that one can't

A single thermometer sees a temperature drop. That's all.

Watching ground station readings alone, you notice temperatures falling around hour 37. But you can't tell whether it's a local sensor malfunction, normal overnight cooling, or the leading edge of a cold front. Every station looks the same — just numbers going down.

Two observers tell you WHERE, WHY, and HOW FAR

By comparing ground stations against satellite estimates, the convergent approach detected the cold front at hour 37, identified Kiambu-West as the first station to diverge from satellite predictions, distinguished real weather signal from satellite calibration noise (signal rose 6x during the event), and tracked exactly which stations were inside the anomaly zone as the front moved through the region.

Capability Single observer (ground only) Convergent (two observers)
Detects temperature change Yes (hour 37) Yes (hour 37)
Tells you WHICH stations are affected No — all stations just show numbers Yes — stations where the gap spikes
Distinguishes real event from sensor error No Yes — signal/noise decomposition
Tracks the front's spatial spread No Yes — affected station count over time
Identifies where the front arrived first No Yes — first deviation station
Works when satellite has cloud gaps Not applicable Yes — cloud gaps become visible as structured disagreement

The same method works beyond weather

This isn't a weather-specific tool. The same principle — measuring the gap between independent observers — applies to health systems (field data vs reported data), traffic networks (sensors vs ground truth), financial anomalies (price vs fundamentals), and any domain where you have two independent ways to look at the same thing.

Want to apply this to your data?

CAAD is being built as a service. If you have a system with multiple data sources that should agree but sometimes don't — we should talk.

Get in touch