For each analytical capability: what the model actually computes, which data feed it, how it has been validated, and — deliberately — its known limits.
A report starts from your question, in your words: a country, an event, a decision you have to make. We gather the answer from many dated sources — UN agencies, food-security and hazard monitors, the news of the last days, and any document you add — together with the platform's own measurements: shaking, exposure, the indices on this page. This is a multi-source gather: each source is read for what it says and when it said it.
Every number in the draft is checked against the source it came from, with that source's date. A figure that cannot be traced to a source does not go out. Where the sources disagree, the report says so and shows both.
Reports are written for a busy reader: the answer first, one idea per paragraph, every number with its comparison, the limits stated plainly. That standard is checked by code on every draft — not left to a reread.
A person reads and approves every report you commission before it reaches you. Nothing you commission is released without that approval.
Within 4 hours of the order, 07:00–22:00 Rome time every day. Ordered outside those hours, or too late to finish by 22:00: by 10:00 Rome time the next morning.
The SSI is a two-stage pipeline. Stage 1 monitors every watched country for the presence of an acute shock and scores it on six weighted factors — scope, criticality, duration, elasticity, interconnectedness, and policy-response capacity. Scope and duration are derived live from the event itself (hazard alert level, conflict status, IPC phase); the remaining four come from per-shock-type analyst priors. Between the six-factor core and the published headline sits a bounded country channel — an economy-size logistic and an income-group tilt, squashed through an exponential soft-cap — and per-source ceilings (GDACS alert colour, IPC assessment age). A capped row publishes its uncapped value and the rule that bit (ssiUncapped / cappedBy), so the gap between factors and headline is checkable on the wire, never inferred. Stage 2 projects the economic impact of a detected shock: per-sector severities drive GDP, inflation, fiscal, trade, currency and employment components through sector elasticities and per-country baselines, with cross-sector interaction terms.
GDACS disaster alerts, a verified armed-conflict catalogue, IPC food-security assessments, WHO disease-outbreak notifications, and per-country macroeconomic baselines.
Detection is wired end-to-end for four shock types today — natural disasters, geopolitical conflict, food-security crises and disease outbreaks. The authoritative detected-versus-specified split is published live by the platform itself, so it can never go stale in this paragraph. Stage-2 projections are being calibrated against documented historical shocks — the empirical benchmark currently covers earthquake, hurricane and flood classes only; until that calibration is signed, Stage-2 outputs are presented as projections, not measurements.
For a real earthquake with a published USGS ShakeMap, the engine intersects the actual intensity contours with administrative districts (geoBoundaries ADM2) server-side and reports per-district shaking plus population exposure by intensity band, using GHSL gridded population. For the window before a ShakeMap exists — and for hypothetical scenarios — it synthesises a footprint from an intensity-prediction equation, Allen, Wald & Worden (2012), extended with a finite-fault effective-distance correction built from Wells & Coppersmith (1994) rupture scaling and Thompson & Worden (2018) unknown-strike averaging.
USGS ShakeMap intensity contours and PAGER; GDACS event footprints; geoBoundaries ADM2 districts; GHSL population.
The finite-fault correction was fitted against the published USGS ShakeMap for the M7.1 Venezuela earthquake: mean contour error fell from 21.6 km to 8.8 km, and the corrected model recovers the innermost MMI 8 ring that a point-source form misses. District exposure bucketing was checked against USGS PAGER for the M7.5 Venezuela event: the engine's MMI 6+ exposed population matched PAGER's published figure (8.0M vs 8.0M).
Fatality brackets use the Jaiswal-Wald (2010) lognormal lethality form with a global vulnerability bracket — the span of the range is the uncertainty. They are labeled modeled, order-of-magnitude: a planning signal, never a prediction. When USGS publishes PAGER for an event, PAGER is authoritative — the internal bracket is shown alongside it, never blended with it, never as a competing headline.
At close zoom the globe estimates damage probability per building: Google Open Buildings footprints (where they have none, Microsoft's and OpenStreetMap's, through Overture Maps), the real ShakeMap ground-motion value sampled under each footprint, and one number per 150 m block: a single logistic rate model in ln(PGA), fitted on twelve Copernicus EMS activations, giving the expected share of that block which is damaged (fitted coefficients available to clients under agreement). Every building inside a block carries the block's number, because that is the resolution the evidence has. The count of every building in an area — the denominator of «buildings damaged» on City footprints and Building damages, and the figure the 3D city compares its own with — is Overture Maps' (Microsoft ML Buildings + OpenStreetMap), every building it maps, small ones included; the 3D city draws only the buildings OpenStreetMap maps, so its own count is smaller. The two-part model this paragraph used to describe — a lognormal fragility curve plus a gradient-boosted ranking of buildings by footprint size, density and micro-terrain — was removed from the engine on 2 August 2026 and is no longer computed anywhere; the ranking it performed measures AUC 0.490, chance, once the undamaged class is drawn from the standing building stock. Where satellite damage assessments exist, each assessed building's status is displayed as a fact, not a probability — and inside those assessed areas, observed data always wins; the model fills only the gaps between them.
Google Open Buildings footprints, and Overture Maps footprints (Microsoft ML Buildings, OpenStreetMap) where Open Buildings has none; USGS ShakeMap ground-motion grids; Copernicus Emergency Management Service rapid-mapping gradings; radar-measured ground deformation (InSAR line-of-sight displacement) as a regional observed layer; NASA–ISRO NISAR L-band radar, distributed by the Alaska Satellite Facility, for the measured surface rupture and the experimental radar change map below, tested on Microsoft Global ML Building Footprints (ODbL).
© European Union, 2026, Copernicus Emergency Management Service (© 2026 European Union), [EMSR884] — Venezuela Earthquake. Copernicus EMS rapid-mapping products are published under CC BY 4.0, which permits commercial use with attribution; the terms grant reproduction, distribution and adaptation with no non-commercial clause.
The fragility curve was re-fitted by maximum likelihood on three satellite-observed damage tiles — 46,564 buildings spanning peak ground accelerations of 0.25–0.84 g. An earlier coastal-amplification heuristic over-predicted observed damage roughly threefold and was removed: where the observed data contradicted the model, the observed data won.
Corrected 2 August 2026 — a claim withdrawn. This paragraph previously reported the ranking model at “AUC 0.65–0.80 within an imaged zone, ≈0.67 transferred to an unimaged area, above the bare fragility curve’s ≈0.58”. Retested against 12 Copernicus EMS activations — 401,250 buildings across 11 earthquakes — none of the three figures survives. The 0.67 was leave-one-tile-out inside a single earthquake, which is not transfer to a new event. The ≈0.58 corresponded to no validation run in the codebase. And once the undamaged class is drawn from the standing building stock rather than from an analyst’s selection, per-building skill is AUC 0.490 — indistinguishable from chance. Seven covariates were swept (footprint area, height, built density, neighbour count, spectral shape, construction epoch at 1 km and 100 m); each works inside one area with a coefficient specific to that area, and those coefficients disagree across areas.
What is measured, and what it is for. Shaking predicts the damage rate of a neighbourhood, not the fate of a building. Refitted on 2 August 2026 over 12 earthquakes and 579,357 graded buildings: at ~150 m cells, Spearman ρ +0.362 leave-one-EVENT-out (p <0.0001) — pooled across the held-out earthquakes. That is a ranking claim, and it is the only accuracy figure Watchfloor publishes for this model. Qualified 5 August 2026, and read this before using it. Holding a whole earthquake out is the right split. But the correlation is then computed over every held-out cell from every earthquake at once, so differences in LEVEL between events — a M7.8 damages more everywhere than a M6.0 — enter the number and count as skill at ordering neighbourhoods. Watchfloor never asks anyone to compare a block in Türkiye with a block in Peru; it answers within this earthquake, which blocks are worst. That is the within-event figure, and it has now been measured. Measured 6 August 2026. The twelve Copernicus EMS activations were rebuilt from scratch and the rebuild authenticates itself twice: it yields 401,250 graded buildings — the same count this paragraph has always cited — and reproduces the published pooled figure at +0.355 against +0.362. On that same rebuild, the within-event ordering is:
Which twelve — recorded 5 August 2026. The activations behind this figure were, until that date, written down nowhere in the codebase: the list survived only in working notes, so the figure could be rebuilt by its author and by nobody else. The list is now versioned with the engine and was verified against Copernicus rather than merely copied — all twelve activation pages describe an earthquake, and the two ends of the original scan range do not, which is the control that makes it a selection rather than a list of whatever answered. The file also carries the two traps that make a rebuild wrong rather than merely hard: nine of the twelve grade only damaged buildings, so their base rate is 100% by construction, and each activation must be paired to its own USGS event by date and area — pairing by name has previously matched Java to Sumatra 700 km away.
Which individual building fell remains chance — per-building AUC 0.490 once the undamaged class is drawn from the standing building stock rather than an analyst's selection — so Watchfloor shows individual buildings only where a satellite has actually looked. A 150 m cell holds a few dozen buildings, so what it observes is a noisy draw from the rate rather than a measurement of it: on held-out events, 88% of cells with a non-zero predicted rate saw no damage at all, which is what small samples do and is not evidence the rate is wrong.
What it is. A radar change map from NASA–ISRO NISAR's L-band passes: the buildings whose radar signal changed after an earthquake clearly more than the land around them. We checked it building by building against Copernicus EMS gradings (EMSR884 Venezuela, EMSR916 Colombia), in all 11 graded areas inside the radar strips, with the rules written down before the tests.
The rule. It points where to look. It never counts damage, never gives a total, and never shows that a place is safe. Official figures and Copernicus gradings come first. In Panama the radar shows at least 37 km of clear offset (the mapped trace is 39 km); Panama is not a blind test. Results, the full table and the limits: How much earthquake damage can a radar satellite see?
The footprints under the damage blocks are Google Open Buildings (v3) where it covers — Africa, Latin America, South and Southeast Asia — and Overture Maps (Microsoft ML Buildings and OpenStreetMap) everywhere else. The count of every building in an area, the denominator of «buildings damaged» on City footprints and Building damages, is Overture Maps', small buildings included (section 04). After an earthquake, the expected buildings damaged in a 150 m block are the block's buildings times its damage rate, summed over the area the page shows.
For the largest city within 250 km that felt intensity IV or more, and for the towns USGS PAGER lists, Watchfloor builds the city in 3D from OpenStreetMap buildings (Overture first for cities of 250,000 people or more; up to 40,000 buildings). Each building gets a height (OpenStreetMap's, else its floors × 3.2 m), a natural period from that height (ASCE 7), and the shaking at that period from the USGS ShakeMap. FEMA HAZUS-MH fragility curves then give two readings per building: light damage inside (non-structural, from drift and floor acceleration) and moderate structural damage (from drift, for a concrete frame).
A storm's wind field is three bands: winds of 34 kt (gale), 50 kt (storm) and 64 kt (hurricane force) or more, each inside the one below it. In the Atlantic, East and Central Pacific the radii are the NHC/CPHC forecast wind radii; in every other basin they are the advisories of JTWC and the regional centres, relayed by GDACS, over the storm's whole life — the track already run and the forecast. Between forecast hours the radii are swept along the track, so the field covers every place the winds pass. The field is read again every ten minutes; advisories come every six hours.
People are counted with Kontur Population (400 m hexagons, November 2023, CC BY 4.0) inside each band. The headline is the strongest band that holds at least 100 people: 64 kt, else 50, else 34. Towns within 15 km of the 34 kt edge are listed as at the edge, not counted inside. The count is refreshed with each new advisory and one reading per advisory is kept, so the page can show how the figure moved.
Airports inside the 34 kt field (OurAirports: large and medium airports and those with scheduled service, up to 20) are read from their METAR/ASOS reports via the Iowa Environmental Mesonet: the peak sustained wind, its time, the gust and the number of reports. A band counts as measured when at least two reports reach it. Once the storm has passed, a station's measured band sets the band for places within 30 km of it, or on the same small island.
A flood on the Live map is a GDACS flood event, and its area is GDACS's affected-area polygon — a model of where water may be. The people figure leads with what was reported: GDACS's impact reports from the ground (Sendai framework), displaced first, then affected, in people or households as reported. Only when no report exists does the card say how many people live in its area (Kontur Population inside the GDACS polygon), named as such. ReliefWeb reports of the same disaster type, country and dates are shown beside the GDACS figure, never added to it.
Inside the GDACS area, Watchfloor reads the Copernicus Global Flood Monitoring product (Sentinel-1 radar) for the last 14 days and compares the largest single pass of the last seven days with the largest of the seven before, so a trend reflects the water and not the number of passes. Where a Copernicus EMS rapid-mapping activation matches the event, its observed damage opens from the card. River levels come from GloFAS v4 through the Open-Meteo Flood API, as a model estimate at the nearest river cell.
Transits through the world's 28 maritime chokepoints come from IMF PortWatch (daily crossings from ship-tracking data, published weekly about a week behind). For each strait the Live map shows the mean of the seven days to PortWatch's latest date against the same seven days a year earlier (364 days back, so weekdays and season match). A change is shown when the normal flow is at least five ships a day and the move is 30% or more. Tonnage is PortWatch's carrying capacity (deadweight tonnes), not the cargo aboard.
For the Strait of Hormuz, Watchfloor counts the ships at anchor off Fujairah and Khor Fakkan on Copernicus Sentinel-1 radar images: a typical evening pass of a period against the same pass before the crisis, with the dawn passes as a check. Radar sees ships at sea whatever their tracking transponder does.
A per-country nowcast of the 90-day trajectory of a food-insecurity proxy built from near-real-time phone-survey indicators (food-consumption and coping-strategy prevalence, normalised 0–100). The model is a three-part gradient-boosted ensemble exported to ONNX — a baseline regressor, a quantile model for uncertainty bounds, and a non-linear regime model — over 26 features computed from each country's own survey history: lags, rolling means and volatilities, trend, seasonality, and a lean-season flag.
HungerMap LIVE survey history (the only feature source — no media or macro features), plus crop-calendar lean-season timing.
On its held-out test set the model reports MAE 1.6 percentage points, direction accuracy 97.7%, and R² 0.98. Read those honestly: the model is autoregressive — it extrapolates a country's own survey history — so these scores measure trajectory extrapolation, not shock anticipation.
The structural electoral forecaster is a deliberately simple, fully inspectable logistic model over 11 structural features. It scores the probability that a governing party loses its next election, trained on 1,407 competitive national elections across 128 countries since 1990 (competitive defined as V-Dem electoral-democracy ≥ 0.5). It is a calibrated risk rank, not a crystal ball — its mean predicted probability equals the historical base rate (0.544) by construction.
Strictly out-of-sample only: forward-chaining AUC 0.714 (train on the past, predict the next) and leave-one-country-out AUC 0.721 (train on 127 countries, predict the held-out one). No random cross-validation — it leaks.
Qualified 5 August 2026 — what those figures were measured on. Both describe the eleven-feature model. The shipped forecaster feeds it eight: gdppc, sii (State Integrity Index at election time) and traj (its 180-day change) are always imputed to the training median, and alt_hist and polc join them for countries outside the curated set. gdppc is imputed for a concrete reason: the model was trained on GDP-per-capita growth while the live series returns the level, and feeding the level drives the standardised value to minus infinity. Weighed on the shipped coefficients, the three always-imputed features carry 2.8% of the linear predictor's variance (7.2% including the two curated-only ones), against 90% for incumbent tenure alone — so this is a small correction, not a hidden one. But it is a correction: an accuracy measured on a predictor that is not the one shipped is an upper bound. Measured 5 August 2026, and no longer an estimate. The training set was rebuilt (1,427 competitive elections, 128 countries, 54.5% incumbent-loss base rate) and both validations re-run twice on the same rows: once with all eleven features real, once imputing gdppc, sii and traj at prediction time exactly as the shipped forecaster does. With eleven features the published figures reproduce exactly — 0.714 and 0.721. The shipped configuration measures forward-chaining AUC 0.693 and leave-one-country-out AUC 0.713, a cost of 0.021 and 0.008. Those are the figures that describe what Watchfloor actually predicts, and they are what this page now quotes.
And a provenance repair worth naming. Until that run, the two published AUCs were literals: the export script wrote them into the model artefact by hand and printed them as fixed text, and the “countries” count was an expression that always returned 128. Nothing recomputed them, so nothing would have noticed if they had drifted away from the data. Re-running showed the values were right — but a correct number without provenance stays correct only until something changes underneath it. The export no longer prints an accuracy it did not compute.
Every call runs the same loop: predict → lock → resolve → score. A forecast is locked as an immutable snapshot the moment it is made — the number Watchfloor is later graded on can never be retroactively edited. When the outcome is established, the entry is resolved and Brier-scored, misses included. Forecasts built from structural priors alone are flagged as such, and every entry carries its framing — "calibrated relative risk · watch flag" — rendered verbatim, never as "prediction". The track record is public, no sign-in required: the raw feed is /api/ledger/track-record (JSON).
For each monitored country, seven deterministic danger vectors — conflict, economy, currency, food, governance, regime, hazard — are computed from the live signals Watchfloor already scores, V-Dem regime type and GDACS's orange and red natural-hazard alerts. The convergence count is simply how many vectors are elevated at once. There is no model in this loop: the stacking is arithmetic, so it can be audited by counting.
In a backtest over 4,841 country-years (1996–2024), countries with three or more simultaneously deteriorating vectors were 7.3× more likely to experience an irregular government change the following year than countries with one or none. Risk stacks monotonically with the count.
Watchfloor computes on top of public and licensed datasets, and the boundary of those datasets is the boundary of the product. Outside the monitored-country list, Watchfloor has no live tools — and says so rather than improvising.
On conflict: Watchfloor's conflict signal measures shifts in global media coverage. It is media-derived monitoring — labeled as such — and is not front-line reporting. No claim of ground truth is made where none exists.
Four rules bind every surface of the product. They are enforced in the code paths that produce the numbers, not just promised here.
Every modeled output is stamped as modeled, and order-of-magnitude estimates are labeled as such wherever they appear. A scenario can never be mistaken for an observation.
Wherever a satellite-observed assessment exists, it overrides the model inside its assessed area. Models fill gaps; they do not overrule evidence.
When an authoritative estimate exists — USGS PAGER for earthquake fatalities — it leads. Internal brackets are presented beside it as brackets, never blended into it.
When a feed is down or a value cannot be computed, the surface shows an honest empty state. Nothing is padded, backfilled, or invented to look complete.
Questions about a specific figure, or a limit we have not stated? Simone Cicchetti · simone@notamy.app — corrections to the methodology are welcome; they make it better.