A portfolio scored against the severity levels a jurisdiction actually publishes — one peril at a time, on that peril's own ladder. And the number nobody else reports: the assets for which no published level exists at all.
Every credit and climate-risk policy is written at one severity level — almost always "1-in-100". That is a statement about one line on one map. This app names the assets that sit close enough to that line for the choice of line to be the whole answer.
The buyer of record is the lender, not the insurer: the person who signs the physical-risk methodology note under IFRS S2 ¶29(c) — the amount and percentage of assets vulnerable to physical risk — and who must disclose, under ¶22 and ¶25, the inputs, the assumptions and the significant areas of uncertainty. A screening output that cannot name the map, the panel date and the severity level behind each classification is not evidence for those paragraphs.
Of 41 assets inside the state's 200-year outline, 27 are invisible to a 1 % screen.
That crossing exists only because California publishes a rung between the two FEMA levels — and because SB 5 made it a legal threshold rather than a modelling choice.
1 % annual chance → 200-year → 0.2 % annual chance. Three published levels, and a band change between them is a published fact the state drew — an asset is inside a polygon or it is not.
475-year → 2,475-year, read off a continuous ground-motion grid. A band change there depends on class breaks this app chose, so every quake band carries its break set and the raw value beside the degree.
Fire Hazard Severity Zones are an ordinal hazard class under PRC §4201–4204. No annual probability, no recurrence interval. The ladder has one rung and cannot be stepped.
There is no year at which all three perils have something to say. A combined score "at 1-in-100" is therefore a fiction — so the app scores per peril and refuses to combine, structurally, not by a rule someone has to remember.
Step a rung and the portfolio re-scores in place: the map reclasses, the KPIs move, the distribution shifts, the ranked list reorders, and a band-change counter names the assets whose classification moved. ← / → step from anywhere on the page; the chevrons disable at the ends of a ladder rather than wrapping.
| Product | What it emits | Return period exposed? |
|---|---|---|
| Jupiter Intelligence — ClimateScore Global | asset-level metrics, seven hazards, IPCC scenarios to 2100 | Yes — its own 2/5/10/20/50/100, extended to 200/500/1,000 for flood & wind |
| Moody's / RMS — Climate on Demand Pro | hazard and financial-impact scores, RCP and NGFS scenarios | Yes — its own damage ratios at chosen exceedance probabilities |
| XDI — Climate Risk Engines | VAR% / MVAR% — technical premium as a share of replacement cost | No — the opposite: severity is integrated away into an annualized figure |
| Climate X · First Street · HazardHub · ZestyAI | loss metrics, a 1–10 Flood Factor, A–F letter grades, annual probabilities | No, or opaque at the surface the buyer sees |
| This app | a band per asset per published rung, with the map and vintage that drew it | The jurisdiction's own rungs — including the ones with nothing on them |
Every product above is delivered as SaaS or an API. Using one means transmitting the asset register — where the assets are and what they are worth — outside the institution. None publicly documents an in-perimeter deployment.
Every vendor that steps return periods steps its own harmonised grid. That harmonisation is a model output — and under IFRS S2 ¶22/¶25 it is exactly what the preparer must disclose and defend. A model grid is not an answer to a question about a panel.
9.2 % of the register changes band on the flood ladder. 94.2 % changes band on the earthquake ladder — and 1,828 of those 1,883 step exactly one MMI degree.
A band-change count is therefore a discriminator for flood and noise for earthquake. So the earthquake rungs carry a permanent line saying that near-total movement is an expected property of reading a continuous field five times further out — rather than letting the reader mistake it for a finding.
This is the second, independent reason the app emits no combined score. The first is that the ladders share no rung. The second is that even where both speak, they are not saying things of the same weight.
The silence is reported as a count, not filled. Every benchmark closes that gap by modelling it. Reporting "no published level exists here" as a first-class number, with its citation, is the honest move — and the one a disclosure preparer can cite under ¶22/¶25, which require uncertainty to be disclosed, not resolved.
Unscorable is never low. It is hatched, drawn above the low band in the legend, and decomposed into its three causes — because only one of the three is an authoritative statement.
The rung is the primary control; selection is the second loop. Click an asset — on the map or in the ranked table — and its decomposition card fills across every peril and every rung at once: the published class, the layer that drew it, that layer's vintage, and the unscorable perils named rather than scored.
The state's 200-year outline is 2 features, 1,247 rings — 183 exterior and 1,064 holes. Esri does not guarantee that a hole follows its own exterior in the array.
| Reading | Assets inside |
|---|---|
| Union every ring as its own polygon | 45 |
| Parent each hole to the most recent exterior | 42 |
| Even-odd across all rings, orientation-agnostic | 41 ✓ |
Only the last matches the server feature-for-feature. The build gate caught it by consequence, not by inspection — it failed on exactly one asset out of 2,000, 106 m from the nearest edge, and refused to continue.
Querying the public hazard service would send each asset's coordinates outside the perimeter, one request at a time. Every seismic value is baked at build time from the staged grid instead.
Computing the source column by stripping _band silently printed "map behind the band: Very High" on the one peril whose whole point is that it has none. Three assertions now forbid it.
Reading the figures: the hazard mapping, the tract frame and the classifications are real, published and probed. The asset register is GENERATED (seed 20260816) — derived from published figures, never from published geometry, filtered so it cannot attach to a real feature, and labelled on every screen, in every popup and in every export row.
Every one of these is written into the delivered application's own README. A tool that hides its edges costs you the project it cannot finish.
Your asset register with a location, a value and a valuation date; the severity levels your regulator and your state actually publish; and an owner for the class breaks on any continuous surface. The ladders get re-sourced, and this workbench scores your portfolio instead of a generated one.
It runs where your data already is. On-prem behind the perimeter and SSO, keyless OSM-derived basemaps, every hazard value staged and baked inside the network — because sending an asset register out to be scored is a procurement gate, not a technical detail.