Warn the public. Hold the system. Off the same forecast.
At 02:40 an emergency manager has to decide whether to push a Wireless Emergency Alert, barricade an underpass and staff the EOC. In the same hour a utility duty officer has to decide whether to draw the tunnel down, stage bypass pumping and start the clock on an overflow report. Those are two different decisions from one storm — and they are usually made from two different pictures, an hour apart. UrbanFWS runs one quality-controlled forecast chain and serves both from it.
0.6 mi rainfall grid · 15-min forecast step · 0–72 h horizon · machine-learned stage, inundation and collection-system hydraulics · CAP 1.2 out to the alerting stack · escalation, acknowledgement and audit trail · published hit rate, false-alarm ratio and full methods specification
Grid resolution, cadence and horizon are platform specifications. Hand-off latency is a design target measured from threshold evaluation to delivery at your notification provider or at IPAWS-OPEN — not an end-to-end guarantee, because carrier, paging and broadcast delivery are outside any vendor's control, and because no public alert leaves this system without a human at the alerting authority pressing send.
Two agencies own the same storm, and neither owns the whole answer.
The emergency management agency owns the public: the alert, the road, the shelter, the crew. The water utility owns the system: the interceptor, the storage, the pump station, the plant, the permit. Both are downstream of exactly one thing — how much rain falls where, and what it does next. In most cities that shared upstream is built twice, on different data, and reconciled by phone at the worst possible hour. That reconciliation is the product.
A schematic of the decision chain, not a product comparison. Most organisations already cover part of this — the question worth putting to any vendor is which box their output actually stops at, who is expected to carry it the rest of the way at 3 a.m., and whether the other agency in the room is looking at the same number.
The number disagrees across the table
The EOC is looking at a river forecast point; the utility is looking at a wet-well level; the public is looking at a radar app. When those three disagree, the meeting is about whose number is right rather than about what to do.
The alert is late because the evidence is late
An alerting authority will not push a Wireless Emergency Alert on a hunch, and it should not. The delay is rarely the send — it is assembling defensible evidence that the threshold has been crossed, on a map, with a name on it.
The after-action is reconstructed, not recorded
Six weeks later someone asks what was known at 02:40 and who was told. If that answer has to be rebuilt from call logs, radio traffic and memory, it is an opinion. It should be an export.
One pipeline, from the radar sweep to the phone that rings and the pump that starts.
UrbanFWS is a single chain, not a bundle of point tools. The same quality-controlled rainfall grid feeds the learned stage model, the hydraulic run, the inundation surrogate, the threshold engine, the CAP message and the after-action record — so the depth in the public alert, the depth on the EOC wall and the depth in the utility's overflow report are the same number, computed once, with one provenance trail behind it.
Predictive rainfall
Radar nowcasting from dual-polarisation and national mosaic products, blended into convection-allowing numerical weather prediction, on a 0.6-mile grid at 15-minute steps out to 72 hours — with the blend weights published rather than hidden.
Nowcast · blend · NWP ensembleLearned catchment response
A sequence model trained on your own gauge and SCADA history maps rainfall to stage and flow at the points you care about — including the urban ones with no rating curve, no forecast point and no hydraulic model.
Per-site models · retrained monthlyYour hydraulic model, on the forecast
UrbanFWS reads the EPA SWMM 5 input file your consultant calibrated — subcatchments, infiltration, LID controls, conduits, pumps, control rules — and runs it on the forecast rainfall every cycle. Nothing is rebuilt in a proprietary schema, and the file you get back still opens in SWMM.
Runoff · dynamic wave · LID · lossless round tripCollection system, not just streams
Inflow and infiltration, interceptor hydraulic grade line and freeboard, regulator and permitted-outfall activation with estimated volume, wet-well trajectory against alarm setpoints, basement-backup risk, and storage drawdown before the next cell arrives.
HGL · RDII · overflow · pumping · storageConsequence on people and property
Forecast stage and surface depth resolved onto terrain and your own layers: which underpasses and low crossings overtop, which blocks and critical facilities sit inside the wet edge, which shelters and evacuation routes are cut, and which of them are on the vulnerable-population register.
Depth grid · exposure · accessWarning an authority can sign
Thresholds you set, an escalation ladder you control, deduplication so one storm is not forty pages, quiet hours, on-call rotations, acknowledgement tracking, and a CAP 1.2 message assembled with the polygon, the headline, the WEA-length body and the evidence attached — ready for a human at the alerting authority to review and send.
CAP 1.2 · IPAWS/WEA-ready · SMS · voice · webhookOne picture, two agencies
The EOC and the utility control room see the same event, the same clock and the same thresholds, each filtered to what they can actually act on. Cross-agency triggers are explicit: when the utility's tunnel hits 80 % full, the EOC knows, and the reason it knows is written down.
Shared COP · joint thresholds · role filtersVerification in the open
Hit rate, false-alarm ratio, critical success index and median lead time — computed per site, per threshold, per season, and visible to you whether the number flatters us or not. Public-warning thresholds are scored separately, because the cost of a wrong one is different.
Scored against your sensorsBuilt to be integrated
REST and webhooks, CAP 1.2 for the alerting stack, incident feeds for the EOC's incident management system, OGC and Esri-ready services for GIS, and time series shaped for SWMM, InfoWorks ICM, HEC-RAS and your historian.
API-first · no scraping requiredTwo lanes, one event — and each one addressed in its own language.
The people who sign for this system do not share a vocabulary. One side talks in activation levels, ESFs, polygons and protective actions; the other talks in freeboard, RDII, setpoints and permit conditions. UrbanFWS is configured per role, so nobody has to read the other lane's dashboard to find their own number.
City, county & district emergency management
Activation triggers with a defensible basis, lead time on the assets that matter — shelters, hospitals, evacuation routes, staging areas — protective-action recommendations tied to named locations, and CAP output that drops into the alerting stack already in use.
Alerting authorities & public information
A drafted warning with the polygon already cut to the forecast footprint, a WEA-length body inside the character limit, a plain-language long form for the website and social, and the evidence bundle attached — so the review is about wording and judgement, not about assembling facts.
911 centres, fire, EMS & swiftwater
Which crossings are going under and when, ranked by time remaining rather than by call volume; pre-positioning guidance for swiftwater teams; and a live map of which response routes are still passable.
Public works, DOT & transit
Segment-level closure risk on underpasses, low-water crossings and depressed roadway, barricade crew staging, and a timestamped record of when each segment first crossed its closure threshold.
Human services & sheltering
Which registered vulnerable residents, care facilities and shelters fall inside the forecast wet edge, and how much notice each door-to-door notification round actually needs to finish before the water arrives.
Recovery, mitigation & grants
An event archive with depth, duration and exposure per address — the evidence base for damage assessment, repetitive-loss documentation and benefit-cost analysis on a mitigation application.
Wastewater collection systems
Inflow and infiltration by sewershed, interceptor surcharge and freeboard, regulator and permitted-outfall activation with estimated volume and duration, lift-station wet-well trajectory, and basement-backup risk on the blocks that have it every time.
Treatment plants & pumping
Forecast peak influent and time of arrival at the headworks, hours of notice before the wet-weather train has to come online, and the drawdown you would need to start now to avoid blending later.
Storage, tunnels & real-time control
Available storage against forecast volume, the latest defensible moment to begin drawdown, and gate and pump pre-positioning evaluated against the next cell rather than the last one.
Stormwater & MS4 programmes
Where the drainage network is at capacity, which green infrastructure is still absorbing and which has saturated, and inlet-level performance during the storm rather than in a design-storm report.
Drinking water supply & distribution
Forecast turbidity and stage at raw-water intakes, treatment lead time for a runoff pulse, and exposure of wells, pump stations, vaults and reservoirs to surface flooding and to loss of access.
Compliance & regulatory reporting
Every overflow event with start, stop, estimated volume, receiving water and rainfall context, assembled as it happens rather than reconstructed at the reporting deadline — with the model version and input data pinned to it.
What actually happens between the first echo and the first flooded street.
This is a synthetic walkthrough of one convective event on an urban catchment with a combined sewer. Read down the clock: at every row both agencies are acting on the same forecast state, and each one is acting on the part of it that belongs to them. The rows in the middle are where a phone call usually substitutes for a system.
Synthetic walkthrough, not a case study. The clock, the probabilities and the locations are illustrative. What is not illustrative is the structure: the two lanes act on one forecast state, the cross-agency triggers are explicit rather than collegial, and every public-facing action still passes through an authorised human. See how the two lanes are wired together →
Five stages, every five minutes, whether or not anyone is watching.
Each stage adds a layer to the same square mile. Scroll, and watch the stack build: the ground and its sensors, the rainfall analysis above it, the forecast above that, the consequence back on the ground, and the warning that leaves the building — once a person has approved it.
Ingest and quality-control
Radar mosaics, dual-pol fields, national and local gauge networks, your own rain gauges, stream and sewer level sensors, and utility SCADA tags all arrive on their own cadences and in their own units. Each is range-checked, flatline-checked and cross-checked against its neighbours. A sensor that has failed is marked failed — never quietly interpolated into a zero that then reads as good news on somebody's wall.
Build the rainfall grid
Radar is bias-corrected against the gauges that survived quality control, producing one 0.6-mile analysis at 5-minute steps. The correction method, the gauges used and the gauges rejected are recorded per cell — because the first question in any after-action review is how much rain actually fell here, and that answer has to survive a hostile reading.
Forecast forward
Radar-extrapolation nowcasting dominates the first ninety minutes, hands over to blended convection-allowing NWP through the first day, and to ensemble guidance beyond it. The handover is gradual and the weights are published on the page, not buried in an appendix — an EOC that cannot say why the forecast changed at 02:00 cannot defend the decision it made at 02:05.
Turn rain into consequence
Per-site sequence models produce stage and flow with uncertainty bands. Your hydraulic model routes the runoff through the pipes and reports hydraulic grade line, freeboard and regulator activation. An inundation surrogate — trained against full hydraulic runs — expands the forecast onto terrain in seconds rather than hours, and intersects it with roads, critical facilities, the vulnerable-population register and the utility's asset register in the same pass.
Decide, warn, record
Every threshold either agency defined is evaluated on every cycle. Internal crossings escalate along your ladder to whoever is actually on call, with deduplication and acknowledgement tracking. Public-facing crossings do something different: they assemble a draft — polygon, headline, WEA-length body, evidence bundle — and hold it for an authorised official. The whole sequence, including the drafts nobody sent, is written to an immutable event record you can export.
Eight layers, one square mile, one clock — and the lag between them is the analysis.
Every flood product is a stack of layers that have to agree about where and about when. Getting them to agree about where is co-registration, and it is mostly careful engineering. Getting them to agree about when is harder and more interesting, because the layers do not respond at the same time: the rain peaks, the pipes peak half an hour later, the street peaks half an hour after that. That offset is not an error to be smoothed away — it is the entire reason a forecast can buy anyone time. Below, all eight layers sit on the same tile and the same clock. Scrub, or press play, and watch the signal propagate downward through the stack.
—
Synthetic tile, synthetic storm, deterministic arithmetic. The numbers are generated in your browser from a fixed seed and are not a measurement of anywhere. What the figure is honest about is the structure: the four series are the same event seen at four points in the chain, the peaks are offset because the physical system offsets them, and the alert fires off the layer nearest the consequence rather than the layer nearest the sensor. Switch a layer off and the readouts that depend on it degrade rather than disappear — which is what the real system does when a radar drops or a gauge is quarantined, and it is the behaviour worth testing in a procurement.
Every protective action has a notice below which it stops being possible.
Flood losses are only partly a function of depth. They are also a function of how many cheap actions were taken before the water arrived — and of whether the two agencies took theirs in the right order. Each action below has a floor: notify a block six minutes out and you have produced anxiety, not evacuation; call for tunnel drawdown thirty minutes out and there is nothing left to draw down. This is why UrbanFWS reports lead time as a first-class metric next to accuracy rather than as a footnote to it.
Indicative planning ranges, not measurements. The notice each action actually needs is specific to your crews, your geography and your standard operating procedures — capturing those real numbers is part of configuring the escalation ladder during onboarding, and they are what the thresholds are then tuned against. Note the ordering problem this chart makes visible: the utility's cheapest action has the longest lead requirement, so a system that only tells the EOC has already lost the utility's best move.
The technical case is on the site, not behind a signature.
Public agencies procure under scrutiny, and a claim that cannot be checked before award is a claim that will be argued about after one. So the governing equations, the discretisation and its tolerances, the training and split protocol, the service objectives and the register of everything the model assumes are all published here — and three of the figures in the methods section compute their results in your browser rather than showing a picture of a result.
Twenty-two governing equations
Saint-Venant in full dynamic form, the Preissmann slot, Green–Ampt, the RTK unit hydrograph, weir and orifice hydraulics, Z–R and the ensemble state update — each with a note on what keeping that term commits us to, and what dropping it would quietly cost.
Read the equation sheet →Numerical experiments you can run
Choose a time step and watch a crest lose its peak, ring, or diverge; move a sensor’s uncertainty and watch the Kalman gain change size; switch off one error source and see the lead time it was costing you. All solved live, in the page.
Open the solver →Twelve questions for every vendor
Including us — and including the four we cannot answer with production numbers until we have run a season on your catchments and your collection system. A specification you can hold a supplier to is worth more than a claim you cannot check, and it survives a protest better.
See the evaluation matrix →Start with the storm that went badly.
Onboarding starts with your sensors, your asset layers and your thresholds — not with a generic demo. The most useful first conversation is about an event you both remember: what each agency knew, when, and what a shared picture would have changed. Within a pilot you get a scored record on your own catchments, including the events where the model was wrong.
From the next fifteen minutes to the next three days.
No single technique is good at every lead time. Radar extrapolation is unbeatable for the first hour and useless by the sixth. Numerical weather prediction is the only thing that works at day two and is far too coarse and too laggy to catch the cell currently sitting over your interceptor. UrbanFWS runs all of them and blends them on a published schedule — so the forecast never quietly changes character without telling you.
Radar nowcast
Optical-flow motion fields extrapolate the observed radar mosaic forward, with growth and decay estimated from the last several sweeps. Updated every five minutes. This is the regime where a warning still changes what a crew can do.
Blended short range
Nowcast skill decays and convection-allowing NWP takes over on a weighted ramp. The blend is bias-corrected against the last several days of local performance, so a model that has been running wet over your basin is discounted before it reaches you.
Ensemble outlook
Multi-member, multi-model guidance carried as a distribution rather than a single trace. At this range the honest output is a probability of crossing a depth, not a number to two decimal places.
An illustrative schedule, not a fixed constant. The real weights are re-estimated continuously from recent verification over your own basins: a nowcast that has been performing well in a slow-moving stratiform event keeps weight longer than one chasing fast discrete cells. The important property is that the ramp is smooth — a forecast that jumps when a source switches produces threshold crossings that are artefacts of the blend rather than of the weather.
The useful question is not “how much rain”. It is “what are the odds it crosses my number”.
A deterministic forecast of 2.4 inches is a statement with no risk content. An operations manager needs the chance that the basin exceeds the depth that has historically put water over Mill Creek Road — and needs it to move honestly as the storm approaches. Set a threshold below and watch the exceedance probability evolve with lead time.
Synthetic ensemble for demonstration. The shape is the point: a probability that climbs early and holds is a storm you can plan around; one that oscillates between 20% and 70% every cycle is telling you the atmosphere has not made up its mind, and that pre-positioning is a better response than evacuation. UrbanFWS records both the probability it issued and what subsequently happened, so the reliability of these curves is measurable rather than asserted — see Verification.
“How many inches” is the wrong question. “What return interval, at which duration” is the right one.
Drainage systems are designed against a depth-duration-frequency curve, consent decrees are written against one, and every engineer in the room already thinks in those terms. So the forecast is reported in them: the incoming storm's own depth-duration curve, laid over the design family, with the duration at which it is most severe marked. A storm that is a ten-year event at three hours and a one-year event at twenty-four is a very specific operational problem, and saying “3.6 inches” conceals it entirely.
Synthetic DDF coefficients and a synthetic storm. A production deployment uses the published depth-duration-frequency statistics for your location, and states the source and the edition on the figure — because two different atlas editions can move a five-year depth by enough to change a design decision. Note also that the design family is a statistical statement about a stationary climate; where the local record shows the intensity distribution moving, that is worth saying out loud rather than quietly using the old curves.
Radar sees everywhere. Gauges measure truth. Neither is sufficient alone.
A forecast is only as good as the analysis it starts from. Radar reflectivity is an inference about drop-size distribution, not a measurement of depth; it drifts with calibration, beam blockage, bright band and range. A rain gauge is a direct measurement of one square foot of the planet. UrbanFWS corrects one with the other, and writes down what it did.
Radar first guess
Dual-polarization fields give a better rain-rate estimate than reflectivity alone, particularly in heavy rain and mixed precipitation. Mosaicked so the seams between radars are not mistaken for storm structure.
Gauge correction
Multiplicative bias fields and kriging-with-external-drift, computed on rolling windows. More than one method is run; where they disagree materially, the disagreement is surfaced rather than averaged away.
Quality control that admits gaps
Stuck tips, blocked funnels, frozen sensors and comms outages are detected and flagged. A gap is reported as a gap. Nothing is silently backfilled with zero, because a zero is a measurement and a gap is not.
Synthetic storm. The failure mode is not that the gauge is wrong — it is right about the ground under it. The failure is treating one point as representative of a basin whose response is driven by where the core actually sat.
Why this matters for alerting
A threshold defined on a single gauge inherits that gauge's blind spots. If the storm core sits two miles away, the threshold never trips and the crossing floods anyway. If the gauge is under the core and the rest of the basin is dry, the threshold trips and a crew is dispatched to a dry road — which is how organisations learn to ignore their own alerts.
What UrbanFWS does instead
Thresholds are defined on catchment-integrated grid rainfall, on modelled stage, or on both with an AND condition. The gauge is still used — as a truth source for correcting the grid, and as an independent check that raises a data-quality flag when it disagrees with the grid over its own cell.
And when the radar is down
Coverage degradation is a first-class state. The platform reports reduced confidence, widens the uncertainty bands, and continues to alert on gauge and sensor evidence — while telling you plainly that it is doing so.
Six sources, six clocks, one analysis cycle.
Co-registering layers in space is the easy half. The hard half is that every source arrives on its own cadence and with its own latency, and none of them are current at the moment you have to decide. A radar sweep is a couple of minutes old before it lands; a rain gauge polled quarterly-hourly may have been read fourteen minutes ago; a numerical weather model that is nominally the 06:00 run is not usable until well after 07:00. The analysis cycle below sweeps left to right and, at each pass, takes the most recent value that had actually arrived — never the most recent value that exists. Everything else is hindsight, and hindsight is how a verification score gets quietly inflated.
State vector at the cycle
—
Illustrative cadences and latencies, not a service specification. Two things follow from this picture and both of them survive into production. First, the age of a decision is not the age of its newest input — it is the age of the input it actually depended on, which is why the interface shows an age per source rather than one freshness light. Second, every training example the models learn from is assembled the same way, with only what had arrived at the moment the forecast would have been issued: point-in-time correctness. Its absence is the most common invisible cause of accuracy claims that do not survive a real storm, and it is unfalsifiable from the outside — so it belongs in a specification, where it can be asked about.
See the forecast on your own basins.
A pilot runs on your catchment boundaries, your gauges and your thresholds — with a hindcast over your last few significant storms so you can see how the forecast would have behaved before you rely on it.
Machine learning where it earns its place — and physics where it does not.
“AI-powered” is not a specification. What matters is which component is learned, what it was trained on, what it does when it meets a storm larger than anything in its training set, and who is accountable when it is wrong. UrbanFWS publishes that for every model it runs. Some parts of this pipeline are learned because learning genuinely beats the alternative. Other parts are deliberately not, because a conservation law you can audit is worth more at 3 a.m. than a correlation you cannot.
Sensor quality control & anomaly detection
Learned Rule-checkedEvery incoming gauge, level sensor and SCADA tag is scored against its own history and its neighbours. A gradient-boosted classifier flags stuck tips, drift, freeze, siphoning, submerged transducers and comms dropout; deterministic range and rate-of-change rules run alongside it and can veto. Bad data is quarantined before it reaches the rainfall analysis, because a single stuck gauge reading zero through a storm will drag a bias correction across an entire basin.
The classifier proposes; the rules dispose. Any sensor the model wants to exclude is logged with the reason, and an operator can reinstate it — which is itself recorded as a labelled example.
Rainfall analysis & forecast blending
Physical / statistical Learned weightingThe radar-to-rainfall step is physical and statistical: dual-polarization rain-rate relations, mosaicking, and gauge-based bias correction by kriging with external drift. What is learned is the blending — how much weight nowcast, convection-allowing NWP and ensemble guidance should each carry, conditioned on lead time, storm regime, season and recent local verification.
This is a deliberate boundary. Learning the rain-rate relation from scratch would discard decades of radar meteorology; learning the blend weights recovers exactly the local, seasonal, regime-dependent behaviour that no published constant can capture.
Catchment response — rainfall to stage and flow
LearnedThis is where machine learning is unambiguously the right tool. A recurrent sequence model — LSTM-family, trained per site with regional pooling — maps a window of catchment-integrated rainfall, antecedent wetness, recent observed stage and static basin attributes onto stage and flow at 15-minute steps. It is trained on your own historical record, which means it learns your basin's actual behaviour, including the parts no one ever wrote into a model: the culvert that has been half-blocked since 2019, the way the interceptor surcharges once the tide is above a certain level, the diurnal irrigation signal.
Crucially it works at sites with no rating curve and no calibrated hydraulic model — which is most sites. Regional pooling lets a site with two years of record borrow structure from neighbours with fifteen.
Collection-system response — RDII, surcharge and regulator activation
Learned Model-anchoredA sewer is not a stream, so it gets its own model. Metered basin flow is decomposed into base sanitary flow, groundwater infiltration and rainfall-derived inflow and infiltration; the RDII component is what the model learns to predict, conditioned on rainfall, antecedent wetness and season. Predicted basin flows are then routed on your hydraulic model schematic to give depth at metered manholes, the hydraulic grade line between them, and the point at which each regulator starts diverting.
The learned part is the basin response — the part that depends on how leaky your pipes actually are, which no schematic contains. The routing stays anchored to the network you already model, so a result can always be traced back to a pipe with an invert and a diameter.
Inundation surrogate — stage to depth on the ground
Learned surrogate Physics-trainedFull two-dimensional hydraulic simulation is the gold standard and is far too slow to run on every forecast cycle. So it is run offline, hundreds of times, across a designed sweep of boundary conditions — and a convolutional surrogate is trained to reproduce the resulting depth grids from terrain, the drainage network and the forecast boundary stage. At runtime the surrogate produces a depth grid in under a second.
The surrogate never invents hydraulics; it interpolates a physics-based response surface. Where a forecast stage falls outside the sweep it was trained on, it says so and the cell is returned as out-of-envelope rather than as a confident number.
Threshold evaluation & alert decision
Deterministic rulesDeliberately not a learned component. Whether an alert fires is a policy decision an agency owns, expressed as explicit rules on explicit quantities: this stage, at this site, with this probability, sustained for this long. A learned classifier here would be unauditable, would drift without anyone noticing, and would make it impossible to answer the only question that matters in an after-action review — why did this alert fire?
Machine learning informs this layer by supplying the forecast and its uncertainty. It does not get to decide the policy.
The operator
Human in the loopAn operator can suppress, escalate, extend or override any alert, and every one of those actions is recorded with who, when and why. Overrides are not treated as noise to be engineered away — they are the highest-quality supervision signal the system receives, and they feed directly into the next retraining cycle and into the threshold review.
If a site is repeatedly overridden, that is a finding about the threshold or the model, and it appears in the monthly review rather than waiting for someone to notice.
A forecast is a distribution that narrows as the storm arrives.
Below is a single synthetic site through one synthetic event. Move the issue time to see what the model was saying at each point — how wide the band was, where the central estimate sat, and when the threshold crossing first became likely. This behaviour, not a single headline accuracy figure, is what determines whether a forecast is usable in an operations room.
Synthetic site and synthetic event. Note what the early issue times do: the median is close but the band is wide, which is a correct and useful statement — it says prepare, do not commit. A model that reported a narrow band eight hours out would look more impressive and be considerably more dangerous.
No hidden inputs. No mystery features.
Illustrative attribution for one synthetic catchment. The pattern is the transferable part: at short lead times the model is mostly reading the river, and at long lead times it is mostly reading the sky. A model whose attribution did not shift this way with lead time would be a warning sign.
Dynamic inputs
Catchment-integrated rainfall (observed and forecast), antecedent rainfall over 3, 7 and 30 days, observed stage and rate of change at the site and at upstream sites, upstream reservoir releases where telemetered, tide or downstream boundary stage in coastal basins, and seasonal terms.
Static attributes
Drainage area, time of concentration, imperviousness, slope and hypsometry, soil hydrologic group, land cover, channel and storm-network density, and detention storage. These are what let a site with a short record borrow from a hydrologically similar neighbour.
Deliberately excluded
Anything that would not be available at forecast time, anything derived from the target it is predicting, and anything that encodes the answer through a back door. Data leakage is checked by re-running validation on a strictly time-forward split — never a random one.
Every model ships with its limits written down.
A model card travels with each deployed model and is visible in the application, not filed in a report. It states what the model was trained on, how it was validated, where it is known to be weak, and when it will be retrained. If a model card cannot be produced for a component, that component does not go into production.
Catchment response — stage
Learned- Purpose
- 15-minute stage and flow forecast at instrumented sites, 0–72 h.
- Training data
- Site record plus regionally pooled neighbours; minimum 24 months, target 60+ months of 15-minute stage and matched grid rainfall.
- Validation
- Strictly time-forward split. Held-out final season never seen in training or tuning. Scored on peak timing and peak magnitude error, not only on mean error, because a model can win on RMSE while missing every crest.
- Known weaknesses
- Events materially larger than anything in the training record; step changes after construction, channel works or a new detention facility; sites where the stage sensor itself was relocated mid-record; frozen-precipitation and snowmelt-driven response where the training record is thin.
- Retraining
- Monthly on a schedule, and out of cycle after any event exceeding the prior record or after physical works in the basin.
- Degradation behaviour
- Widens quantile bands and raises a confidence flag rather than narrowing on thin evidence. Falls back to persistence plus routed rainfall if the sequence model is unavailable.
Inundation surrogate — depth
LearnedPhysics-trained- Purpose
- Sub-second depth grid from forecast boundary stage, for asset and roadway exposure.
- Training data
- Offline two-dimensional hydraulic simulations across a designed sweep of boundary stages, durations and initial conditions on the client's own terrain and drainage network.
- Validation
- Held-out simulations plus, where available, observed high-water marks and documented closure records from past events.
- Known weaknesses
- Boundary conditions outside the trained sweep — returned as out-of-envelope, never extrapolated. Blockage-driven flooding the underlying hydraulic model did not represent. Terrain changes since the survey. Levee and floodwall breach behaviour, which is explicitly out of scope.
- Retraining
- On terrain or network updates, on hydraulic model revision, and annually.
- Degradation behaviour
- Falls back to a static stage–depth lookup at instrumented sites and reports the reduced fidelity in the alert payload.
Collection-system response — RDII
LearnedModel-anchored- Purpose
- Forecast wet-weather flow at metered basins, and the surcharge and regulator activation that follows from it.
- Training data
- Flow-monitoring records at basin meters — ideally a full monitoring season including both dry and wet periods — with matched grid rainfall and the utility's hydraulic model schematic.
- Validation
- Held-out storms, scored on peak flow, volume and time to peak, plus activation skill at each regulator. Dry-weather performance is scored separately, because a model that nails wet weather and drifts on the diurnal curve will mislead every threshold set on absolute flow.
- Known weaknesses
- Basins whose network has been rehabilitated since the monitoring period — the R-value the model learned no longer exists. Private-side inflow that appears only in extreme events. Blockages and collapses the schematic does not know about. Snowmelt-driven infiltration where the record is thin. Tide-influenced outfalls without a downstream boundary record.
- Retraining
- After each flow-monitoring campaign, after rehabilitation work in the basin, and annually.
- Degradation behaviour
- Falls back to the utility's own RTK unit-hydrograph parameters where they exist, and reports reduced confidence where they do not.
Sensor anomaly detection
LearnedRule-vetoed- Purpose
- Flag failed or degraded sensors before their values reach the analysis.
- Training data
- Historic maintenance records, operator overrides and synthetic fault injection.
- Validation
- Precision and recall against held-out maintenance tickets; tuned to favour recall, since a missed bad sensor corrupts a basin while a false flag costs one review.
- Known weaknesses
- Slow drift that resembles genuine seasonal change. Novel fault modes not present in the record. Newly installed sensors with no personal history.
- Retraining
- Quarterly, and whenever a fault class is added to the maintenance taxonomy.
- Degradation behaviour
- Deterministic range, flatline and rate-of-change rules continue to run independently and can quarantine a sensor on their own.
Forecast blending weights
Learned- Purpose
- Set the weight given to nowcast, convection-allowing NWP and ensemble guidance by lead time and regime.
- Training data
- Rolling local verification of each source against the gauge-corrected analysis over the client's own footprint.
- Validation
- Continuous — the blended product is scored against the same analysis it is trying to predict, on a strictly forward-looking basis.
- Known weaknesses
- Regimes rare in the local record, such as a first tropical remnant in an inland basin. Periods immediately after an upstream model upgrade, where recent skill is no longer representative.
- Retraining
- Continuous, with a floor on how fast weights are allowed to move so a single bad day cannot swing the blend.
- Degradation behaviour
- Reverts to a conservative published default schedule when recent verification is unavailable or unrepresentative.
A model that is not being watched is not in production. It is just running.
Input drift and performance drift are monitored separately. Input drift catches a changing world — a new subdivision, an upgraded upstream model, a relocated sensor — often before performance visibly degrades. Performance drift catches everything else. Either one crossing its control limit opens a review; neither silently retrains the model on its own.
New model versions run in shadow before they run in anger. A candidate scores against live data alongside the incumbent for a full retraining cycle. It is promoted on a documented margin across peak timing, peak magnitude and threshold-crossing skill — not on aggregate error alone, which is the metric most easily gamed.
Every promotion is reversible. Model versions are immutable and addressable; the version that produced any historical alert can be re-instantiated and re-run against the exact inputs of that moment. An after-action review never has to reconstruct what the model "probably" said.
Out-of-envelope is a state, not an error. When conditions exceed the range a model was trained on, the platform says so in the alert payload and in the interface. It does not extrapolate confidently into a regime it has never seen — which is precisely the regime that produces record floods.
Overrides and misses are reviewed monthly, with people in the room. Every missed event, every false alarm and every operator override is listed. Some are model problems, some are threshold problems, and some are correct behaviour that looked wrong. Telling them apart is not something to automate.
Ask us the hard questions about the models.
We would rather spend the first call on training windows, validation splits and failure modes than on a slide deck. Bring your hydrologist.
Your SWMM model, running every five minutes.
UrbanFWS does not ask you to rebuild your network in a proprietary format. It reads the EPA SWMM 5 input file your consultant calibrated — subcatchments, subareas, infiltration, LID controls, junctions, conduits, storage, pumps, orifices, weirs, RDII and control rules — and drives it with the forecast rainfall grid on every cycle. The runoff engine generates the hydrology; the flow-routing engine solves the hydraulics; both produce the same objects your engineers already argue about, under the same object names.
This page is the hydrology half of the story. It is where rainfall becomes flow: what infiltrates, what is held in depression storage, what runs off an impervious surface in nine minutes and a lawn in forty, what green infrastructure takes out of the peak, and what the street does when the pipe below it is already full. The pipes themselves are on the Collection system page; the equations behind both are on Methods.
Where the rainfall actually goes.
SWMM treats a subcatchment as two nonlinear reservoirs side by side — one impervious, one pervious — each shedding water over a Manning surface once its depression storage is full. That structure is why the same inch of rain produces a flashy nine-minute response from a parking lot and a slow, half-absorbed one from the lawn beside it. The figure below integrates both reservoirs live; change the parameters and watch the split move.
Two things in this figure are worth arguing with your modeller about. First, the infiltration capacity falls through the storm — the ground is not a fixed sink, and a second cell arriving three hours in meets a catchment that has already spent most of its capacity. Switch the antecedent condition to wet and watch the runoff coefficient move without a single change to the rainfall. Second, the pervious contribution is not small and it is not fast: it arrives late, it broadens the recession, and it is the part a design storm computed with a single runoff coefficient throws away entirely. SWMM applies the full subcatchment width to both subareas, which is a modelling convention rather than a physical claim, and it is one of the parameters calibration actually moves.
The first table any modeller opens, published on the website.
Every SWMM run ends with a continuity report, and every experienced modeller reads it before looking at a single hydrograph — because a run that has lost four percent of its water is not a forecast, whatever else it says. UrbanFWS computes the same report on every cycle, stores it with the forecast, and refuses to publish a run that fails the threshold. The table below is computed from the integration in the figure above, so it moves when you move the controls.
| Runoff quantity continuity | Depth (in) | Volume (ac-ft) |
|---|---|---|
| Total precipitation | — | — |
| Evaporation loss | — | — |
| Infiltration loss | — | — |
| Surface runoff | — | — |
| Final surface storage | — | — |
| Continuity error | — | — |
Why continuity is the honest metric
It cannot be tuned. Calibration can make a hydrograph fit an observation for the wrong reasons, and a plausible-looking peak tells you nothing about whether the model conserved water getting there. Continuity error is arithmetic: it either balances or it does not.
What a bad number means
Above roughly 1% in the flow-routing engine, look for a time step too long for the shortest conduit, a node with almost no surface area, or a control rule oscillating a pump every step. Above 5%, the run is not usable and no amount of parameter adjustment will fix it.
What we do with it
Store it with the forecast, plot it over time, and alarm on the trend. A continuity error that has been creeping upward for three weeks is usually a network edit nobody flagged — a conduit with a bad invert, a new storage node with a missing curve.
Where the equivalent for the hydraulics lives
The flow-routing continuity error, the solver tolerances and the Courant cap are on the Methods page, with a figure that lets you break the scheme deliberately.
What the LID controls in your model are actually buying you tonight.
Green infrastructure is usually justified on an annual volume-capture number and then never looked at again during an event. That is a waste of an asset you have already paid for: a bioretention cell that is empty at midnight and full by two is a different asset at each moment, and the operational question — how much peak is it taking off this storm, and will it still have room when the second cell arrives — is answerable from the same LID objects already sitting in your input file.
Read the storage curve, not only the peak. The purple trace is the control filling, and the operationally interesting moment is where it flattens at the top: past that point the asset is contributing nothing and every additional inch runs off as though it were not there. On this storm the controls ride out the first cell comfortably and saturate part-way up the main one, which is exactly why a green-infrastructure programme sized on annual capture can post an excellent yearly number and take almost nothing off the event that floods the street. A cistern behaves differently on purpose — it drains slowly, so it holds its water longer and keeps less room in reserve, which is the right trade for volume and the wrong one for back-to-back cells. UrbanFWS reports both, per control, per event.
LID parameters, as SWMM expects them
These are the layer definitions read from your [LID_CONTROLS] section. UrbanFWS does not invent them.
What we add on top
The parts a static model run does not give you, because they only exist once a forecast does.
The street is part of the drainage system whether it is in the model or not.
A runoff hydrograph arriving at a node assumes the water got into the pipe. Between the two sits an inlet with a finite capacity, leaves on it, and a hydraulic grade line underneath that may already be above the gutter. This is where most surface flooding actually originates, and it is the part a model with no surface pathway simply cannot see: the water is delivered to the node on paper while in reality it is running down the street to the sag two blocks away.
The inlet is a weir until it drowns, and then it is an orifice — the same pair of equations as the regulators on the collection-system page, at a different scale. That transition is why inlet capacity is not a single number on a datasheet, and why a grate rated for four cubic feet per second passes barely one when the water is shallow. Set the sewer beneath to above the rim and the sign flips: the driving head is now in the pipe, the inlet becomes a source, and the street fills to whatever level the hydraulic grade line reaches. No amount of grate cleaning fixes that case, which is the distinction between an inlet problem and a capacity problem — and it is a distinction a resident reporting street flooding cannot make for you.
We read your model. We do not become the only thing that can open it.
The most expensive thing a utility owns in this space is not software; it is twenty years of calibration argument encoded in an input file. A platform that imports that file and then holds it hostage in a proprietary schema has taken an asset off you and given you a subscription. UrbanFWS reads SWMM 5 natively, keeps every object under its original name, and writes back a file that opens in EPA SWMM, PCSWMM, XPSWMM or anything else that speaks the format — whether or not you are still a customer.
| Input section | Read | Simulated | Written back | Notes |
|---|---|---|---|---|
| [SUBCATCHMENTS] [SUBAREAS] | Yes | Yes | Unchanged | Area, width, slope, %imperv, routing between subareas |
| [INFILTRATION] | Yes | Yes | Unchanged | Horton, modified Horton, Green–Ampt, modified Green–Ampt, curve number |
| [AQUIFERS] [GROUNDWATER] | Yes | Yes | Unchanged | Two-zone aquifer; matters on the long recessions that keep a system in wet-weather posture for days |
| [LID_CONTROLS] [LID_USAGE] | Yes | Yes | Unchanged | All layers, including clogging factors and drain control rules |
| [SNOWPACKS] | Yes | Yes | Unchanged | Rain-on-snow is a real northern failure mode and is not skipped |
| [JUNCTIONS] [OUTFALLS] [STORAGE] [DIVIDERS] | Yes | Yes | Unchanged | Ponded area, surcharge depth and outfall boundary type all honoured |
| [CONDUITS] [XSECTIONS] [LOSSES] | Yes | Yes | Unchanged | Including irregular and custom shapes, force mains, and entry/exit losses |
| [PUMPS] [ORIFICES] [WEIRS] [OUTLETS] [CURVES] | Yes | Yes | Unchanged | Pump curves by type, weir coefficients, outlet rating curves |
| [CONTROLS] | Yes | Yes | Unchanged | Rules run as written. UrbanFWS does not rewrite your control logic |
| [HYDROGRAPHS] [RDII] | Yes | Yes | Unchanged | RTK unit hydrographs, per sewershed, with initial abstraction |
| [DWF] [PATTERNS] [INFLOWS] | Yes | Yes | Unchanged | Dry-weather patterns replaced by the live diurnal estimate during a run, restored on export |
| [TIMESERIES] [RAINGAGES] | Yes | Replaced | Unchanged | The one substitution: gage series are driven by the forecast grid at run time. Your original series stay in the file |
| [POLLUTANTS] [LANDUSES] [WASHOFF] | Yes | No | Unchanged | Carried, not simulated. UrbanFWS models quantity. Water quality is out of scope and is not implied |
| [COORDINATES] [POLYGONS] [MAP] [TAGS] | Yes | — | Unchanged | Geometry and tags preserved so the file still draws correctly in your editor |
Two of those options decide more than the rest put together. ALLOW_PONDING YES is the difference between a model that quietly deletes the water that will not fit and one that keeps it at the node where it will actually be — and a model set to NO will happily report no flooding while the street is under a foot of water. SURCHARGE_METHOD SLOT is the Preissmann slot from the methods page, and it is why the surcharge propagation in these runs is stable rather than an oscillation the modeller has learned to ignore. If your file has ponding off, that is worth a conversation before anything else on this page matters.
What we never change
Network geometry, invert elevations, cross-sections, calibrated roughness, RTK parameters, control rules and LID layer definitions. If a number in your file changes, it is because you changed it.
The single substitution
Rain gage time series are driven by the forecast grid during a run. Your historical series are preserved untouched in the file, and any run can be replayed against them instead.
Version handling
SWMM 5.1 and 5.2 input files are both read; a 5.1 file is not silently upgraded. InfoWorks ICM comes in through ICM Exchange, and what could not be translated is listed explicitly rather than dropped.
Getting your model back
Export at any time, including after the contract ends, as a plain .inp with the geometry, tags and coordinates intact. Also on the data ownership terms.
Where the calibration lives
With you. UrbanFWS can propose parameter adjustments from the residual record, but a change to a calibrated model is a modeller's decision with a modeller's name on it, and it is versioned.
Send us the input file.
The most useful first step is your existing .inp and one storm you have flow monitoring for. We will run it, show you the continuity report, the hydrographs and where our forecast disagrees with your gauges — and tell you plainly whether the model is in good enough shape for any of this to be worth doing.
Wet weather is a collection-system problem before it is a street problem.
Long before water shows up on a road, it is already in the pipes. Inflow and infiltration climb, the interceptor surcharges, regulators start diverting, wet wells rise faster than the pumps can draw them down, basements on the chronic blocks start taking water, and somebody has to decide whether to open the storage tunnel now or hold capacity for the second cell. UrbanFWS forecasts that sequence at the same cadence it forecasts the rainfall driving it — on your network, your regulators, your permitted outfalls. It is also the half of the event an emergency operations centre normally cannot see at all, which is why the eight facts on the cross-agency schedule are drawn mostly from this page.
Interceptor capacity
Forecast depth and hydraulic grade line at metered manholes, with remaining freeboard to the crown and to the surcharge threshold.
Regulator & CSO activation
Which permitted outfalls are forecast to activate, when they start, how long they run and the estimated volume — with the confidence attached.
Pump & lift stations
Wet-well trajectory against pump-on and high-level alarm setpoints, firm capacity margin, and the stations where run-time is about to exceed what the duty pumps can hold.
Storage & treatment
Tunnel and basin fill trajectory, drawdown time before the next cell arrives, and forecast peak influent at the water resource recovery facility.
The network, not the watershed.
The same storm produces very different answers depending on which sewershed it lands on: a separated basin with a large detention pond behaves nothing like a combined basin with 1890s brick and a regulator that starts diverting at forty percent of design flow. This view is drawn on the collection system — trunk sewers, regulators, permitted outfalls, stations, storage and the plant — not on topography alone.
Entirely synthetic network, synthetic basins, synthetic flows. Nothing here corresponds to a real utility. A deployment is built on your own hydraulic model schematic, your regulator setpoints and your NPDES-permitted outfall list, so every label matches what your operators already call it.
The chart operators actually argue over.
A flow number is abstract. A hydraulic grade line rising toward the crown, then above it, then above the rim at manhole 14 is a specific, arguable, checkable statement about what is happening underground. UrbanFWS forecasts the profile along each modelled reach at every cycle — so surcharge and overflow are things you see coming rather than things you reconstruct afterwards from a complaint log.
Synthetic reach and synthetic storm. Surcharge is not failure — most interceptors are designed to surcharge in wet weather. What matters is the freeboard left to the nearest rim, how long the reach stays surcharged, and whether the surcharge propagates upstream into laterals, which is what turns a hydraulic condition into a basement backup. Those three quantities are what this figure exists to show.
Where the profile comes from
Level and flow telemetry at metered manholes anchors the profile; the shape between meters comes from your hydraulic model schematic — invert elevations, diameters, slopes, rim elevations — combined through the same surrogate approach used for surface inundation.
What it will not tell you
A blockage the model does not know about, a collapsed segment, or a lateral connection that is not in the schematic. If observed level at a meter diverges from the forecast profile by more than a configured tolerance, that divergence itself becomes an alert — often the earliest signal that something physical has changed in the pipe.
Why the freeboard number matters more than the flow
Crews cannot act on a flow. They can act on “forty minutes of freeboard left at MH-14, on the block where we had four backups in 2024”.
Duration matters as much as peak. A reach that touches surcharge for six minutes is a different operational problem from one that holds it for three hours. Synthetic.
Which outfalls activate, when, for how long, and roughly how much.
For a combined system under a consent decree or a long-term control plan, this is the number that gets reported. UrbanFWS forecasts activation ahead of the event and records what actually happened afterwards — the same record, produced the same way, whether the answer flatters the model or not.
Synthetic scenario. The comparison worth reading is the one between the two control postures: forecast-informed operation trades storage that would otherwise sit empty at the start of the event for volume that would otherwise leave through an outfall. UrbanFWS does not operate your gates — it produces the forecast and the recommended pre-positioning; the decision and the SCADA command stay with your operators and your control system.
Activation records export in the shape your permit asks for. Start and end time, duration, estimated volume, receiving water, the rainfall that drove it, and the telemetry that evidences it — with the forecast that was issued beforehand kept alongside, so pre-event awareness is documented and not merely asserted.
Volume is an estimate and is labelled as one. Where an outfall is metered, the record uses the meter. Where it is not, the volume comes from the hydraulic model with its uncertainty stated. The two are never presented as the same class of number.
When the forecast and the telemetry disagree, both are kept. An outfall that activated without being forecast is a miss, appears in the verification record as a miss, and is reviewed. So is one that was forecast and did not activate.
This is decision support, not a compliance determination. What gets reported to a regulator, and in what form, is the utility's judgement and its counsel's. UrbanFWS produces the underlying record.
Separating the rain from the sewage.
Wet-weather flow is three things stacked: base sanitary flow that follows the diurnal curve, groundwater infiltration that moves with the season, and rainfall-derived inflow and infiltration that arrives within hours of the storm. Telling them apart is what lets a utility forecast the third one — and what turns a flow meter into an argument for where the next rehabilitation dollar goes.
Synthetic basin, synthetic meter. The R-value is the fraction of rainfall falling on the basin that ends up in the sewer, and it is the number that separates a basin worth rehabilitating from one that is already tight. Watch it move with antecedent condition: the same storm on saturated ground puts far more water into an old combined basin than it does on dry ground, which is exactly why a forecast that ignores antecedent wetness is not usable for wet-weather planning.
Every station, one screen, ranked by how much time is left.
During a wet-weather event the pumping supervisor is not reading twelve trend screens. They need one ordered list: which wet well reaches the high-level alarm first, which station has lost redundancy, and where the bypass pump should be staged now rather than in an hour.
| Station | Wet well | Forecast level | Duty pumps | Firm capacity margin | Time to high-level alarm | State |
|---|
Synthetic stations. “Firm capacity” is the station's rated capacity with the largest pump out of service — the number that matters when a unit is down for maintenance during a storm. A station at 96% of firm capacity with all pumps running is a different problem from one at 96% with a spare available, and the board distinguishes them.
Storage you did not empty in time is storage you did not have.
A storage tunnel that is still forty percent full when the next cell arrives cannot capture what it was built to capture. Drawdown takes hours and is limited by what the plant can accept, so the decision to start dewatering has to be made on a forecast, not on an observation. This figure shows the same synthetic storm run two ways.
Synthetic tunnel and synthetic storm. The lesson is the shape of the trade: draw down too early on a forecast that busts and you have spent plant capacity and pumping energy on nothing; draw down too late and the storage is not there when the second cell arrives. UrbanFWS gives the probability and the timing so the trade can be made deliberately — it does not issue the command, and the recommendation is always shown with the forecast confidence that produced it.
Bring your model schematic and one wet-weather event.
Give us a hydraulic model export, your meter list and a storm your team remembers well, and we will replay it — HGL, activations, station levels and all — against what your telemetry actually recorded.
A stage forecast becomes useful the moment it lands on something somebody owns.
“Mill Creek will reach 9.6 feet” means something to a hydrologist and nothing to a barricade crew, a shift supervisor or a duty official deciding whether to wake eleven thousand people. “The Canal Street underpass goes under at 05:10, the hospital access route follows twenty minutes later, the Ridgeview lift station loses access at 05:40 and the elementary school stays dry” is the same forecast expressed as four decisions belonging to three different organisations. The translation between them is terrain, a drainage network, and asset layers that both agencies contribute to — because the utility knows where its vaults are and the EOC knows where the care facilities are, and neither register is complete on its own.
Entirely synthetic geography, synthetic assets and synthetic depths. Nothing on this map corresponds to a real place. A production deployment runs on your terrain, your drainage network and your own asset register — and reports out-of-envelope cells rather than guessing at them.
The list a supervisor can act on without opening a GIS.
Crossings are ranked by time to threshold, not by depth, because time is what determines the order in which a limited number of crews can get anywhere. Each row carries the forecast, the confidence, and the threshold that was used — so the decision can be defended in a council chamber and, later, scored against what actually happened. The same ranking drives three different products: the barricade crew's task list, the utility's crew routing, and the polygon on a public alert draft.
| Crossing | Status | Time to threshold | Forecast depth over deck | Confidence | Threshold basis |
|---|
Synthetic scenario. “Confidence” is the share of ensemble members crossing the threshold within the stated window, not a subjective rating. Rows update with the forecast valid time selected on the map above.
Your assets, not a generic layer
Pump and lift stations, treatment facilities, cabinets and control panels, manholes and regulators, critical customers, shelters and evacuation routes — loaded from your own register with your own identifiers, so an alert names the asset the way your work-order system names it.
Thresholds tied to real elevations
Deck elevations, low-chord clearances, panel and vent heights, door sills and access-road grades. A crossing threshold is a surveyed number, not an assumption — and where the elevation is unknown, the platform says the threshold is provisional rather than presenting it as certain.
Honest about what it cannot see
Blockage-driven flooding, surcharge from a collapsed line, breach behaviour at levees and floodwalls, and depths outside the trained hydraulic envelope are all outside scope and are reported as such. A model that never says “I don't know” has simply hidden the cases where it doesn't.
Depth on a street is a nuisance. Depth on a lifeline is a cascading failure.
Water in a road closes a road. Water in a substation, a raw-water intake, a pump station or a hospital driveway does something categorically different: it takes out a service that thousands of people depend on, in a way that outlasts the storm by days. The exposure surface is intersected with the lifeline registers of both agencies, and lifeline hits are ranked separately from ordinary asset hits — because they are not the same kind of number, and averaging them into one “assets exposed” count is how the important one gets lost.
Drinking-water supply
Forecast stage and turbidity at raw-water intakes, and how much treatment lead time a runoff pulse leaves. Exposure of wells, booster stations, vaults and reservoirs to surface flooding — and, separately, to loss of access, which arrives earlier and is what actually strands an operator.
Intake · treatability · accessWastewater & stormwater plant
Forecast peak influent and its arrival time at the headworks, hours of notice before the wet-weather train has to come online, and site flooding or access loss at the plant itself — the failure that turns a wet-weather event into a discharge event.
Peak influent · site exposureHealth & medical
Hospitals, dialysis and infusion centres, nursing and assisted-living facilities, and the specific access routes that serve each one. A facility that stays dry but becomes unreachable by ambulance is an emergency management problem forty minutes before it is a facility problem.
Facility · route · reachabilityEnergy & communications
Substations, distribution equipment and generator-served sites inside the wet edge, and the dependency the other lifelines have on them. A lift station with a flooded transfer switch is a wastewater failure with an electrical cause, and it should surface as both.
Dependency-aware exposureSafety & security
Fire stations, police facilities, the EOC itself, and the staging areas the response plan assumes are usable. Every plan contains at least one facility that is assumed to be available and has never been tested against a depth grid.
Response infrastructure · stagingTransportation
Underpasses, depressed roadway, low-water crossings, transit portals and bridge approaches — evaluated as a network rather than as a list, so the output is which places become unreachable, not only which segments are wet.
Segment · network · reachabilityHydraulic fidelity, at forecast speed.
Build the response surface offline
Your calibrated two-dimensional hydraulic model is run across a designed sweep of boundary stages, storm durations and antecedent conditions. This is the expensive step and it happens once, on a schedule — not on every forecast cycle.
Train the surrogate on those runs
A convolutional encoder–decoder learns to reproduce the simulated depth grids from terrain, the drainage network, and the boundary conditions. It is validated on held-out simulations and, where they exist, on surveyed high-water marks and documented closures from past events.
Evaluate it every cycle
At runtime the surrogate turns the current forecast stage into a depth grid in under a second, for every valid time in the horizon. That is what makes a live, forward-looking inundation view possible at all.
Intersect with the asset register
The depth grid is overlaid on crossings, facilities and parcels; exposure is computed against surveyed thresholds; and the resulting list is what feeds the alert payload and the operations view.
Refuse to extrapolate
Any cell whose boundary condition falls outside the trained sweep is returned as out-of-envelope. It appears on the map as an explicit hatched state, is counted in the exposure tiles, and is never rendered as a confident depth.
Why not just run the hydraulic model live?
Because a two-dimensional run over a meaningful area takes minutes to hours, and a forecast cycle is five minutes. Running it live would mean either a much coarser mesh, a much smaller area, or a forecast that is stale before it is delivered. The surrogate keeps the fidelity of the full model and pays for it in offline compute instead of in latency.
What if we don't have a 2-D model?
Many agencies do not. Deployment then starts from stage–depth relationships at instrumented sites plus terrain-based flood extent, which is a coarser product and is labelled as such. Building the hydraulic basis is a normal part of a phased rollout rather than a precondition for getting value.
Does the surrogate drift?
It drifts when the world changes — new construction, a rebuilt culvert, a revised terrain survey, a recalibrated hydraulic model. Each of those triggers a retrain. It does not drift on its own, because unlike the catchment-response model it is not learning from a moving observational record.
Put your crossings and assets on the map.
Send an asset register and a terrain surface and we will show you the exposure view for a storm you already remember — including which thresholds we could not establish from the data provided.
Two very different things travel down this pipe.
One is a page to somebody who works for you: trained, on a roster, reachable, and able to ask a follow-up question. The other is a message to two hundred thousand strangers, delivered once, on a channel with no formatting and no recall, to people who were asleep four seconds ago. Those are not the same engineering problem, and treating them as one is how agencies end up whispering to their own crews and shouting at the public. UrbanFWS separates them at the threshold engine and keeps them separate all the way to the record.
Internal notification — automatic, escalating, acknowledged
Goes to named people on a rotation. It can be chased until someone acknowledges, it can be repeated, it can be corrected, and the recipient can be trained on what it means. The design problem here is credibility over a season: deduplication, hysteresis, sustain windows and quiet hours exist because an organisation paged forty times for nothing will not answer on the night it matters.
Fires automatically · SMS · voice · Teams · webhookPublic alert — drafted automatically, sent by a person
Goes to everyone in a geographic polygon, on a channel where the message cannot be taken back, to an audience with no training and no context. The design problem here is one message, one chance: character budget, plain language, a named location, a specific protective action, and a polygon tight enough that the people it wakes are the people it is about. UrbanFWS never sends one. It assembles one and hands it to an authorised human.
CAP 1.2 · IPAWS-ready · human approval requiredNinety characters is not a design constraint. It is the whole design.
A Wireless Emergency Alert carries up to 360 characters on 4G-LTE and newer handsets, and 90 characters on older ones — and the older ones are still in the polygon. Four decades of warning research say the same thing about what has to be in that budget: who is telling me, what the hazard is, exactly where, until when, what to do, and where to get more. Drop one and people spend their lead time milling around confirming the alert instead of acting on it. Compose below and watch both renderings, and the element checklist, move together.
Compose the alert
Every field above is filled from the forecast where it can be: the location comes from the exposure intersection, the “until” time comes from the recession forecast, and the hazard follows the threshold that fired. The operator is editing a draft, not composing from a blank box at 3 a.m.
Illustrative composer. Character counts are computed live and are real; the wording, locations and times are synthetic. Two constraints worth carrying into your own SOP: Spanish-language WEA messages are authored, not machine-translated, and reach only handsets set to Spanish — so the English message still has to work for a bilingual household; and the 90-character version is a separate field, which means an originator who writes only the long form has silently written nothing for part of the polygon.
The polygon is the message.
Alert the whole county for a flooded corridor and you have taught two hundred thousand people that your alerts are not about them — a lesson they will remember on the night one is. Alert only the wet cells and you will miss the family whose access road floods before their house does. Carriers are required to deliver a Wireless Emergency Alert within a tenth of a mile of the polygon you draw, which means the polygon is now precise enough to be wrong precisely. Drag below and watch both errors move.
Synthetic jurisdiction, deterministic population field. The dot field, the footprint and the counts are illustrative. The mechanism is not: since December 2019 carriers have been required to deliver WEA messages with no more than roughly a tenth of a mile of overshoot beyond the polygon on compatible handsets, so geographic precision is now yours to get right or wrong, not the network's to blur. UrbanFWS drafts the polygon from the forecast exposure surface, snapped to the boundaries your SOP allows and clipped to your permitted alerting area.
Write the rule in the language of the decision, not in the language of a sensitivity dial.
Thresholds are authored as explicit, versioned conditions on quantities an engineer can defend in a deposition — a forecast stage, a depth over a crown, a rainfall depth over a catchment — with a confidence requirement, a sustain window and a minimum lead time attached. Change the rule and watch the internal notification it would produce change with it. The public draft is generated from the same crossing, and still waits for a person.
Trigger definition
Rules are versioned. Editing one records the change, the author and the reason, and the previous version stays retrievable — so a review can establish what rule was in force on the night in question rather than what rule is in force today.
Illustrative rendering of an SMS or push payload. The same incident is delivered simultaneously as an email digest, a webhook payload, an incident-feed record for the EOC's incident management system and, where the rule is flagged public-facing, a held CAP 1.2 draft — all carrying the same incident identifier so downstream systems thread them instead of duplicating them.
The right person, at the right hour, on the channel they will actually answer.
Escalation is configured per site, per level and per agency, because the person who needs to know that a detention basin is filling is not the person who needs to know that an underpass is about to take a car. Quiet hours apply to advisory levels and never to life-safety ones — and the public rung is different from all of them, because it does not fire.
Nothing is sent. The record is still kept.
Conditions are logged continuously whether or not anything crosses. When an event is reviewed six months later, the quiet hours before it are part of the record too — and so is the fact that the model was watching and stayed silent, which is the only way a miss can be distinguished from an outage.
Duty officers on both sides, one message, no siren.
Sent to the EM duty officer and to the utility's on-call operations supervisor, plus the shared operations channel. Subject to quiet hours: between configured hours this becomes a queued digest rather than a page, unless it escalates. This is the rung on which a utility's drawdown decision usually gets made, which is why it goes to both agencies rather than to one.
Paged, and chased until acknowledged.
Primary on-call is paged immediately. If no acknowledgement arrives inside the configured window, the alert escalates to the secondary, then to the supervisor, then to the EOC watch. Quiet hours do not apply. Where the rule is flagged public-facing, this is also the rung on which the CAP draft is assembled and queued at the gate.
Everyone on the list, simultaneously, no suppression.
Fan-out to the full notification group across both agencies with no deduplication delay and no quiet-hour handling. Suppression is disabled at this level by design — an operator can annotate, but cannot silence. The public draft is escalated at the gate rather than sent: the official is paged about the draft, on the same channels, with the evidence attached.
Assembled, held, and released by a named person.
There is no automatic rung above Emergency. The public message is drafted with the polygon, the 360- and 90-character bodies, the long form and the evidence bundle, and it waits. The record captures the draft, the time it was queued, who opened it, what they changed, and whether they sent it or spiked it — including the drafts nobody sent, which are usually the more interesting half of an after-action review.
Every false alarm spends credibility you cannot buy back — and the public account is smaller than the internal one.
A threshold is a trade. Lower it and you catch more events and cry wolf more often; raise it and every alert is real but some floods arrive unannounced. There is no setting that avoids the trade — there is only choosing it deliberately, with the numbers in front of you, rather than by accident. Two thresholds usually have to be chosen, not one: crews will tolerate a false-alarm ratio that the public will not, and the rung that pages a utility supervisor should sit well below the rung that drafts a Wireless Emergency Alert. Move the threshold below and watch both sides move.
Synthetic five-year record for one site. Notice that lead time falls as the threshold rises — the certainty you gain by waiting is paid for in the time your crews lose, and at the top of the range the median lead time drops below the notice a barricade crew actually needs, which makes a technically excellent alert operationally useless. The right setting is not a technical answer; it depends on what the action costs and what the miss costs, and those costs differ between the two agencies sharing this screen. UrbanFWS structures that conversation rather than making the choice for you.
One incident per storm per site. Subsequent cycles amend the open incident — raising or lowering its level, updating the forecast — instead of paging again. Recipients see a thread, not a flood of messages.
Alerts clear on a lower threshold than they set on. Without hysteresis a forecast hovering on the boundary produces a set-clear-set-clear cycle that is worse than no alert at all.
A crossing must persist for a configured number of cycles. One noisy cycle does not page anyone. This is the single most effective false-alarm control available, and it costs only the sustain window in lead time.
Configurable per level, never applied to emergency. Advisory traffic queues into a digest overnight; life-safety traffic never does, and the interface makes that distinction impossible to misconfigure by accident.
On-call schedules, handovers and escalation chains are first-class. The alert goes to whoever is actually on duty at that minute, with automatic escalation when acknowledgement does not arrive.
During a declared event the posture changes. Sustain windows shorten, digests are suspended, and everything routes live — because the cost of a delayed alert during an active storm is not the same as it is on a quiet Tuesday. Storm mode is entered by a person and recorded, and it never lowers the bar on the public rung.
Internal and public thresholds are scored separately, and never share a setting. A rule can be tuned to page the duty desk aggressively and still sit well below the confidence required to draft for the public. The interface shows both numbers for the same site side by side, because the only way an agency drifts into over-alerting the public is by tuning one dial and assuming it moved only one thing.
Six months later, someone will ask what you knew, when you knew it, and why you did not send.
Every incident carries a complete, timestamped, immutable chain: the inputs that were available, the forecast that was produced, the model version that produced it, the rule that fired, the messages that were sent, the public drafts that were assembled and what happened to each one, who acknowledged and when, every override with its stated reason, and what was observed afterwards. It exports whole, in machine-readable form, without a support ticket — and it is designed to be read by a reviewer who is not on your side.
CS-UP-WATCH-v4 · model catch-lstm 2026.07.2 · sent to EM duty officer and utility on-call via SMS + TeamsXA-EB-FREEBOARD · subscribed by EM under the standing data-sharing schedulecap_9d31f0 · not sent · awaiting authorised official · permitted-area check passedDC-XXXXXXIllustrative record for a synthetic event. The details are invented; the structure is not. Every field shown here is captured on real incidents, including the ones where the forecast was wrong and the ones where the official decided not to send — especially those, because a record that only contains the alerts you are proud of is not a record, it is a portfolio.
Bring your current thresholds. We will show you what they would have done.
A hindcast over your last three years scores your existing triggers against what actually happened — hits, misses, false alarms, median lead time, and how many public polygons they would have drafted — before a single new alert is configured, and before anyone is asked to change an SOP.
A forecast only counts once somebody has done something with it.
Neither agency lacks weather information. What they lack is a defensible link between a forecast and an action: who steps the EOC up a level and on what evidence, which ESF desks are actually needed for a flood as opposed to a hurricane, which crews go where, what the plant does with its wet-weather train, who called the utility and when — and what the record shows six months later when the after-action review asks why a decision was taken at 02:40 rather than at 05:00. This section is about that link, and about making the trigger a written condition rather than a judgement call somebody has to defend alone.
An illustrative structure, not your playbook. Every jurisdiction's version of this differs, and the version that matters is the one your own staff wrote and will follow. What UrbanFWS contributes is the trigger: each cell is bound to a forecast condition, so the band advances on evidence rather than on somebody's read of a radar loop — and every advance is timestamped into the event record. Read the rows against each other rather than one at a time. The lane that most often fails is not a lane at all: it is the vertical alignment between the utility's drawdown decision at T−6 h and the EOC's activation decision in the same column, which in most cities are made by two people who have not spoken.
Stepping up a level is expensive. Stepping up late is worse.
Activation is the most consequential decision an emergency manager makes in a flood, and it is usually made on the thinnest evidence: a radar loop, a phone call and a feeling about the last one. UrbanFWS does not make it — it does something narrower and more useful. It writes down the forecast condition that corresponds to each of your levels, evaluates that condition continuously, and puts a recommendation with a reason and a clock in front of the person who owns the decision. What they do with it is logged either way, including the times they overruled it and were right.
Monitoring only. No recommendation is generated.
The system is watching every basin and every sewershed on a five-minute cycle whether or not anybody is in the room. The value of this level is not the absence of alerts — it is that the record shows the model was running and silent, which is the only way a genuine miss can later be told apart from an outage.
Somebody is now responsible for watching this, by name.
Recommended when the ensemble puts a material probability on exceeding a design depth anywhere in the jurisdiction with enough lead time for the cheap actions to still be available. Leadership and the utility liaison are notified; the public information officer pulls the templates for this hazard type. Nothing is deployed and nothing is spent.
Only the desks a flood actually needs — not the whole roster.
The recommendation names the functions the forecast implies rather than defaulting to a full stand-up: transportation because four underpasses are exposed, public works and utilities because two regulators are forecast to activate, mass care because the exposure surface touches a care facility, public safety because a hospital access route is cut. A partial activation that is correctly scoped is the difference between a rested night shift and a room full of people with nothing to do at 04:00.
Incident commander named, operational periods running, everything logged.
Recommended when a life-safety threshold is forecast inside the notice a protective action needs. From this point the event record becomes the primary artefact: every task, every threshold crossing, every alert draft and every decision not to send one is timestamped into the same chronology the after-action review will read.
| Forecast condition, evaluated every cycle | Recommends | Because the action it unlocks needs |
|---|---|---|
| ≥ 30 % of members exceed the 6-hour, 10-year depth anywhere in the jurisdiction | Level 3 | 12–24 h |
| ≥ 60 % of members exceed a design depth over two or more monitored basins | Level 3, utility liaison engaged | 6–12 h |
| Any closure threshold forecast crossed with ≥ 60 % confidence and ≥ 3 h lead | Level 2, transportation desk | 3–6 h |
| Exposure surface intersects a care facility, shelter or hospital access route | Level 2, mass care and public safety desks | 3–6 h |
| Two or more regulators forecast to activate, or storage forecast above 80 % full | Level 2, public works and utilities desk | 2–6 h |
| Life-safety threshold forecast inside the notice a protective action needs | Level 1, public alert drafted | < 2 h |
| Observed depth exceeds forecast envelope at two or more sites | Level 1, and a model-confidence flag on every product | Immediate |
Limited crews, ordered by the clock rather than by the phone.
During an event, dispatch order is usually set by whoever calls in first — which means it is set by whoever is awake, articulate and already flooded, and not by which asset runs out of time first. Forecast exposure lets the order be set by the deadline instead, across both agencies' crews at once: barricade teams, swiftwater, vac trucks and bypass pumps drawn from the same clock. It also makes the shortfall explicit when there are six priorities and four crews, which is the number an EOC actually needs in order to ask for mutual aid before it is too late to be useful.
Synthetic tasks and synthetic travel times. The point of showing the unreachable tasks is that the shortfall is a decision, and somebody should make it knowingly — call in overtime, request mutual aid, or accept that one crossing gets barricaded late and warn the public about that specific crossing instead. A scheduler that quietly drops the tasks it cannot fit is worse than no scheduler, because it converts a resource request into a surprise. Note also that travel time is computed against the closure forecast: a route that is itself going under before the crew arrives is not a route, and the assignment engine treats it as unavailable rather than as fast.
How old is the information you are deciding on?
Every input arrives on its own clock. A radar sweep is minutes old; a model run can be over an hour old before it reaches you; a rain gauge polled on a fifteen-minute schedule may have been read fourteen minutes ago. None of that is a defect — but a decision made at 02:40 is not made on the state of the world at 02:40, and an operations team should be able to see the difference rather than assume it away. This matters most at the moment two agencies compare notes: an EOC looking at a five-minute-old depth grid and a utility looking at a fifteen-minute SCADA poll are not disagreeing about the system, they are disagreeing about what time it is.
Illustrative ranges for common public and utility data sources; your own telemetry latency depends on your SCADA polling and comms. Each figure in the UrbanFWS interface carries the age of the data behind it, and any input older than its configured staleness limit degrades the product that uses it rather than being silently carried forward.
A forecast is only as good as the sensors still telling the truth.
Rain gauges block. Level transducers foul and drift. Radios drop out on exactly the night the storm is worst. The anomaly detector described in the AI section runs on every reading; this board is where its verdicts become somebody's work order — and, during an event, where a public-warning draft gets a confidence flag on it, because a polygon drawn from a basin whose only level sensor has been quarantined for ninety minutes is a polygon somebody should be told about before they send it.
Synthetic fleet. Every state change writes a record with the reason, and quarantines above a configured rate raise a maintenance ticket rather than sitting in a dashboard nobody opens. The important property is that a quarantined sensor degrades the confidence of the products that depended on it and says so, instead of being dropped silently and leaving the forecast looking as certain as it did yesterday.
The threshold is an economic choice wearing a technical costume.
Where to set an alert threshold is not a hydrology question. It is a question about what the action costs, what the miss costs, and how often each occurs — and it has a defensible answer only when those three numbers are written down. For a utility both numbers are usually money: a crew callout against a basement backup claim. For an emergency management agency the miss cost is not denominated in dollars at all, and pretending otherwise produces a number that will not survive a council meeting. UrbanFWS structures that conversation and keeps the two currencies visibly separate; it does not have opinions about your budget, and it will not put a price on a life to make an optimisation converge.
Synthetic. Move either slider and watch the optimum move. When a miss costs twenty times an unnecessary callout, the defensible threshold is far lower than instinct suggests — and that is an argument you can take to a budget meeting, not just to a hydrologist.
What belongs in “cost of acting”
Crew callout and overtime, equipment mobilisation, pumping and energy for a pre-drawdown, the operational risk of moving assets, and the credibility spent on a public message that turns out to be unnecessary.
What belongs in “cost of a miss”
Basement backup claims and cleanup, road closure and detour costs, emergency repairs at premium rates, regulatory exposure where an overflow was avoidable, and the much larger and less measurable cost to public trust.
What this deliberately does not do
It does not monetise life safety, and it does not set your threshold. Where life safety is on the table, the expected-cost framing stops being the right tool and the threshold becomes a policy decision made by people with the authority to make it.
Why it is on the page at all
Because “what should the threshold be?” is the first question every operations team asks, and answering it with a shrug and a default value is how alerting systems end up ignored.
Nobody should be retyping the forecast into a situation report at 03:00.
Every operational period generates a situation report, and in most EOCs it is assembled by hand from a dashboard, a radar loop, three phone calls and somebody's notepad — during the exact hours when the person doing it should be thinking instead of typing. The factual half of a SitRep is mechanical: what fell, what is forecast, what crossed, what closed, what was sent, what is out of service. UrbanFWS writes that half and leaves the half that requires judgement blank, deliberately, so nobody mistakes a generated document for an assessment.
Why the blanks matter
A generated report that also generates the assessment teaches the room to skim it. The four blank fields are the ones a reviewer, a council member or a plaintiff's counsel will actually read, and they are the ones a human has to own. Everything above them is arithmetic that a person adds nothing to except transcription error.
What it plugs into
The same content is emitted as a structured record for your incident management system, so the SitRep in the EOC, the entry in the incident log and the utility's own event record are three renderings of one set of facts rather than three documents that will disagree by morning.
Cadence
Generated on your operational period boundary, on demand, and automatically whenever a life-safety threshold is crossed between boundaries — because the SitRep that matters most is the unscheduled one written at the moment something changed.
Illustrative output with synthetic values. Field names, section order and the operational-period structure are configured to match your existing form during onboarding; nothing here asks an EOC to adopt a vendor's reporting format, because the form is usually the one thing in the room that everyone already knows how to read.
The record writes itself, because nobody writes it at 4 a.m.
Handover notes and after-action reports are the first casualty of a long night, and the joint after-action — the one where two agencies reconcile their versions of the same event — is the first casualty of the handover. UrbanFWS assembles the factual spine automatically for both: what was forecast, what was observed, what fired, who acknowledged, what was drafted and not sent, what was overridden and why. The human contribution becomes judgement rather than transcription, and the two agencies argue about interpretation rather than about whose timestamp is right.
Shift handover packet
Current state of every monitored site, open incidents and their acknowledgement status, what the next twelve hours are forecast to do, and the actions the outgoing shift started but did not finish.
Event chronology
One timestamped sequence covering rainfall, system response, thresholds crossed, notifications sent, acknowledgements, overrides and observed outcomes — exportable whole, in machine-readable form.
After-action scoring
Forecast against observation at every site, lead time actually delivered, misses and false alarms, and the specific threshold or model behaviour that produced each one — assembled before the review meeting rather than during it.
EOC duty officer, public information officer, transportation desk, utility duty officer, pumping supervisor, collections supervisor, plant operator and GIS see different default views of the same record. The underlying data is one set of facts; what differs is which forty of the two hundred sites are on the first screen, and which four numbers are large.
One chronology, two annotations. Each agency marks up the shared timeline with its own observations and findings, and both sets are visible to both. The point is not consensus — it is that the disagreement is on the record next to the timestamps, which is far more useful eighteen months later than a jointly-signed summary in which the disagreement was smoothed away.
Past events replay at full fidelity. A new duty officer can run last September's storm from the beginning, see what the forecast said at each cycle, and make the calls before finding out what actually happened — which is the only realistic way to build judgement about a system that produces a real test four times a year.
The record survives staff turnover. Institutional knowledge about which crossing floods first and which basin responds fastest currently lives in the heads of people who are retiring. Structured event history is the only version of that knowledge which stays after they leave.
Bring both agencies to the same walkthrough.
The most useful onboarding session is a walkthrough of an event both teams still talk about — what each one knew, when, what was decided, who called whom, and where an earlier shared signal would actually have changed the outcome. It works considerably better with the EOC and the utility in the same room, which is also a reasonable rehearsal for the next event.
The failure is almost never hydrologic. It is a phone call that happened forty minutes late.
Read enough flood after-action reports and a pattern appears that has nothing to do with models. The utility knew the interceptor was surcharging before the EOC knew the streets would flood. The EOC closed a road the utility needed to reach a lift station. Two agencies issued two messages an hour apart with two different footprints, and the public averaged them into indecision. None of that is a forecasting problem. All of it is an interface problem — and an interface is something you can specify, test and exercise, which is exactly what this section is about.
One picture, filtered per role
Not one dashboard that both agencies are told to love. One data layer, one clock, one set of thresholds, rendered as the EOC's board and as the utility's control-room screen — so a number quoted in one room means the same thing in the other, and the difference between the two views is what is on the first screen, never what is true.
Cross-agency triggers, written down
“Tell them if it gets bad” is not a trigger. A trigger is a named quantity, a threshold, a direction and a recipient — evaluated every cycle whether or not anybody remembers the arrangement exists, and logged when it fires so the arrangement can be reviewed rather than relitigated.
One chronology, two annotations
After the event both agencies mark up the same timeline. Where they disagree, both readings sit next to the timestamp. A jointly-signed summary that smoothed away the disagreement is worth far less eighteen months later than the disagreement itself, preserved.
Every decision in a flood belongs to exactly one organisation. Most of them are not obvious.
The grid below is the one artefact worth producing before any software is installed, and it is the one most jurisdictions have never written down. Each row is a decision that gets made during a wet-weather event; each column is who does what about it. The rows to argue about are the ones where the letters are not what your staff assumed — road closure, drawdown timing and the public message about sewage in flood water are the three that produce the most surprise in the room.
| Decision | Emergency management | Water utility | Public works / DOT | NWS forecast office |
|---|---|---|---|---|
| Issue a flood watch or warning | I informed | I informed | I informed | R/A issues |
| Send a local public alert (WEA / EAS) | R/A sends | C on content | C on closures | C deconflict |
| Step the EOC up an activation level | R/A | I liaison | I | I |
| Close a road segment or underpass | C requests | I access impact | R/A closes | I |
| Begin storage or tunnel drawdown | I | R/A | I | I |
| Stage bypass pumping | I | R/A | C access | I |
| Notify the public of sewage in flood water | C channel | R/A content | I | I |
| Open shelters and move vulnerable residents | R/A | I service impact | C routes | I |
| Request mutual aid (crews, pumps, swiftwater) | R/A for response | R/A for utility aid | C | I |
| Declare the overflow event and start the clock | I | R/A | I | I |
| Issue the all-clear and cancel the alert | R/A | C system state | C reopening | C |
| Sign the joint after-action report | R/A jointly | R/A jointly | C | I |
What crosses the boundary, in which direction, and on what condition.
This is the part of a shared operating picture that actually does work. Not a common map — a schedule of specific facts that move between two organisations automatically, each with a named trigger, a direction and a recipient. Every one below is a real coordination failure that shows up repeatedly in flood after-action reports, converted into a condition a machine can evaluate at 02:40 without anyone remembering to make a call.
Subscriptions, not screen-sharing
Each agency subscribes to a defined list of facts from the other, at a defined granularity. Nothing else crosses. A utility does not get the EOC's staffing roster and an EOC does not get the utility's maintenance backlog — because a sharing arrangement that hands over everything is the one that gets switched off after the first awkward records request.
Written into an agreement, then into the system
The schedule above is an appendix to a data-sharing agreement or memorandum of understanding before it is a configuration file. The configuration is generated from the agreement and versioned with it, so what the system does and what the two agencies agreed it would do cannot silently drift apart.
Exercised, not assumed
Every trigger can be fired against a historical storm in a test environment on a schedule. The failure you find in an exercise is a certificate, a stale phone number or a role nobody currently holds — and it is far cheaper to find it in March than during the event.
The same facts, on two very different screens.
A shared picture does not mean a shared screen. The EOC needs streets, blocks, facilities and people, ranked by time remaining. The utility control room needs nodes, freeboard, setpoints and volumes, ranked by what will alarm first. Handing both of them one compromise interface produces a screen neither agency uses, which is how a common operating picture ends up being a projector nobody looks at. UrbanFWS derives both views from one state, and puts the small overlap — the cross-agency triggers — in the same place on both.
What is cut, and when. Road segments and access routes ranked by time to closure, with the hospital and shelter routes pinned to the top regardless of rank.
Who is exposed. Blocks, care facilities and registered vulnerable residents inside the forecast wet edge, with population counts and the notification rounds each would need.
What is drafted. Public alert drafts waiting at the gate, with their polygons, their coverage counts and how long they have been waiting.
Utility state that has an EM consequence. Storage fullness, regulator activations, supply advisories — the eight facts from the schedule above, and nothing else from the utility's world.
What alarms first. Lift stations and nodes ranked by time to setpoint, with the trajectory and the available drawdown next to each.
What the system is carrying. Interceptor hydraulic grade line and freeboard, storage against forecast volume, and forecast peak influent at the plant with its arrival time.
What has to be reported. Open overflow records with start times, receiving waters and running volume estimates.
EM state that has a utility consequence. Activation level, closed and forecast-to-close segments on crew routes, public alerts sent — so the control room is never the last to know.
The neighbours, the region and the people who arrive to help.
Urban flooding rarely respects a jurisdictional boundary, and the basin upstream is somebody else's problem right up until it is yours. The same mechanism that connects an EOC to its utility connects a jurisdiction to the ones on either side of it, at whatever granularity the agreements allow.
Upstream and downstream jurisdictions
A neighbouring basin's forecast state, shared at the level its owner permits — sometimes the full hydrograph, sometimes only a threshold state. Inter-basin awareness is worth most in exactly the case where it is hardest to arrange: the neighbour is about to hand you their water, and the person who knows it is busy.
Federated · permission-scoped · no shared loginRegional and state emergency management
Roll-up views that aggregate local exposure into the picture a state watch centre or a regional council needs, without requiring every local agency to standardise its thresholds or hand over its raw sensor data.
Aggregated · locally authored thresholds preservedMutual aid and incoming crews
A crew that arrived four hours ago from two counties away does not know which crossings flood first, and the person who does is on hour nineteen. Assignment packets carry the local knowledge with them: the asset, the threshold, the access route that is still open, and the observed history of that location.
Assignment packets · local knowledge travelsThe forecast office
Local observations and threshold crossings, shared back to the NWS forecast office in the formats it can use, alongside a standing display of active official products. The relationship worth building is not a data feed; it is a shared vocabulary before the event, so the deconfliction call during it is thirty seconds long.
Two-way · official products always displayedWrite the interface before you buy the software.
The responsibility grid and the trigger schedule above are useful to your two agencies whether or not you ever install anything. We will run that session with you — a couple of hours, both organisations in one room, working from a storm you both remember — and you keep the artefacts either way.
Do not take our word for it. Read the record.
Every forecast UrbanFWS issues is stored with the time it was issued and the model version that produced it. When the observation arrives, the two are matched automatically. Nothing is re-scored after the fact, nothing is quietly dropped for being an outlier, and the resulting numbers are visible to both agencies continuously — not assembled for a renewal meeting, and not filtered by whichever organisation holds the contract. This page is the part of the product we would want to see first if we were buying it, and the part a procurement officer should ask about before the demo.
Both panels are synthetic demonstrations of the format, not achieved results. A reliability curve below the diagonal means the forecast is over-confident — when it says 70% it should be right about 70% of the time, and if it is right 45% of the time that is a defect to be corrected, not a presentation to be reframed. Baselines are shown deliberately: a flood model that cannot beat persistence at three hours and climatology at three days has not demonstrated anything, and any vendor unwilling to show those two lines should be asked why.
Named, defined, and computed the same way every time.
Flood verification is full of numbers that sound similar and mean different things. These are the definitions UrbanFWS uses, stated once so that a score can be compared across sites, seasons, agencies and vendors without a translation step. Two agencies scoring the same event with two different definitions of a hit is not a disagreement about performance; it is a disagreement about arithmetic, and it is astonishing how far into a review meeting it can survive undetected.
| Metric | Definition | What it is good for | How it misleads |
|---|---|---|---|
| POD Probability of detection | Hits ÷ (hits + misses) | The share of real events you were told about. The number a public-safety audience cares about most. | Trivially driven to 1.0 by alerting constantly. Meaningless without FAR beside it. |
| FAR False alarm ratio | False alarms ÷ (hits + false alarms) | The share of alerts that were wrong. The number that predicts whether people keep answering. | Trivially driven to 0 by never alerting. Meaningless without POD beside it. |
| CSI Critical success index | Hits ÷ (hits + misses + false alarms) | Combines both sides into one number. Ignores correct quiet periods, which is appropriate for rare events. | Hides the trade-off it summarises. Two very different operating points can share a CSI. |
| Lead time Median, on hits | Time from first qualifying alert to observed threshold crossing | The only metric that maps directly onto what a crew can actually do. | Computed on hits alone, so a system that misses hard events can post a flattering lead time. |
| Peak timing error | Forecast crest time minus observed crest time | Reveals systematic early or late bias that mean error conceals entirely. | Undefined for events with a flat or multi-peaked crest; reported with the crest shape noted. |
| Peak magnitude error | Forecast crest stage minus observed crest stage | What matters for depth, exposure and closure decisions. | Small absolute errors can be large relative errors on shallow, flashy sites. |
| Brier skill score | Brier score against a climatology reference | Scores the probability itself, not just the yes/no decision derived from it. | Dominated by the many quiet periods unless events are stratified out. |
| Reliability | Observed frequency within each forecast-probability bin | Tests whether a stated probability means what it says. Directly checks over-confidence. | Needs a large sample per bin; thin bins produce noisy curves that invite over-reading. |
Including the ones we got wrong.
Every event above a configured significance is scored individually and kept. Misses and false alarms are shown at the same size and in the same list as hits, because a record that surfaces only successes tells you nothing about what will happen on the night that matters. Events on which a public alert was drafted are scored twice — once as a forecast and once as a warning decision — and the drafts an official declined are scored too, because “the system said send and the human said no, and the human was right” is a finding worth having on the record.
Synthetic composite. Seasonal structure like this is normal and worth stating plainly: summer convection is harder to forecast than a winter frontal passage, so error grows and lead time shrinks. Thresholds and staffing postures should differ by season for exactly this reason, and UrbanFWS reports the seasonal breakdown rather than a single annual average that conceals it.
Overflows are scored the same way everything else is.
For a combined system, the forecast that gets reported to a regulator is the one about outfall activation and volume — so it is verified against the telemetry with the same discipline as stage. Every activation, and every non-activation, ends up on this chart.
Synthetic record. Volume error matters less than activation skill: a utility can live with a volume estimate that is thirty percent high, and cannot live with an activation nobody saw coming. That is why the two axes carry the misses and false alarms as explicit shapes rather than dropping them for being un-plottable.
What counts as an activation
Telemetry at the regulator, where it exists — a level crossing the weir with a duration filter to reject spikes. Where an outfall is not instrumented, activation is inferred from the hydraulic model and is labelled inferred, never presented as measured.
Why non-activations are scored too
Because a system that forecasts activation on every storm would score perfectly on hits and be useless. The false-alarm column is the one that determines whether anybody pre-positions anything.
What goes to the regulator
The observed record, with the forecast kept alongside it. Whether and how the forecast is referenced in a regulatory submission is the utility's decision and its counsel's — UrbanFWS produces the evidence, not the filing.
Your record stays empty until your catchments are on the grid.
Every figure on this page is a synthetic demonstration of a format. The only verification numbers worth anything to your agency are the ones computed on your basins, your sensors and your thresholds — and those do not exist until UrbanFWS has run through a season with you. We will not show you someone else's scores and imply they are yours, and you should treat any vendor who does as having answered a different question from the one you asked.
The equations, the solver, and the numbers we can be held to.
This page is the technical appendix, published rather than promised. It states the governing equations UrbanFWS solves, the scheme it solves them with, the tolerances it holds itself to, how the models are trained and split, what the system is measured against, and where it is known to be weak. None of it is behind a signature.
There is a reason to put this in public. A flood-warning system is bought on trust, used at three in the morning, and paid for with public money under procurement rules that expect a defensible basis for award. Marketing claims cannot be falsified. A stated Courant cap, a named friction formulation, a published train–test protocol and a reproducibility guarantee all can — which is exactly why they are worth writing down, and why an agency can lift them into a specification and hold whoever wins to them, including us.
Symbols, once, so nothing below is ambiguous.
Hydraulics and machine learning both reuse the same two dozen letters for different things. This is the dictionary the rest of the page is written in. Internal computation is in SI; presentation is in US customary units, and the conversion happens in exactly one place.
| Symbol | Quantity | Unit |
|---|---|---|
| A | Flow area of the wetted cross-section | ft² |
| Q | Discharge | ft³/s |
| h | Water-surface elevation (hydraulic head) | ft |
| V | Section-mean velocity, Q/A | ft/s |
| R | Hydraulic radius, A/P | ft |
| T | Top width — free surface, or the slot when full | ft |
| S0 | Bed slope | ft/ft |
| Sf | Friction slope | ft/ft |
| n | Manning roughness coefficient | s/ft1/3 |
| qL | Lateral inflow per unit length | ft³/s per ft |
| a | Pressure-wave celerity in the Preissmann slot | ft/s |
| c | Surface-wave celerity, √(gA/T) | ft/s |
| g | Gravitational acceleration | 32.174 ft/s² |
| Δx, Δt | Spatial and temporal discretisation step | ft, s |
| C | Courant number | — |
| Symbol | Quantity | Unit |
|---|---|---|
| i(t) | Rainfall intensity | in/h |
| F | Cumulative infiltration | in |
| Ks | Saturated hydraulic conductivity | in/h |
| ψ | Wetting-front suction head | in |
| Δθ | Soil-moisture deficit | ft³/ft³ |
| Rk | RTK capture fraction, k-th reservoir | — |
| Cw, Cd | Weir and orifice discharge coefficients | — |
| Z | Radar reflectivity factor | mm⁶/m³ |
| Kdp | Specific differential phase | °/km |
| xf, xa | Forecast and analysis state vector | mixed |
| P | State error covariance | mixed |
| K | Kalman gain | — |
| σ | Standard deviation of a forecast distribution | ft |
| p | Forecast probability of exceedance | — |
| C/L | Cost-to-loss ratio for an action | — |
Twenty-two equations, and what each one commits us to.
Every equation below is standard. That is the point: none of this is a secret, and a vendor claiming a proprietary alternative to conservation of momentum should be asked to write it down. What separates one implementation from another is which terms are kept, which are dropped for speed, and whether the dropped ones are disclosed. Ours are, in the note under each.
A · Conveyance and pressurisation
What the water in a pipe or a channel is obliged to do. UrbanFWS solves these; it does not learn them. A network model that cannot conserve mass has no business issuing a warning.
where A is flow area, Q discharge and qL lateral inflow per unit length.
Water that enters a reach and does not leave it raises the surface. Every solver claims this; the test is the reported continuity error at the end of a run, which is on the specification sheet below.
h is water-surface elevation, Sf friction slope, S0 bed slope.
The full dynamic form, kept rather than simplified. Kinematic and diffusive approximations drop the first two terms and with them backwater, surcharge propagation and flow reversal — which is to say, the three things a combined system does during the storm you care about.
k = 1.486 ft1/3/s in US customary units, 1.0 in SI; R = A/P.
The Q|Q| product, not Q2: it keeps the sign of the resistance correct when flow reverses, which it does upstream of a surcharged junction. Manning’s n is the one honestly empirical term in this group and it absorbs structural error, so it is reported as a calibrated parameter with its range, never as a measured property.
Af is the full-pipe area; c the wave celerity used in the step limit below.
A pipe running full is no longer a free-surface problem, and switching governing equations mid-storm is where models fall over. The slot keeps one set of equations by adding a notional gap of width Ts above the crown, sized so the free-surface celerity equals the pressure-wave celerity a. For a 5-foot pipe at a = 150 ft/s the slot is about a third of an inch wide — narrow enough not to store meaningful volume, wide enough to keep the solve stable.
Δx is the reach length, Δt the time step.
The Courant number: how far information travels in one step, in cells. An explicit scheme diverges above 1. The implicit box scheme UrbanFWS uses is stable well beyond it but not accurate beyond it, so the cap is set on accuracy grounds and stated. The figure below computes the difference rather than asserting it.
B · Loading — how rain becomes flow
The largest single source of error in a collection-system forecast is not the hydraulics. It is how much of the rain arrives in the pipe, and when.
Ks saturated conductivity, ψ wetting-front suction, F cumulative infiltration.
Physically based rather than a curve number, because the antecedent term Δθ is a state the system can actually carry forward between storms. Two identical rainfalls a week apart do not produce identical runoff, and a model with no soil-moisture state cannot express that.
i(τ) is rainfall intensity; uk the unit response of reservoir k.
The RTK formulation: three linear reservoirs standing for the fast, medium and slow paths by which rain reaches a sanitary pipe it was never meant to enter. ∑Rk is the capture coefficient — the fraction of rain on the sewershed that ends up in the sewer — and on an old system it is the number that decides whether the interceptor surcharges.
ds is depression storage, i rainfall intensity, f infiltration.
How a subcatchment sheds water in SWMM: each subarea is a reservoir that ponds to its depression storage and then drains over a Manning surface. The exponent is what makes it nonlinear, and it is why a parking lot responds in nine minutes and the lawn beside it takes forty. The width W is a shape parameter, not a survey measurement — it stands for the length of the overland flow path, and it is one of the two or three numbers a calibration actually moves.
Γ is the gamma function; time to peak is (k−1)β.
A two-parameter gamma kernel, so the shape parameter k and the scale β separate how quickly a basin responds from how long it takes to drain. Both are fitted per sewershed from observed flow monitoring, and both are shown to you with their confidence, not buried.
t is cumulative wet time; f0 and f∞ the initial and final capacities.
The other infiltration option, and the one most legacy models are calibrated in. Its antecedent memory is short — at a decay constant of 4/hr the capacity is at its floor within twenty minutes — so a wet catchment is represented by a reduced parameter set, not by the equation remembering last week. Where the antecedent state genuinely drives the answer, Green–Ampt with an explicit moisture deficit or the groundwater module is the honest choice, and the figure on the runoff page shows the difference between them on the same storm.
C · Hydraulic structures
Regulators, weirs, gates and pumps are where a collection system's behaviour is decided, and where a model that treats them as generic nodes stops being useful.
L weir length, H head over crest, Ao orifice area, Δh head difference.
Two different exponents, which is why substituting one for the other quietly ruins a diversion forecast. A regulator is usually both — orifice at low head, weir once it drowns out — and the transition is where CSO activation actually begins.
Hu, Hd are upstream and downstream heads on the crest.
When the receiving water rises, the weir stops behaving like a weir. Ignore this term and a model will happily forecast a diversion into a river that is already higher than the weir crest — a failure mode that appears exactly during the events you built the system for.
Aw wet-well plan area, Qp(h) the pump curve against system head.
A wet well integrates. That single fact is why a station can be comfortably inside its firm capacity for an hour and then flood the street: level is the running integral of the imbalance, not a function of the current inflow. Every pump figure on this site is driven by this equation rather than by a drawn curve.
D · Surface water
Once water leaves the system it is a two-dimensional problem, and the thing being forecast changes from a flow rate to a depth at an address.
h depth, (u,v) depth-averaged velocity, z bed elevation, τ bed shear.
Solved with an HLLC flux and a second-order limited reconstruction, because a first-order scheme smears the wet–dry front and a naive second-order one oscillates at it. The inundation surrogate described in the AI & ML section is trained on the output of this solver, not on the observations directly — the physics generates the labels.
E · Observation, bias and assimilation
The measurement is not the truth either. Radar estimates rainfall indirectly, gauges measure one point exactly, and the two disagree; the arithmetic of reconciling them is stated here rather than described as proprietary.
Z in mm6/m3, R in mm/h, Kdp in degrees per kilometre — reflectivity is defined in these units, so this one equation stays metric and its output is converted to in/h before it leaves the block.
A power law with regime-dependent coefficients — roughly a=300, b=1.4 in convection and a=200, b=1.6 in stratiform rain. Choosing the wrong pair can be a factor-of-two error in rate, so the regime is classified per scan rather than fixed, and where dual-polarisation is available the Kdp estimator is preferred in heavy rain because it is nearly immune to attenuation and partial beam blockage.
Gi, Ri are paired gauge and radar accumulations in window W.
A mean-field bias over a moving window, applied multiplicatively to the radar field, with the window long enough to be stable and short enough to track the storm. The adjustment is logged with every QPE grid: if a single mis-sited gauge is dragging the whole field, that has to be visible after the fact, not inferred.
xf forecast state, y observation, H the observation operator.
The analysis is the forecast plus a fraction of its disagreement with the observation. That fraction — the gain — is set by the ratio of model to sensor uncertainty, so a noisy sensor moves the state less than a trusted one, automatically, without anyone editing a config. The gain is capped so that one failed sensor cannot drag a whole reach.
Pxy, Pyy are ensemble covariances; R the observation-error covariance.
Computed from the spread of the ensemble rather than from a fixed matrix, which is what lets the correction propagate to unobserved parts of the network: if the ensemble says two manholes rise together, an observation at one moves the estimate at the other. The normalised innovation is monitored; when it drifts from unity, one of the two uncertainties is mis-specified and it is a defect, not noise.
F · Scoring and the decision
A probabilistic forecast has to be scored as a probability. These are the losses the models are trained on and the scores the record is kept in — deliberately the same ones, so that nothing is optimised for one number and reported in another.
F is the forecast CDF, y the observation, 1{·} the indicator function.
The distributional analogue of absolute error: it collapses to exactly mean absolute error when the forecast is a single value, so a probabilistic system and a deterministic one can be compared on one axis without a translation step. Lower is better; it is reported in feet, which is a unit an operator can argue with.
τ is the target quantile; nine are fitted, from 0.05 to 0.95.
Deliberately asymmetric, and that asymmetry is the point: for a flood forecast, under-predicting a crest is not the same kind of mistake as over-predicting one. The upper quantiles are weighted more heavily in training, and the weighting is published rather than tuned quietly.
pi the issued probability, oi the outcome, 0 or 1.
Skill is meaningless without the reference, so the reference is always named: climatology at long lead, persistence at short lead. A system that cannot beat “the river will be where it is now” at three hours has demonstrated nothing, and any vendor unwilling to plot that line should be asked why.
p is the forecast exceedance probability for the threshold in question.
The cost–loss rule. If acting costs C and being caught out costs L, the expense-minimising threshold is their ratio — which means the threshold is a policy decision about your costs, not a model output. UrbanFWS computes p. The utility sets C/L, in writing, with the consequences of each choice shown before it is committed.
What is deliberately absent. There is no equation here for the alert decision, because there is not one: the threshold is a policy the utility writes, evaluated against the probability the models produce. There is also no term for sediment transport, water quality or structural scour — UrbanFWS does not model them and does not imply that it does. A specification is as much a list of what a system declines to claim as of what it computes.
A discretisation is a modelling choice. Here is ours, and what it costs.
Two vendors can solve the same equations and disagree by a foot, because the answer depends on the step sizes and the scheme as much as on the physics. The figure below is not an illustration of that idea — it integrates the advection equation in your browser, with the step sizes you choose, and draws what comes out. Move the time step and watch a crest lose its peak, drift late, or diverge outright.
Read the peak-retained number, not the picture. Three results here are worth more than any claim on the rest of this site, because you can reproduce all three. One: the implicit box scheme is unconditionally stable and, at a coarse time step, quietly returns a crest at half its true height — nothing looks wrong, which is what makes it the dangerous failure. Two: drop θ to 0.5 and the damping disappears entirely, but the error has not gone anywhere — it reappears as ringing, and the scheme invents negative water ahead of the crest. Three: the explicit scheme is at its most accurate exactly at C = 1, where its numerical diffusion vanishes, and diverges immediately above it. An optimum that sharp is unusable in production, which is the entire reason operational models are implicit and the entire reason UrbanFWS caps the Courant number on accuracy rather than stability.
Conduit network solver
One-dimensional, full dynamic wave, applied to the pipe and channel network.
Two-dimensional surface solver
Runs offline to generate inundation training data; runs online only when the surrogate declines.
The model is wrong, the sensor is wrong, and the arithmetic for combining them is not a secret.
A forecast that ignores the level sensor is a simulation. A forecast that simply adopts the level sensor is a chart recorder. What UrbanFWS does between those two is one line of algebra — equation KF above — and the only thing that matters is where the gain comes from. Drag the sensor uncertainty and watch the correction change size.
The gain is the whole argument. Set the sensor uncertainty low and the analysis snaps onto the observation, which feels responsive and will chase every spike a fouled sensor produces. Set it high and the model ignores real information. Neither number is a preference: both are estimated from the residual record and audited, and the normalised innovation is the audit — if it persistently exceeds one, the stated uncertainties are too small and the system is over-confident, which is a defect with a ticket, not a tuning taste. The gain is also capped per sensor, so a single transducer that fails high cannot drag an entire reach with it.
Where the error comes from, by lead time — and which parts we could ever fix.
Total error is the least useful number in forecasting, because it hides which term is responsible. Decompose it and the strategy becomes obvious: at short lead the state estimate dominates and better sensors pay; past twelve hours the rainfall forecast dominates and no amount of hydraulic refinement will help. Switch a source off below to see the ceiling it imposes.
Synthetic magnitudes, real structure. The shapes are what matter and they are not arbitrary: initial-state error peaks a few hours out because that is how long the basin remembers where it started, and rainfall error grows superlinearly because a forecast rainfall field decorrelates faster than it accumulates. The honest consequence is on the counterfactual chips. Perfect sensors barely move the 24-hour curve; a perfect rainfall forecast nearly flattens it. Anyone selling a 48-hour street-level flood forecast is, whether they say so or not, selling you a rainfall forecast — and should be asked to show its verification, not the hydraulic model’s.
Why the surrogate exists, arithmetically rather than rhetorically.
A two-dimensional hydraulic solve is not slow because the code is bad. It is slow because halving the cell size quadruples the cells and doubles the number of steps the stability condition allows — so cost grows roughly with the three-halves power of the cell count while a forward pass through a trained surrogate grows linearly. That single exponent is the entire reason street-level inundation can be produced inside a five-minute cycle. Move the resolution and read the numbers.
Indicative scaling, not a benchmark. The constants depend on hardware nobody should take on trust from a web page; the exponents are properties of the algorithms and do not. The honest reading is the uncomfortable one: the surrogate is not more accurate than the solver — it is an approximation of it, and it is used because an exact answer that arrives after the water does is worth nothing. That trade is stated on every inundation product, the surrogate is scored against the solver it was trained on, and where a storm falls outside its training envelope the system says so and falls back rather than extrapolating quietly.
Offline: generating the training set
The surrogate learns from the physics solver, not from observations. This is what standing that data up costs.
Online: the five-minute cycle
What the wall clock is spent on between a radar sweep landing and a phone ringing.
Which uncertain input actually moves the answer.
Calibration effort is finite, so it should go where the derivative is largest. This is a one-at-a-time screening: each input is perturbed across its plausible range with everything else held at its central value, and the effect on the chosen response is plotted. The result reorders most people’s intuition — roughness gets argued about in meetings, and rainfall dominates it by a factor of four.
One-at-a-time screening has a known blind spot, so here it is. Varying inputs individually cannot see interactions, and in a collection system the interactions are real — tailwater and pump capacity matter enormously together and hardly at all apart. Screening is the cheap first pass used to decide what to instrument; a variance-based decomposition over the joint distribution is what actually gets run before a calibration is signed off, and it is reported with its sample size and convergence. A vendor that shows you a tornado chart and calls it a sensitivity analysis has done the first ten percent of the work.
How the models are split, fitted and calibrated — the part that decides whether a score means anything.
Almost every implausible accuracy claim in this field traces back to the same two mistakes: a random train–test split on autocorrelated data, and features computed from information that was not available when the forecast would have been issued. Both inflate scores enormously and neither is visible in the result. The protocol below exists to make them impossible rather than unlikely.
Splitting
The single most common way to produce a number that will not survive contact with a storm.
Point-in-time correctness
A feature the model could not have had is a feature the model does not get.
Fitting
Stated so the numbers below can be reproduced rather than admired.
Calibration and coverage
A probability that does not mean what it says is worse than no probability.
Timing targets, stated as objectives with a measurement method attached.
A latency number without a definition of where the clock starts and stops is decoration. Each objective below names both ends of the interval and how it is instrumented. The right-hand column stays empty until UrbanFWS is running on your infrastructure, because the only measured values worth quoting to you are your own.
| Objective | Target | Clock starts / stops | Your measured value |
|---|---|---|---|
| Radar frame to QPE grid | ≤ 45 s | Volume-scan completion timestamp → adjusted grid written | — |
| QPE to forecast issued | ≤ 90 s | Grid written → ensemble forecast committed with its version hash | — |
| Forecast to alert decision | ≤ 5 s | Forecast committed → rule evaluation returns | — |
| Decision to first channel dispatched | ≤ 15 s | Decision recorded → first provider accepts the message | — |
| End to end — sweep to phone | ≤ 3 min | Volume-scan completion → carrier acceptance of the first notification | — |
| Cycle cadence | 5 min | Alarm on two consecutive missed cycles; degradation posture on three | — |
| API read latency | p95 ≤ 250 ms | Request received at the edge → last byte sent | — |
| Availability, alerting path | 99.9% / month | Synthetic end-to-end probe every 60 s from three regions | — |
| Recovery point / recovery time | RPO 5 min · RTO 30 min | Measured by scheduled failover exercise, not by assertion | — |
| Forecast retention | 7 years | Every issued forecast, with inputs and model hash | — |
An error budget is a policy, not a statistic. Publishing 99.9% means committing to stop shipping when the budget is three-quarters spent — which is the part that is actually hard, and the part worth asking about. It also means being explicit that the alerting path and the analytics path have different budgets: a dashboard that is slow during a storm is an annoyance, and a notification that does not go out is the whole product failing.
Degradation, in order
Each step is automatic, announced on the product, and logged. Nothing silently substitutes a worse input for a better one.
1 — Radar unavailable
Fall back to gauge-interpolated rainfall, widen the intervals, mark every affected product as degraded.
2 — Telemetry partially lost
Assimilation proceeds on the remaining sensors with an inflated state covariance. Reaches with no observation are labelled model-only.
3 — Surrogate out of envelope
Inundation reverts to the physics solver at reduced resolution, or is withheld with a reason if the cycle cannot carry it.
4 — Forecast pipeline down
Threshold alerting continues directly from live telemetry. Lead time collapses to zero and the product says so in those words.
5 — Everything down
The on-call number in your runbook, and a documented manual procedure that does not require this product to work.
Any forecast we ever issued, re-run bit for bit.
After an event there is a meeting, and in that meeting somebody asks what the system was saying at 02:40 and why. The only satisfactory answer is the forecast itself, its inputs, and the exact code that produced it — not a reconstruction, not a screenshot, and not a re-run against today’s model that quietly gives a different answer. Every issued forecast is stored as a manifest of content hashes, and re-running it is a single command.
Three things this makes possible, and one it makes impossible. It supports an honest after-action review, an audit that does not depend on trusting us, and a regression test that replays a real historical storm against a candidate model before it ships. What it makes impossible is quietly improving a past score — the manifest is written when the forecast is issued, the match is automatic when the observation lands, and a scored event is never reopened. If you want the number to be better next time, the only available route is a better forecast.
Twelve questions to put to every flood-forecasting vendor. Including us.
These are not gotchas. Each one is answerable in a sentence by anyone who has actually built the thing, and each one is close to unanswerable by a system assembled out of a dashboard and a rainfall API. We publish them because a market where these questions get asked is a market we would rather compete in — and because a specification you can hold us to is worth more than a claim you cannot.
| Ask | Why it separates the field | What a weak answer sounds like | Ours |
|---|---|---|---|
| Show the reliability diagram for your probabilities. | Anyone can emit a number between 0 and 1. Only a calibrated system can show that 70% means 70%. | “Our model is 95% accurate.” | Verification |
| Plot your skill against persistence and climatology, at every lead time. | Skill without a baseline is not skill. Most flood models lose to persistence inside two hours. | “We benchmark internally against our earlier models.” | Verification |
| Show me the misses. | The distribution of failures is the product. A record with no misses has been curated. | “Here are three case studies.” | Event scorecards |
| How is the train–test split constructed? | A random split on autocorrelated hydrology inflates every score, invisibly and enormously. | “Standard 80/20 split.” | Splitting |
| Prove no feature used information unavailable at issue time. | Latency leakage is the second-largest source of unearned accuracy, and it never shows up in a chart. | “We use the historical archive.” | Point-in-time correctness |
| Where does the model decline to answer? | Every model has an envelope. The ones that never say so extrapolate silently on the night it matters. | “It works everywhere.” | Out of distribution |
| Which decision is learned, and which is a rule? | An alerting threshold is a policy about the utility’s costs. A model cannot own it and no regulator will accept that it does. | “The AI decides when to alert.” | The rule composer |
| What is the end-to-end latency, sweep to phone, and where does the clock start? | Undefined endpoints are how a 3-minute claim becomes 11 minutes in practice. | “Real-time.” | Service objectives |
| Reproduce a forecast from fourteen months ago, bit for bit. | If it cannot be replayed, no after-action review is possible and no audit means anything. | “We can re-run it with the current model.” | Forecast manifest |
| What happens when the radar feed dies mid-storm? | The degradation path is where systems either announce their limits or quietly invent numbers. | “We have redundancy.” | Degradation, in order |
| What is the cost model behind the threshold, and who owns it? | Every threshold implies a cost–loss ratio. If nobody wrote it down, somebody chose it by accident. | “Industry-standard thresholds.” | Decision economics |
| What happens to our data at the end of the contract? | Exit terms reveal how a vendor thinks about the relationship more reliably than any reference call. | “We’ll work with you on that.” | Data ownership |
Every assumption above, and where it bites.
A model is a set of assumptions with a user interface attached. These are ours, kept as a live register rather than a disclaimer, because an assumption you know about is a risk you can manage and an assumption you inherit silently is the one that ends up in the after-action report.
| Assumption | Where it stops holding | What we do about it |
|---|---|---|
| Design rainfall statistics are stationary | Where the local record shows the intensity distribution shifting, a “10-year” storm is not a 10-year storm any more. | The atlas edition is named on every figure that uses it, and the observed record is plotted against it so the drift is visible rather than assumed away. |
| One-dimensional flow in conduits | Complex junctions, hydraulic jumps, and any structure where the flow is genuinely three-dimensional. | Loss coefficients calibrated to observation at those structures, and the structures flagged in the model as approximations rather than resolved geometry. |
| The DEM resolves what matters | Curb inlets, gratings, driveway crowns and small walls all sit below a 3 ft grid and all redirect real water. | Inlet capacity curves per structure from the asset layer; sub-grid features surveyed where a repeat complaint says they matter. |
| The network is as-built and unblocked | Debris, sediment, a collapsed lateral, a contractor’s plug nobody recorded. | Blockage is offered as a scenario, never a forecast. Persistent model–observation residuals at one structure raise an inspection, which is often how a blockage is found. |
| Radar rainfall is accurate over the basin | Far range, beam blockage, bright band, hail contamination, and the last mile before the storm reaches the gauge network. | Regime-dependent Z–R, dual-polarisation estimators in heavy rain, mean-field bias against gauges, and the adjustment logged with every grid. |
| The surrogate generalises | Any storm outside the envelope its training set was sampled from — which includes the record-breaking one. | An explicit envelope check per cycle, fallback to the physics solver, and a labelled product rather than a silent extrapolation. |
| Manning’s n is a roughness | In practice it is a lumped calibration parameter that absorbs every structural error in the reach. | Reported as a calibrated parameter with its range and its fitting record, and never used to explain away a residual that has a physical cause. |
| Sensors are telling the truth | Drift, fouling, ice, a stilling well silted to the transducer, a datum shifted by a maintenance visit nobody logged. | Automatic fault screening, per-sensor gain caps in assimilation, and a health surface on the operations page rather than a hidden filter. |
| There is enough data to learn from | Three years of record on a small flashy basin may contain four qualifying events. That is not a regularisation problem. | Physics carries the extrapolation and machine learning corrects within it; scores are reported with their event counts, and a thin record is stated as a thin record. |
| People will act on the alert | The failure mode is social, not technical: a system that cries wolf is switched off inside a season, and then the lead time is irrelevant. | Alert fatigue is treated as a first-class metric, thresholds carry an explicit cost–loss rationale, and the quiet-hours and escalation policy is the utility’s to write. |
Why publish this at all
Because the alternative is discovering it together during an event. Every item here is known to anyone who has built one of these systems; the only question is whether it is written down before the storm or reconstructed after it.
It is also the fastest way to have a serious conversation. An engineer reading this page can tell within a minute whether we understand their system — and if we have missed something that matters on their network, we would rather hear it in the first meeting than the third.
What would change our mind
Each assumption above is falsifiable on your data. If flow monitoring shows the capture coefficient is stable where we assumed it varies, or the residuals at a structure are systematic rather than random, the model changes — and the change is versioned, hashed and visible in the record, not applied quietly between releases.
The register is reviewed at every model freeze and is part of the deliverable. It is not marketing copy that ages; it is a document with a revision history.
Bring us your hardest reach.
The most useful first meeting is not a demo. It is an hour with your engineer, your network model and the storm that embarrassed you most recently — and a straight answer about which parts of this specification would actually help.
Nobody needs another dashboard nobody opens.
UrbanFWS has an operations interface, and on a quiet Tuesday nobody will be looking at it. On a bad Tuesday an EOC will be looking at its incident management system and a control room will be looking at SCADA, and neither will have a spare monitor. So the platform is built API-first: everything visible in the interface is available as a documented endpoint, a webhook, a standards-compliant message or a file in a format your existing tools already read. The goal is for UrbanFWS to show up inside the systems your people are already watching, on both sides of the boundary.
Webhooks
Signed JSON on every incident open, amend, escalate, acknowledge and close. At-least-once delivery with retry and replay, so a downstream outage does not silently lose an event.
REST API
Forecasts, observations, thresholds, incidents, exposure and verification. Cursor-paginated, versioned, OpenAPI-described, with sensible rate limits and a sandbox that returns synthetic data.
CAP 1.2
Common Alerting Protocol output for your IPAWS-compatible origination software, mass-notification platforms and EOC systems — carrying the polygon, both WEA character bodies, the long form and the evidence reference. Emitted under your authority, your COG and your approval workflow, never ours.
Incident management systems
Structured incident, task and situation-report records for the platform your EOC already runs — WebEOC-class boards, incident feeds, and ICS-shaped exports — so the EOC log and the UrbanFWS event record are one chronology rather than two that disagree by morning.
CAD & mass notification
Closure and exposure records into computer-aided dispatch so a call-taker sees which routes are cut, and into opt-in mass-notification platforms for subscriber messaging that does not require IPAWS permissions.
OGC services & Esri
WMS, WMTS and OGC API – Features for the rainfall grid, depth grid and exposure layers; plus feature services and file geodatabase exports for ArcGIS Pro and Enterprise.
Hydraulic & hydrologic
Rainfall time series and grids shaped for InfoWorks ICM (CSV and RED), EPA SWMM, HEC-HMS and HEC-RAS boundary conditions, plus NetCDF and GeoTIFF for anything else.
SCADA & historian
OPC UA and MQTT for inbound telemetry; forecast tags written back to the historian so operators see the forecast next to the measurement on screens they already trust.
Comms & paging
SMS, voice, email, Microsoft Teams, Slack, and pager or incident-management integrations with on-call rotation, acknowledgement and escalation handled natively.
SSO & access control
SAML 2.0 and OIDC single sign-on, SCIM provisioning, and role-based access down to the site and threshold level, with every configuration change attributed and reversible.
Every payload carries its own provenance block. A downstream system — or an auditor two years later — can establish exactly which rule fired, which model versions produced the numbers, whether the inputs were complete, and which sources were degraded at the time. Synthetic example; field names are illustrative.
Where UrbanFWS sits in each agency's stack.
Nothing here replaces a system either organisation already runs. Telemetry keeps flowing to SCADA and the historian; the utility's GIS stays the authority on the network; the CMMS stays the authority on work; the EOC's incident management system stays the system of record for the incident; the alerting authority's origination software stays the only thing that talks to IPAWS. UrbanFWS sits alongside all of them, consumes what they publish, and writes forecast and consequence back into the places each agency's staff already look.
The two footnote lines are the important part of this diagram. A vendor who cannot draw this boundary for you — which components are learned, which are deterministic, and where the policy decision sits — is asking you to take the whole pipeline on trust.
Your data stays yours, and leaves with you.
Your sensor data, asset register and thresholds remain your property. UrbanFWS holds a licence to process them for the purpose of delivering the service, and for nothing else. They are not pooled into a shared training corpus and not used to train models for other customers unless you specifically agree in writing.
A joint deployment is two tenancies with a sharing schedule, not one shared account. Each organisation owns its own data, its own thresholds and its own record; what crosses between them is the explicit list in the cross-agency schedule, nothing more. Either agency can leave with its own data intact and without taking the other's.
Everything in the record is assumed to be disclosable. Forecasts, thresholds, drafts, decisions and the reasons attached to them are written on the assumption that a records request, a council committee or opposing counsel will read them one day. That assumption is a design constraint, not a disclaimer — it is why override reasons are a required field and why declined drafts are retained.
A full export is available at any time, without a support request. Historical forecasts, observations, incidents, configuration, verification records and model cards, in open formats. An exit that requires a professional-services engagement is not an exit.
Managed cloud by default; single-tenant and government-cloud options where procurement requires it. Air-gapped installation is possible for the alerting and threshold layers, with the caveat that forecast quality depends on continuously ingested public data feeds.
Alerting degrades gracefully rather than failing closed. If the forecast pipeline is unavailable, threshold evaluation continues on live observations alone, at reduced lead time, and says so explicitly in every message it sends.
Role-based, attributed and reversible. Who may author a threshold, who may suppress an alert and who may only read are separate permissions. Every configuration change is versioned with an actor and a reason.
Set by you, not by us. Retention periods for observations, forecasts and incident records are configurable to match your records-management schedule, including indefinite retention where a regulator requires it.
A pilot that produces a defensible answer, not a demo.
Scope — one basin, real assets, both agencies
Pick a catchment that already causes trouble for both organisations. Provide the sensor list, the asset and critical-facility registers, the terrain surface and whatever thresholds are currently in use, even if they are informal — especially if they are informal, because an undocumented threshold that lives in one supervisor's head is the single most valuable artefact in a deployment and the one most likely to retire next year.
Agree the interface
Two hours in a room with both agencies to complete the responsibility grid and the cross-agency trigger schedule. This produces artefacts your two organisations keep and benefit from whether or not the pilot proceeds, and it surfaces the disagreements early, when they are cheap.
Hindcast — score what you already do
Before configuring anything new, your existing triggers are replayed against three years of history. That produces the hit rate, false-alarm ratio and lead time of the status quo, which is the only fair baseline for anything that follows.
Build — models, thresholds, ladder
Catchment-response models are trained on your record, the inundation basis is established at whatever fidelity your data supports, thresholds are authored with your engineers, and the escalation ladder is configured against your actual on-call reality.
Shadow — alerts nobody has to act on
The system runs live for a full season, generating alerts into a shadow channel. You see what it would have sent, and when, without anyone being paged. Thresholds are tuned against real storms rather than against assumptions.
Cut over — and keep scoring
Live notification begins when the shadow record justifies it. Verification does not stop at go-live: it is the permanent operating record, reviewed monthly, and it is what tells you whether the system is still earning its place.
Send us your asset register and a bad storm.
The fastest way to evaluate this is a hindcast on an event both agencies remember well, scored against what actually happened — including how many public alert drafts your current thresholds would have produced, and how many of them would have been right.
Frequently asked — answered plainly.
Does UrbanFWS replace National Weather Service warnings?
Can UrbanFWS send a Wireless Emergency Alert?
We are an emergency management agency and the utility is a separate organisation. Does that work?
How does this interact with our EOC's incident management system?
Who decides the activation level?
Our county already uses a mass notification platform. Is this a replacement?
How much history do you need before the models are useful?
What happens in a storm bigger than anything in your training data?
We run a combined system under a consent decree. What does UrbanFWS actually give us?
Will it work on a separate sanitary system, or a stormwater-only utility?
How much flow monitoring do you need for the RDII model?
Do we need a calibrated 2-D hydraulic model first?
How do you keep us from drowning in alerts?
What is actually machine learning here, and what is not?
Can we see your accuracy numbers before we buy?
Who owns the data, and what happens if we leave?
What happens when a radar goes down mid-storm?
How does this relate to GridRain?
What does it cost?
Is any of the data on this website real?
Shared vocabulary, so meetings go faster.
Nowcast
A very short-range forecast produced by extrapolating current observations — here, motion fields derived from successive radar sweeps — rather than by solving atmospheric equations. Dominant skill from 0 to roughly 90 minutes.
QPE / QPF
Quantitative precipitation estimate (what fell) and quantitative precipitation forecast (what will fall). QPE is an analysis of the past; QPF is a prediction. Conflating them is a common source of confusion in specifications.
Antecedent moisture
How wet the catchment already was when the storm began. The single largest reason the same rainfall produces very different responses on different days, and a primary input to the catchment-response model.
Action / warning stage
Stage thresholds at a site: action stage is where preparation begins, warning stage is where impacts are expected. UrbanFWS treats these as configurable per site rather than inheriting a default.
Surrogate model
A fast approximation trained to reproduce the output of a slow, physically-based simulation. Used here so a full 2-D hydraulic response can be evaluated every forecast cycle instead of every few hours.
Out of envelope
A condition outside the range a model was trained on. UrbanFWS reports this state explicitly instead of extrapolating — which matters most in exactly the record-breaking events where extrapolation is most tempting.
RDII
Rainfall-derived inflow and infiltration — the wet-weather flow that enters a sanitary or combined sewer within hours of a storm, over and above base sanitary flow and groundwater infiltration. The component a wet-weather forecast has to predict.
R-value
The fraction of rainfall falling on a sewershed that ends up in the sewer. The single most useful number for ranking basins for rehabilitation, and highly sensitive to antecedent wetness.
Hydraulic grade line
The elevation to which water would rise in a manhole at each point along a sewer. Above the pipe crown the reach is surcharged; above the rim it overflows. Freeboard is the distance left to the nearest rim.
Firm capacity
A pump station's rated capacity with the largest unit out of service — the number that matters on the night a pump is already down.
Hysteresis
Clearing an alert at a lower threshold than the one that set it, so a forecast hovering on the boundary does not produce a set-clear-set-clear cycle.
CAP 1.2
Common Alerting Protocol — the OASIS standard message format used by public alerting systems. UrbanFWS emits CAP so your existing origination software can consume it under your authority and your certificate.
IPAWS
The Integrated Public Alert & Warning System — FEMA's aggregator and gateway. An agency reaches it through its own IPAWS-compatible origination software, authenticated with a digital certificate tied to a COG identifier, within a permitted alert-type and geographic scope.
COG
Collaborative Operating Group — the identifier issued to an alerting authority under its memorandum of agreement with FEMA. It is what makes a message attributable to a specific agency rather than to a piece of software.
WEA
Wireless Emergency Alerts — geographically targeted messages pushed to handsets, up to 360 characters on 4G-LTE and newer devices and 90 on older ones. Since December 2019 carriers must deliver within roughly a tenth of a mile of the polygon, which makes geographic precision the originator's responsibility rather than the network's excuse.
EAS
The Emergency Alert System — the broadcast path over radio, television and cable. Slower to reach a phone than WEA and far better at carrying a long message, which is why the two are written differently rather than the same text sent twice.
ESF
Emergency Support Function — the functional desks an EOC stands up, such as transportation, public works and utilities, or mass care. A correctly scoped partial activation names the ESFs a flood actually needs instead of defaulting to the full roster.
Activation level
An EOC's declared posture, from routine monitoring through partial to full activation. Numbering and names vary by jurisdiction — some count up, some down — and UrbanFWS carries whichever convention your emergency operations plan already uses.
Operational period
The block of time an incident action plan covers, typically twelve hours in a flood. Situation reports, objectives and shift handovers align to its boundaries, which is why the reporting cadence is set by the period rather than by the clock.
Protective action
What you are asking a person to actually do — move to higher ground, stay off the roads, shelter in place. A warning without one is information, not a warning, and the research on milling behaviour is unambiguous that its absence costs lead time.
Milling
The interval between receiving a warning and acting on it, spent seeking confirmation from other sources. It is normal human behaviour, it is measurable, and it shrinks when a message is specific, names a location, and comes from a source the recipient recognises.
Lifeline
A service whose loss cascades: water, power, communications, transportation, health and medical, safety and security. Depth on a lifeline is a different category of consequence from depth on a street, and averaging the two into one exposure count is how the important number gets lost.
SSO
Sanitary sewer overflow — a discharge from a separate sanitary system, which unlike a permitted combined-sewer outfall is generally prohibited. This is why a separate system's wet-weather forecast is about avoidance rather than about activation windows.
Courant number
How many grid cells a wave crosses in one time step. Above one, an explicit scheme diverges; an implicit scheme survives but loses crest height quietly, which is why the cap is set on accuracy rather than stability.
Preissmann slot
A narrow notional gap above a pipe crown that lets a free-surface solver keep running once the pipe runs full, by giving the pressurised flow an equivalent surface width. Roughly a third of an inch on a five-foot pipe.
Continuity error
The volume a hydraulic run gains or loses that it should not have. The first number to ask any modeller for, because a run with a large one is not a forecast, whatever else it says.
CRPS
Continuous ranked probability score — the standard way to score a forecast distribution against what actually happened. It collapses to mean absolute error for a single-value forecast, so probabilistic and deterministic systems compare on one axis.
Kalman gain
The share of the disagreement between model and sensor that the model adopts, set by the ratio of their uncertainties. A noisy sensor moves the state less than a trusted one, automatically, without anybody editing a threshold.
Point-in-time correctness
Building every training feature from only what had actually arrived at the moment the forecast would have been issued. Its absence is the most common invisible cause of accuracy claims that do not survive a real storm.
Cost–loss ratio
What acting costs divided by what being caught out costs. It is the expense-minimising alerting threshold, which means the threshold is a policy decision about your costs and not a model output.
Error budget
The downtime an availability target permits — 99.9% buys 43 minutes 12 seconds a month. Treating it as a budget rather than a statistic means agreeing in advance to stop shipping when most of it is spent.
Subcatchment width
In SWMM, a shape parameter standing for the length of the overland flow path — not a measurement. It sets how quickly a subcatchment responds and is one of the few numbers a calibration genuinely moves.
Nonlinear reservoir
SWMM's runoff engine: a subarea ponds until its depression storage is full, then drains over a Manning surface at a rate proportional to depth to the five-thirds power. The exponent is why impervious response is flashy and pervious response is not.
Depression storage
The water held in surface irregularities before any runoff occurs — a twentieth of an inch on pavement, a fifth on turf. Small, and the reason a light shower produces no flow at all.
Node flooding
Water leaving the system upward at a manhole or inlet because the hydraulic grade line has risen above the rim. With ponding allowed it is stored at the node and returns; with ponding off, most models simply delete it.
Tell us about the storm you both still argue about.
The most useful first conversation is thirty minutes with whoever actually gets called at 2 a.m. — on both sides, if you can get them in the same call — plus whoever owns the asset data. If only one agency is in the room that is fine; a large share of deployments start with one organisation and add the other once there is something concrete to look at.
What a good first call looks like
Thirty minutes, four questions. Which events do you wish you had known about earlier? What do you currently do when a storm is coming, and who does it? Who do you call in the other agency, and how do you reach them at 3 a.m.? What data already exists — sensors, asset and critical-facility registers, terrain, hydraulic models — and what state is it honestly in?
What we will send afterwards
A written scope for a pilot on one basin, with deliverables, the data we need from you, what we will measure, and exit terms. No pricing table dressed up as a proposal.
Bring the sceptic
The most productive sessions have included the engineer who does not believe machine learning belongs anywhere near a flood warning, and the emergency manager who has been burned by a vendor promising to automate a decision that is legally theirs. Those are the questions this product was designed to survive, and the model cards and the human gate exist to answer them.