Twenty days to notice a drop
A significant drop in the quote funnel took the business 20 days to pick up. That was the time to notice it, before anyone began diagnosing it.
Around 50 people received a 25-page MI pack every morning, and nobody read all of it. Ovidius built a system that reads every page, every working day, and tells the handful of people who need to act what moved, before noon.
11:30 in, 12:00 out, unattended. Median ingest 2.7 min, p90 3.0 min.
38 working days, four brands, 116 cards sent.
Made by IES in six weeks. Zero developer tickets.
Every in-scope incident with a baseline available.
Daily trading, pricing and marketing decisions across four brands traced back to one MI workbook, rebuilt by hand every morning and emailed to around 50 people. Most readers got five or six pages in. The pack had no way to say which of its 14 metric areas had moved.
A significant drop in the quote funnel took the business 20 days to pick up. That was the time to notice it, before anyone began diagnosing it.
Each day was compared to target and prior year one at a time, and the swings were wide enough to bury a genuine trend.
With no competitor or macro context attached, an external market shift could read as an internal failure.
Every figure is a PostgreSQL view. n8n reads the result and decides who needs to know. The language model receives finished numbers and writes a sentence around them. Nothing calculates in two places.
n8n polls OneDrive and resolves the brand. Automatic.
17 mirror tables, flattening views. Median time.
14 metrics, 7/14/30 working-day rolling.
Expected-range band plus spike test.
The model writes the narrative behind a numeric guardrail.
Summary first, then cards to six audiences. Fixed, UK time.
Both tests fire in either direction, so an unusually good movement surfaces as readily as a bad one. The spike test calibrates to each metric's own volatility, so a naturally jumpy metric is not flagged every day.
Schematic. The shapes show how each test fires and are not IES data.
| Expected-range band | Spike test | |
|---|---|---|
| Watches | 7 and 14-day rolling averages | Today's move versus yesterday |
| Fires when | A rolling average sits outside its band | The move exceeds 2.75 SD of the trailing 20 working days |
| Catches | Sustained drift | A sharp one-day break the average hides |
| Card reads | “Outside Expected Range” | “Unusual Daily Movement” |
IES sets the band per metric in the Control Centre. The 2.75 SD spike sensitivity is adjustable per metric too.
For a finance audience, a hallucinated figure is worse than no summary at all. Every field on this card is a database value: latest reading, rolling averages, band limits, the move. The model writes the sentence around them, never the numbers inside them.
A verification step names any figure the model was not handed. Macro and competitor commentary is rendered in a separate, labelled block, so outside context and internal figures are never conflated.
Outside expected range
Within range, evaluated and logged
Unverified figures, declared rather than hidden
The seven-day baseline was 95.1%. The rolling average never left its band, so band-only detection would have reported nothing. The spike test scored the move at z = −11.65 and routed the card to the two analysis teams by noon.
Same pattern on 1 July: a second brand's visit-to-web-call at 0.0155 against a 0.0938 baseline, −83.5%, z = −11.51, again inside the band.
IES supplied dates where they knew something had gone wrong. Replayed against them, the rolling bands handled drift well and slept through a single-day shock: a system outage on 11 May cut one brand's call-to-sale by 38.1% while the 7-day average stayed inside its band. So Ovidius added the spike test.
Caught by the band
Caught by the spike test only
Missed with a baseline available
No baseline yet: the incident fell in the first days of data
Outside the 14 contracted metrics
An alerting system that fires every day gets muted. The share of evaluations that breached, week by week, from the first two brands through all four.
| Week of | Breach rate | Brands |
|---|
Breach rate across 38 working days
Days with no flag at all, the first on 8 July
Threshold changes made by IES, no tickets raised
Today was the first day we got it to not flag once, which was really good, which is what we've been trying to get to.Commercial Finance · IES Limited
Finance owns what counts as normal. The Control Centre lets IES move a band, preview its impact against recent history, and save it with their name on the change. Drag the sensitivity to see the band respond.
Adjust a metric's threshold band and preview the impact before saving.
Current: band centre 30.7% · sensitivity ±3.9 pp → flags below 26.8% / above 34.6% · tested on the 7-day average · spike 2.75σ
Recreation of the IES Control Centre, using the figures from the breach card in chapter 04.
Alerting since 16 June
breaches surfaced
Alerting since 16 June
breaches surfaced
Joined week of 3 August
breaches surfaced
Joined week of 3 August
breaches surfaced
Figures cover 24 June to 25 August 2026, working days only. Calculations were validated against IES's own source files before handoff. Timings and counts are Ovidius-instrumented from the alert history. The 20-day figure and the 50-person distribution are IES's own account. Brand names are withheld.
Bring the report everyone receives and nobody finishes. In a discovery call we work out which numbers should alert whom, and what it takes to build.