FlowAi

Resources

How the forecast is made

Every FlowAi forecast comes from a conceptual hydrological model calibrated for that basin, driven by Environment and Climate Change Canada's weather forecasts, then corrected with recently observed flow. This page explains each part for a hydrologist deciding what the forecast can be trusted for.

  1. 1

    Weather forecast

    ECCC HRDPS to 48 h, then GDPS to 10 days, averaged over the basin

  2. 2

    Raven model

    Calibrated for this basin, run from its simulated state

  3. 3

    Observation correction

    A machine learning model for each lead day, fed recent observed flow and model error

  4. 4

    Forecast

    Flow for 10 days, as daily means and 6-hour averages

Is it AI?

Not in the sense of a black box. The forecast comes from a physically based hydrological model: it conserves water and simulates snow, soil, groundwater and lakes, so every forecast can be traced back to the weather and the state of the basin. Its output is then corrected by machine learning, from its recent errors against observed flow (see below). No generative AI or language model computes any forecast value.

AI comes in when the models are built. AI agents develop and maintain them: they set up new gauges, test model structures and investigate gauges that miss the gates. That is how each modelled gauge can have its own calibrated model. The agents don't decide what is published: every model has to pass the same automated gates against observed flow.

The hydrological model

The model is Raven, the University of Waterloo's modelling framework, run at a 6-hour time step. Each modelled gauge has its own model of the basin above it:

  • Basin. The basin is delineated from BasinMaker routing products and checked against the drainage area the Water Survey of Canada publishes. It is modelled as one lumped basin, not a network of sub-basins.
  • Response units.Inside the basin, each land cover that covers at least 10% of the area (from NALCMS) is its own response unit, on the basin's dominant soil. Lakes and wetlands get their own units, and a lake of 1 km² or more is modelled as a reservoir.
  • Model structure. Snow, soil, groundwater and lake processes come from a small library of tested structures. A basin gets the structures that worked best on gauges most like it (in baseflow index, flashiness, peak timing, recession, land cover, lakes and tile drainage). The best three are calibrated briefly and the winner is calibrated in full.
  • Calibration. Parameters are fitted with the DDS algorithm (Ostrich, 2,000 model runs) to observed daily flow in the calibration years of water years 2014–2025 (see Validation). The objective weighs NSE 40%, KGE 40% and log-NSE 20%, so low flows count as well as peaks, with a constraint holding overall volume bias within ±10%.
  • Historical weather.Precipitation is ECCC's Canadian Precipitation Analysis (RDPA/HRDPA), which blends radar, gauges and model; temperature is ERA5. Both are averaged over the basin.

Before any model is built, the basin is screened: its annual precipitation, runoff ratio and the agreement between rainfall and flow must be physically plausible. Small, very flashy basins (under 90 km²) are not modelled, because a daily model can't serve them well.

Validation

Water years are split into calibration and validation years by ranking them on their annual peak and alternating, so both sets hold wet and dry years. The model is scored on the validation years, which it was not fitted to, and must pass two gates:

Model gates
GateRequired
Calibration (mean of calibration and validation years)NSE ≥ 0.6 and KGE ≥ 0.7
Going live (corrected forecast at 7 days ahead, validation years)NSE ≥ 0.7, KGE ≥ 0.8 and |PBIAS| < 10%

A new model replaces the live one only if it passes and scores higher. Every live model is checked against the gate again each day as new observations arrive; one that no longer passes stops being published. A gauge without a model that passes shows observations only, never a forecast that failed.

Each modelled gauge's model card shows its scores. Read them with two caveats. The validation years also helped choose the model structure and when to stop training the correction, so they are not fully independent. And these scores use the weather that actually happened, not the forecast weather; real forecasts carry weather forecast error on top. The model card shows the calibration and validation years with their scores. The headline score pools all validation years, so it can sit above every single year's score.

The daily forecast

