← Back Case study · Flagship Handed over · still running

3DREAMS@SG

A real-time atmospheric-intelligence platform that turned three sites of raw Doppler-LiDAR, plus three more feeds, into calibrated, inspectable decisions, and reaches out the moment the sky over Singapore starts to move. I designed it, built it end to end, operated it from 2025 to 2026, and handed it over in full: the CCEH team runs it today.

Designer · Sole engineer · Operator Centre for Climate Change and Environmental Health, NTU Feb 2025 to Aug 2026 Python · Supabase · Next.js · Vercel

00 / 04Context

The problem.

Elevated aerosol layers (haze, transported smoke, dust) sit aloft for hours before they mix down to street level. By the time a ground monitor reads the spike, the event is already happening. The signals that see it coming live in Doppler-LiDAR backscatter and wind profiles, but those feeds are noisy, ragged, and arrive on different clocks across sites, and clouds routinely masquerade as aerosol.

The brief: make that early signal trustworthy and actionable. Fuse the sources onto one timeline, score the likelihood of an episode with a physical model an operator can interrogate, forecast when it reaches the surface, and push that judgement to the people who act on it, without drowning them in false alarms.

01 / 04System

The architecture.

One pipeline, five stages, sensors to surface. Raw range gates are deduplicated and state-tracked in SQLite, wind is recovered by a least-squares retrieval, and every feed is resampled onto a single ten-minute clock before any detector reasons over it.

→ 01

Sense

Three Doppler LiDARs report backscatter and radial wind at one-minute resolution; raw HPL range gates are parsed, deduplicated and state-tracked, with each site delivering every ten minutes.

→ 02

Fuse

Four sources on one clock (LiDAR, NEA air quality, NASA FIRMS fire detections, and a cloud mask) with gaps carried explicitly, never interpolated away.

→ 03

Score

Two detection stages on every two-hour window: a six-component episode probability plus a boundary-layer breakthrough ETA.

→ 04

Act

Proactive alerts over Teams and Telegram with the full signal set attached; every episode lands in a replayable ledger.

→ 05

Surface

Mission control with ten panels and a five-viewport Geo-Hub: live state, replay, and inspection in one place.

02 / 04Detection

The science.

Detection is a calibrated, glass-box score, not a black box. A two-hour rolling window is rated 0–100% from a six-component physical model, each component weighted and individually inspectable, so an operator can see exactly why a number moved.

Episode probability

Six weighted components (layer thickness, persistence, wind speed and coherence, and more) combine into a single calibrated 0–100% score over a two-hour window.

Breakthrough forecast

A diurnal boundary-layer model estimates when an elevated layer will reach the surface, turning "something is aloft" into "expect it at street level by …".

Cloud suppression

A three-stage cloud classifier gates the signal so condensation and cloud returns don't trigger false aerosol alarms: the hardest part of trusting LiDAR.

One shared scorer

The same scoring code drives the live pipeline, the replay engine, and the dashboard, so what you see in review is exactly what fired in production.

Scoring model
6-component · weighted
Window
2 h · rolling
Surface arrival
PBL breakthrough ETA
False-alarm gate
3-stage cloud classifier
Wind retrieval
least-squares · batched upserts
Dedup + state
SQLite ledger

03 / 04Delivery

Reaching people.

A score nobody sees is worthless. The system is proactive: when the lead detector crosses threshold, conversational agents reach out over Microsoft Teams and Telegram with the full signal set attached, and the same agents answer questions on demand.

3DREAMS Bot · Teams13:42 SGT

Upper-level transport — RGS

HIGH · multi-site corroboration
Episode probability
78%
Aerosol layer
1,250–1,430 m
Wind
238° · 5.1 m/s
PBL breakthrough
14:20 SGT
2Chat platforms
17Bot commands
10Dashboard panels
5Geo-Hub viewports
4Fused sources

04 / 04Result

What changed.

Reactive → proactive

Monitoring shifted from reading spikes after the fact to being told an episode is likely, with a forecast for when it reaches the surface.

Every alert inspectable

The signal that drove a score is one click from the alert itself: no black boxes between the sensor and the decision.

Episodes replayable

A shared scorer across live, replay and dashboard means past events re-run exactly as they fired: the basis for tuning and trust.

Handed over, still running

Ingestion, retrieval, scoring, backend, dashboard and agents: designed, built and operated by one person, then migrated in full to the CCEH team, who run it today.

Hours of advance warning

Replayed against the 36-hour February 2026 reference episode, v2 issued ten alerts where the previous detector issued zero. The first HIGH-confidence alert came at 02:30, nearly six hours before mixing reached breathing height at the surface.

Demonstrated to WHO

Presented to the World Health Organization at the international forum CCEH co-hosted with WHO on the health impacts of air pollution and heat; the cinematic film was produced for that audience.

Next case study Brains →
© 2026 Anthony Meijer · Singapore 3DREAMS@SG · Centre for Climate Change and Environmental Health, NTU