Go beyond what is built in
The idea
Every monitoring platform eventually meets a question it does not answer. Usually the response is to export the data and do the work somewhere else — which produces an answer about a period that has ended, in a file that has to be regenerated to stay true.
infinitii flowworks answers this in two steps rather than one, and the difference matters when you are deciding who on your team can use it. FACE, the calculation engine inside infinitii flowworks, builds calculated channels from formulas and functions with no programming. FACE Pro is where you write Python or R. Most people start on the first and move to the second only when they outgrow it.
Both rungs invert that. You define the calculation once, it runs against all future incoming data as it arrives, and the result is a channel: graph it, alarm on it, report on it, feed it into other analysis. It behaves exactly like a measured channel because, as far as the rest of the platform is concerned, it is one.
The second half is the API, which carries those channels — measured and calculated alike — out to other systems, and brings data back in. Between them, the thing you can build is not limited to what fits inside the application.

Start here: calculations without writing code
FACE is infinitii flowworks’ calculation engine, and it is used from the application rather than from an editor. You build a calculated channel, then attach either a formula or one of the predefined functions.
Formulas cover arithmetic, trigonometry, conditional logic (IF / THEN / ELSE), comparisons, and a Circle function that returns flow area from a pipe’s depth and diameter. Lookup tables map physical constraints — weirs, flumes, pipe cross-sections — onto a channel.
Functions are the common operations already written: cumulative totals, rate of change, rolling and true time-weighted averages, and interval conversion. That last one earns its keep constantly — turning irregular or 15-minute data into clean 5-minute, hourly or daily series, which is exactly what inflow and infiltration (I&I) analysis needs before it will run properly. Rainfall of any type — cumulative, event-based, interval — converts to whatever interval you want.
- Formulas: maths, trigonometry, IF / THEN / ELSE, comparisons, Circle for flow area
- Lookup tables for weirs, flumes and pipe cross-sections
- Functions: cumulative, delta, rolling and time-weighted averages, interpolation
- Interval normalisation — irregular data into clean 5-minute, hourly or daily series
- Time shifting, constants and linearly varying offsets
And the raw data is never touched. A calculated channel copies data in from its source and applies the calculation to the copy, so the original channel stays exactly as it arrived. That is the mechanism behind non-destructive editing — not a policy, but how the feature is built. Calculated channels then work everywhere a raw channel does: graphing, reporting, monitoring and alarming.

Then here: your own Python or R, as a live channel
Calculated channels are built in Python or R with the libraries you would expect — NumPy, pandas, scikit-learn among them. Write and test the script in your own development environment, then upload it.
Work is organised as templates and bundles. A template holds the code, the input and target channel placeholders, and the schedule. A bundle binds that template to actual channels for one project — and you can create any number of bundles from one template. That is what lets a single piece of analysis cover a whole network without being rewritten per site.
Scripts run on a schedule, or in real time as new data arrives. Internet access from FACE Pro is restricted: third-party sources come in as ordinary channels, and direct access is granted only by exception.
This covers both directions people usually need: prediction, and pattern recognition. Predictive channels project forward from current conditions. Pattern recognition covers things like dry weather pattern identification and anomaly detection, where the rule is easier to learn than to write.
- Python and R, with NumPy, pandas and scikit-learn
- Templates and bundles — one template, any number of projects
- Hourly, daily, weekly, monthly, or run in real time as data arrives
- Pull from third-party sources as well as infinitii flowworks channels
- Output is a calculated channel — graphable, alarmable, reportable
- Predictive channels and pattern recognition

Run your hydraulic model against live data
SWMM, EPANET and RAVEN. Running models is a custom FACE Pro configuration that infinitii ai sets up, because of the complexity and the resources a simulation needs.
Model integration also improves the data underneath it. With the model’s predicted value available as a channel, every model-integration customer gets a quality-control flag built in FACE Pro that compares measured against predicted and raises a flag where the two diverge. That is a sharper test than any band drawn around the sensor on its own, because it asks whether a reading matches what the network should be doing at that moment rather than whether it falls inside a fixed range. It is distinct from Auto QAQC, which is what applies where there is no model to compare against.
Users can monitor model-derived channels alongside sensor channels and use that to keep their own profiles current.
- SWMM and EPANET, configured and run through FACE Pro
- Driven by live channels rather than a prepared input file
- Results returned as channels, alongside the measurements
- A model-informed QA/QC flag — measured against predicted, built in FACE Pro

Send data out, and take data back in
The API can pull data into infinitii flowworks channels from other sources, and can send data from any channel out to another service or application.
Full details of the API, including the separate FACE Pro API for managing script bundles, are on its own page. The most visible use is public notification. A number of cities publish infinitii flowworks data straight to their own public-facing websites — combined sewer overflow (CSO) event notifications warning residents about affected areas being the clearest example. The utility keeps its own site and its own branding; infinitii flowworks supplies the live data behind it.
- Publish live channels and calculated channels to your own public or internal website
- Push data out to other systems and applications, and accept data back in from them
- Drive public notifications from the record — CSO events, river conditions, service advisories
- Use it alongside FACE Pro: compute a channel in infinitii flowworks, then deliver the result wherever it is needed
We build our own products this way
We use our own products for exactly the reasons stated. Many client configurations need customisation that would be slow and expensive if everything had to be hardcoded into the application. FACE Pro lets us deliver more value to clients at a fraction of the cost.
Auto QAQC
Automated anomaly detection and data review, delivered as a calculated channel through FACE Pro rather than as a separate application. It runs on the data you already collect and surfaces alongside it, which is exactly what your own scripts do. See data quality.
Blockage detection
Four independent index channels blended into a weighted composite with hysteresis, gated by a sensor integrity rating — all of it calculated from existing depth and velocity data. Read how it was built.
Why this matters when you are evaluating: a platform whose own analytics are built on its extensibility layer cannot quietly let that layer rot. The same engine is under your scripts and under ours.
Why consultancies care about this in particular
An engineering firm's deliverable is usually a study — static analysis of a log extract, delivered as a document that is stale the day it lands. A calculated channel is a different kind of deliverable: it is installed in the client's system and keeps producing after the contract ends.
That changes what is being sold from a report into a living capability. More on delivering analysis as a live channel.
Bring an analysis you re-run by hand
If there is a calculation somebody repeats every month, that is the one to look at first.