Forecasts are issued once a day, once ECCC's 00 UTC weather run is in (usually early morning, in the gauge's local time):

  • Weather. One deterministic forecast: HRDPS (2.5 km) for the first 48 hours, then GDPS out to 10 days, averaged over the basin.
  • Starting state. The model runs continuously from two years before the issue date on observed weather, so its snowpack, soil moisture, groundwater and lake storage are those the weather produced. Its state is not adjusted to match observed flow.
  • Output.Flow for each of the next 10 days, as a daily mean and as four 6-hour averages. Each 6-hour value is the average flow over the 6 hours ending at the time shown: the model reports each step at its end (06, 12, 18 and 00 UTC), and the site shows that time in your zone. The flow within those 6 hours, and so the instantaneous peak, can be higher than the average. The 6-hour values follow the model's own shape, scaled so each day averages exactly to its corrected daily value. The scaling changes smoothly across midnight, so the 6-hour line has no artificial step between days. Pro and Commercial plans see the 6-hour values; Free and signed-out visitors see no forecast.

Correcting with observed flow

A calibrated model still drifts: a snowpack slightly too large, a groundwater store slightly too low. Rather than reset the model's state, FlowAi learns how its error behaves and corrects the output.

  • What is learned. For each lead day from 1 to 10, a separate machine learning model predicts the difference between observed and simulated daily flow, so the correction can fade or change with lead.
  • What it sees.The model's simulated flow and how it is changing; observed flow and the model's recent error (2, 4 and 8 days before the issue); precipitation totals from the past few days to the past month; temperature; snowpack and snowmelt; and the season.
  • Observation delay.The newest observation it uses is from two days before the issue date, so it works with the delay real data arrive with. Readings from the last day or two don't change the forecast yet; they are shown beside it on the chart.
  • Training.It is trained on the model's simulation of the calibration years and checked on the validation years. Its spread is then matched to observed flow, so peaks aren't damped, and the correction is smoothed across neighbouring lead days so the forecast doesn't jump between days.

The correction is most useful when the error persists: a model running high through a dry spell, or a baseflow offset. It cannot know about an event the weather forecast misses.

Reservoirs and regulated rivers

A gauge just below a dam records the dam's release. That is the operator's decision, made on rule curves, flood operations, hydropower or maintenance, not the catchment's response to weather. A hydrological model can't forecast it, and neither can the correction, because nothing in the weather predicts when a gate moves. So FlowAi doesn't forecast releases.

What can be modelled is the reservoir's natural inflow: the water its basin delivers before the operator decides what to do with it. It isn't measured, so FlowAi works it out each day from the reservoir's water balance:

  • Water balance.Natural inflow = the day's mean release + the change in storage between the lake levels at the start and end of the day + evaporation from the lake surface.
  • Storage.The change in level is turned into volume with the lake's level-area curve, taken from the operator's storage table where one is published, otherwise from satellite surface-water mapping and elevation data. The daily balance is smoothed by a Kalman (RTS) smoother, so a centimetre of level error doesn't become a false spike in natural inflow. Where only a weekly signal can be modelled, as for a noisy lake, the model is trained on its 7-day mean.
  • Reservoirs in series. Where one reservoir drains into another, the upstream release, delayed by its travel time, is subtracted, and the model covers only the basin between the two dams.
  • Operators' own series.Where the operator already publishes a natural inflow, FlowAi models that series as published, leaving out the days its quality control flags. A natural inflow above the published total is shown capped at the total; the model is trained on the published value. Where both exist, FlowAi's calculation was checked against the operator's own estimate.
  • Gaps. A day whose release or level is missing or flagged, or that falls in a 30-day balance losing over 5 mm a day from the lake (more than evaporation can take, so an input is wrong), is a gap. Short gaps are filled for display only: a filled day or a gap is never used to train or score the model. A smoothed day below zero is set to zero and kept.
  • Newest days. The newest 5 days are provisional: the smoother revises them as later data arrive.

The natural inflow is then calibrated, validated and corrected like any other gauge's flow, and has to pass the same gates. On the gauge page it is labelled Natural inflow. It is the forecast an operator plans releases from; what is released stays the operator's call. Each inflow model card says which series its model uses and how many days were left out.

