Beacon · UNDP Crisis Mapping Challenge

From 700 km up, every street looks fine.

The first hours of a disaster are mapped from orbit — too coarse, too slow, and only when the sky agrees. The people who know the truth are already standing in it.

Affected district · 04:17
04:31 · cell service unavailable

0 bars.

Cell towers fall with the buildings. For most crisis apps this is the edge case. For Beacon it is the normal case — the whole pipeline assumes silence.

Offline by design

The map was already here.

An 18 MB map pack of your district, downloaded weeks before the ground moved. Offline Plus Codes give every report a shareable address when the street signs are gone.

The outbox

Written to disk, not to hope.

Every report lands in a durable on-disk queue that survives app restarts and dead batteries. Three reports tonight. They will wait as long as they have to.

Before anything leaves the phone

Privacy is the pipeline, not a promise.

A crisis photo is full of people who never consented to being data. So the redaction runs on the device, while still offline— the pixelated face below is the pipeline's real output, not an artist's impression; the plate scene re-stages the same rule.

Photo-file metadata, removed on device
EXIF GPS coordinatesstripped
Device make · serialstripped
Capture timestampstripped
Face — 1 foundpixelated

No name, no number, no account. An opaque device ID is the only identity — and withdrawing a report erases it from the server.

06:12 · signal restored

One bar is enough.

The outbox flushes itself the moment any connection returns. Submissions are idempotent — a retry can never count the same report twice.

Spatial dedup

A second witness becomes a second version — not a second building.

Two neighbours report the same collapsed house. The server folds them into one versioned record; the damage count stays honest.

The situation room

From a street to a verified record — in hours, not weeks.

502,064 reports benchmarked · p95 submit 215 ms · five export formats, ready for GeoHub
Install it before the ground shakes

Put a damage sensor in every pocket.

One Kotlin Multiplatform codebase, Android and iOS. The offline map pack and the on-disk outbox are exactly why it belongs on the phone before the crisis, not after.

Sideload-ready APK, no store account needed — store listings follow the pilot.

For UNDP teams

The other half is the console

The situation room behind this film is real and running: clustered vector tiles, verification and triage, five analyst roles, a one-click situation brief, and exports for the GIS tools already in the building — GeoJSON, HXL CSV, KML, GeoPackage, Shapefile.

Demo accounts are listed on the sign-in page.

Measured, not promised — reproducible from the repository
0
reports in the live benchmark
full pipeline measured at half a million synthetic reports in the production schema
0
sustained submissions / s
p50 148 ms · p95 215 ms on a single instance
0
MB peak server memory
all five export formats streamed back-to-back, from a cursor
0
UN languages, incl. RTL
English, French, Spanish, Russian, Arabic, Chinese