At a reservoir below an operated dam or generating station, FlowAi forecasts the Natural inflow: the water arriving whatever the operators upstream release, which is what an operator plans from. The Total inflow, which includes those releases, is forecast too, as a second forecast beside it, with a note that it follows the dams' operations. Where no usable natural inflow can be formed there (the upstream release is not published), the total inflow is forecast instead, with a note that an unusual dam operation can make it wrong. Where nothing operated is upstream, the total inflow is the natural inflow, and FlowAi shows and forecasts it as the total inflow. The forecast series carries the forecast, the thresholds and alerts, and the gauge's colour on the map and tiles. The gauge's Flowis the dam's daily release (for an Ottawa River forecast point, the reservoir discharge the regulating committee publishes); where FlowAi computes the natural flow at a regulated river station (gauges whose id ends in -NAT), its Flow is that station's measured flow. Flow there is observations only, like water level: it has its own chart on the gauge page and can be added to a river as its own card, with no forecast. Both are daily values; a missing day stays missing.

A river gauge the Water Survey of Canada flags as regulated is forecast only if its flow still behaves like a natural river: its water balance and its response to rain pass the same screen every basin gets. Otherwise it shows observations only, and the map marks it as regulated. Dams upstream may still have their natural inflow forecast.

What each series is

One place, one gauge. Where the Ottawa River Regulating Committee publishes computed inflows for a dam or river that also has a measuring station, those inflows appear on that station's gauge, beside its measured flow and level, as its natural inflow and total inflow. The forecast point's old page opens the station's gauge.

Flow
What is measured: a river's flow, or at a dam the dam's release. A forecast point's own published reservoir discharge is the same water as the release and is not shown again. At a regulated river station whose natural flow FlowAi computes (ids ending in -NAT), it is the station's measured, regulated flow. Where a gauge is forecast on an inflow, its flow is observations only.
Level
The water level at the station, or at a dam the reservoir's elevation. Observations only.
Natural inflow
The local water only. If dam A is upstream of dam B, B's natural inflow is the flow that occurs naturally between A and B. Water above A is stored in A, and only A's release matters downstream. With no dam upstream, it is the natural flow of the whole basin above the point. It is the natural runoff an Ottawa River forecast point publishes; or FlowAi's reservoir water balance, which for a reservoir below another subtracts the upstream release; or, at a -NAT station on the Ottawa River, the sum of the upstream forecast points' natural runoff, each delayed by its travel time; or, at other -NAT stations, the measured flow with the storage change of the lakes upstream added back; or an operator's natural runoff averaged over three days, where a large lake's level readings make the daily values noisy. Wherever FlowAi works an inflow out (natural or total), river reports, tiles and the river map label it (derived); an Ottawa River forecast point's own published series carries no such label. A natural inflow forecast says: “Water from the local area only, not releases from upstream dams. Computed, not measured.”
Total inflow
The natural inflow plus the releases of the dams upstream, routed down to this point: if dam A is upstream of dam B, B's total inflow is B's natural inflow plus A's routed release. It is the total inflow an Ottawa River forecast point publishes, or, for a reservoir below another, FlowAi's water balance before the upstream release is subtracted. Where the upstream release is unknown, a reservoir publishes its total inflow only: Mazinaw, Palmerston, Hurdman, Crotch, the Mattagami River near Timmins and the Rainy River at Manitou Rapids. Below an operated dam, generating station or regulated lake the natural inflow is forecast where it can be formed, and the total inflow is forecast too, as a second forecast beside it; where it cannot, the total inflow is forecast. Where nothing operated is upstream, the total inflow equals the natural inflow and is forecast. A total-inflow forecast below a regulated dam says: “Includes releases from upstream dams, assumed to follow natural flow. An unusual dam operation can make this forecast wrong.” At a headwater dam it says: “Computed from the reservoir's level and release, not measured directly. Daily values can be noisy.”
Which series is forecast
A gauge has one main forecast series. At a dam or reservoir it is the natural inflow, or the total inflow where that is forecast (above): the dam's flow is the operator's release, which no weather forecast predicts. At a river station it is the station's flow where FlowAi models that river, otherwise the natural inflow published for the same place. That series carries the forecast, the forecast alerts and the gauge's colour on the map and tiles. Below an operated dam, generating station or regulated lake it is the natural inflow, and the gauge has a second forecast, the total inflow over the whole basin, on the total inflow chart with the caveat above and its own model card. The thresholds and alerts stay on the main series. Every other series is observations only: it has its own chart, can be added to a river as its own card and can have threshold lines and alerts on observed values, but no forecast.

Inflows shown are FlowAi's best estimate: measurement noise is removed and short gaps are filled.

What you see on a gauge page

  • Forecast: the corrected flow from the latest issue, as 6-hour averages on Pro and Commercial plans, each at the end of its 6 hours (see Output above); Free and signed-out visitors see the observed flow without a forecast.
  • The line above the chart:the arrow is the last 6 hours of observed flow (rising, steady or falling; steady is within 5%). Then the flow now, an arrow, the forecast peak (the highest 6-hour average, at the end of its 6 hours, or the highest daily mean where there are no 6-hour blocks) and when. The coloured pill is the highest level of your organisation's that the forecast reaches, in the level's own name and colour, with when it is first reached. A small red or amber marker means something is stale or missing: an old or missing forecast, an old weather run, a delayed reading or a flagged one. Nothing shows when everything is current.
  • Forecast checks: the marker lists values to review. Each forecast day is a daily mean. The checks flag values; they never change the forecast.
  • Rain, snow and wetness:basin averages for the gauge's drainage area, in the display time zone. Observed rain is the six-hourly CaPA analysis; its windows end at the analysis time shown, not at the clock, and the newest hours are not in it yet. Forecast rain is the weather model's basin average; its first window starts at the last six-hour mark, so it may include hours already passed, and the "since last obs" figure covers the hours between the last observation and now. A total with missing hours reads with a "≥" and says how many hours are missing. Snow is estimated by the flow model from basin weather: nothing there is measured snow. Antecedent wetness compares recent observed rain and the flow now with normal for the date; the arrows show above (↑), near (≈) or below (↓) normal. A figure that cannot be given shows "— no data", never a zero.
  • Observed: daily means, and the provider's real-time readings of the last 48 hours.
  • Model hindcast: what a 7-day-ahead forecast would have shown for recent days, so you can see how the model has been doing lately. It is not a forecast.
  • Precipitation and temperature: basin averages, observed and then forecast.
  • Normal range:the shaded band is the 10th to 90th percentile of past flow for each day of the year, pooled over a week either side. It uses complete calendar years only and is rebuilt once a year, on January 2. Until then it rests on data up to December 31 of the previous year, so this year's readings don't move it. A gauge needs at least 10 years with data to get a band. The 2- to 25-year flood flows shown with flood thresholds are rebuilt the same way, from the same years.

How far ahead you see depends on your plan:

Forecast horizon by plan
PlanForecast horizon
Free and signed outNo forecast: observations, history and the basin weather forecast
Pro5 days, with 6-hour values
Commercial10 days, with 6-hour values

Weather data shown

Observed rain is ECCC's Canadian Precipitation Analysis (CaPA), and observed temperature is ERA5 from Copernicus. Both are published after the fact, so the observed weather on a gauge page normally ends a few days before today. This is expected, not a fault: the forecast covers the days since with ECCC's weather forecast (HRDPS, then GDPS), which the charts draw lighter, with dashed lines, where it is shown. The rain card's ⓘ gives the time the observed rain ends. A gap inside the observed weather is shown, as "— no data" or a total marked "≥" with the hours missing.

Water level

Level is a forecast type beside flow. FlowAi does not run a second model for it: the forecast flow of each day is converted to a water level with a stage-discharge rating curve fitted to the station's own record, so the level is exactly as good as the flow forecast plus the rating. A rating curve rises with flow, so each flow maps to one level and the forecast chain is unchanged.

  • The rating. A power law, level = h0 + c × flowd(one curve, or two joined at a break in flow where one fits poorly), fitted to daily-mean levels and flows from Water Survey of Canada approved data and, after those end, provisional data. The WSC publishes no rating tables, so FlowAi fits its own to the station's record.
  • Fit window.The last 10 years of clean daily pairs, with each year's weight halving every two years so recent shifts in the channel count most, refitted every month. Days with ice, estimated values, forecast-sourced values or failed quality checks are left out and counted, never filled.
  • Which gauges (the gate).A level forecast is offered only where the rating passes these checks, for two monthly refits in a row, and is withdrawn at the first refit that fails them. At least two years of clean pairs; the newest within a year; root-mean-square error (RMSE) of the fitted level within 4 cm, and also within 4 cm when the latest year, or the latest two months, are held out of the fit and scored; within 5 cm on the highest 10% of flows, and 6 cm on the latest year's flows above the fit's 90th percentile; no drift over 10 cm from the older ratings; and no lasting residual step. A gauge whose rating does not pass still shows its observed level, and no forecast level is filled in or estimated for it. These limits are the current ones and may change; each rating records the limits it was judged by.
  • Valid range.The rating is fitted between the lowest and highest level and flow in its window, both given on the gauge's model card. Above the highest flow the curve is extended and the level is marked "beyond observed range", never hidden: from 1.25 times that flow the error is several times larger, and from 1.5 times the level is more likely too low than too high. The rating error (RMSE) is shown beside every forecast level, and a level is uncertain by about twice that (95%); the error is larger on the highest flows.
  • Ice.Ice changes the level-flow relationship, so the fit uses open-water days only. While the latest three days carry the provider's ice flag, or a level with no flow, or (where the provider flags no ice) the observed levels sit more than 5 cm off the rating during the gauge's ice season, the level forecast is withheld and only the observed level is shown. Inside an ice season without those signs it is shown with an ice-season marker.
  • Daily means and 6-hourly levels. The daily forecast level is a daily mean, like the flow it comes from. The highest level reached during the day (the instantaneous peak) can be higher, often by about 10 cm and by 25 cm or more on small, fast rivers. Allow for it when comparing a forecast level with a threshold. The 6-hourly level (where the flow forecast has 6-hour blocks) carries each 6-hour mean flow through the same rating, so it sits closer to the highest level of the day. Level alerts and the forecast table use the daily level.
  • Datum. Levels are metres above the gauge datum. The offset to a geodetic datum is given only where Water Survey of Canada publishes one for the station.
  • Thresholds and alerts.An organisation's level thresholds are lines in metres above the gauge datum, named, valued and worded by the organisation. A level line, or a personal level alert, can email when the observed level reaches it or when the forecast level does. The email gives the level in metres, the rating error, that the level is a daily mean, and, where they apply, that it is beyond the observed range or in the ice season. While a gauge's level forecast is withheld or not published, a forecast alert on level is not checked and is shown as "level forecast unavailable"; the observed alert keeps working.

No uncertainty band is drawn on the level, because the flow forecast it comes from has none.

What it can't do yet

  • No uncertainty range. The forecast is a single value per time step from one weather forecast. An earlier interval was removed because it did not match how far observations actually fell from the forecast; it will return only once it is calibrated.
  • Calibrated on daily flow.The model is calibrated, and the correction trained, on daily means. The 6-hour values show the timing within a day as the model simulates it, scaled smoothly from one day's correction to the next rather than corrected on their own. They don't resolve instantaneous peaks, and the model isn't offered for small flashy basins.
  • One lumped basin. Spatial differences inside the basin are represented only through land cover, and flow is not routed through tributaries.
  • Regulation and ice.Dam releases aren't forecast (see above). Smaller operations upstream of a forecast gauge, diversions and river ice aren't simulated; in freeze-up and break-up the correction absorbs part of the error, but not all of it.
  • Weather forecast error. Beyond a few days, forecast skill is mostly weather skill. Check the precipitation forecast on the gauge page alongside the flow.

The data behind the forecasts are listed on Data Sources. FlowAi forecasts are for information only and are not official flood warnings; see the Terms of Service.