Case studies/IES Limited
CASE 03Dagelijkse MI-alerts
20 dagen→30 min

IES had 20 dagen nodig om een instortende quote-funnel op te merken. Nu duurt dat 30 minuten.

Bij IES Limited kregen ongeveer 50 mensen elke ochtend een MI-pack van 25 pagina's, en niemand las het helemaal. Ovidius bouwde een systeem dat elke werkdag elke pagina leest en het handjevol mensen dat moet handelen vóór 12:00 vertelt wat er bewoog.

Tijd tot signaleringElke werkdag
Toen20 werkdagen
Daling begintIemand koppelt het aan een oorzaak
NuBinnen één lunchpauze
11:30Pack komt binnen
2,7 minMediane ingest
12:00Alerts in Teams
11:3011:4011:5012:00
14 metrics4 merken6 Teams-doelgroepenGeen mens in de keten
Klant
IES LimitedReisverzekeringsgroep, geregistreerd in Gibraltar
Scope
Vier reisverzekeringsmerkenVK, Ierland en Australië
Probleem
Eén Excel-pack van 25 pagina's, ongeveer 50 lezers17 werkbladen, met de hand onderhouden
Gebouwd met
n8n, Supabase, OpenRouterMicrosoft Graph, Streamlit
Doelgroep
Zes Teams-doelgroepenFinance, trading, marketing, operations
30min
Van pack tot alert

11:30 erin, 12:00 eruit, zonder toezicht. Mediane ingest 2,7 min, p90 3,0 min.

1.751
Metric-evaluaties

38 werkdagen, vier merken, 116 kaarten verstuurd.

34
Drempelwijzigingen

Door IES zelf gedaan in zes weken. Nul developer-tickets.

4van 4
Nagespeelde incidenten gevonden

Elk incident binnen scope waarvoor een baseline beschikbaar was.

01
De uitdaging

Alle informatie was er. Toch kon een echte beweging wekenlang onopgemerkt blijven.

Dagelijkse beslissingen over trading, pricing en marketing voor vier merken gingen terug op één MI-werkboek, dat elke ochtend met de hand werd opgebouwd en naar ongeveer 50 mensen gemaild. De meeste lezers kwamen tot pagina vijf of zes. Het pack kon niet laten zien welke van de 14 metric-gebieden in beweging waren.

25 pagina's14 metric-gebieden50 ontvangersElke werkdag
Verloren tijd

Twintig dagen om een daling op te merken

Een flinke daling in de quote-funnel kostte het bedrijf 20 dagen om op te merken. Dat was alleen de tijd tot het opviel, nog voordat iemand aan een diagnose begon.

Ruis

Losse dagen verborgen echte variatie

Elke dag werd los vergeleken met target en vorig jaar, en de schommelingen waren groot genoeg om een echte trend te verbergen.

Verkeerde diagnose

Geen externe context

Zonder context over concurrenten of de macro-economie kon een verschuiving in de markt eruitzien als een interne fout.

De oude manier: zes handmatige stappen, opgemerkt aan het eind van de maand

02
De oplossing

De berekeningen zitten in de database. Het model mag ze alleen uitleggen.

Elk cijfer is een PostgreSQL-view. n8n leest het resultaat en bepaalt wie het moet weten. Het taalmodel krijgt kant-en-klare cijfers en schrijft er een zin omheen. Niets wordt op twee plekken berekend.

In
MI-pack in OneDriveHetzelfde werkboek dat IES al maakte. Voor finance verandert er niets aan de werkwijze.
n8n-watcherPollt OneDrive, bepaalt bij welk merk het pack hoort en laadt 17 werkbladen in mirror-tabellen.
Control CentreStreamlit-app waarin IES per metric de band en de spike-gevoeligheid instelt.

Supabase / PostgreSQL De bron van waarheid

14 kernmetricsVoortschrijdende gemiddelden over 7, 14 en 30 werkdagen, berekend in database-views, nooit in workflowlogica.
Band- en spiketestsElke metric getoetst aan de verwachte bandbreedte en aan de eigen dagelijkse volatiliteit.
Append-only historieElke evaluatie gelogd, wel of niet gemarkeerd, met de band, de beweging, de spikescore en de kanalen die hem kregen.
23tabellen
16views
1schema
Uit
OpenRouter-modelKrijgt kant-en-klare cijfers en de vraag om een zin. Een verificatiestap benoemt elk cijfer dat het model niet heeft gekregen.
Microsoft GraphEerst de samenvatting, dan de kaarten één voor één, op volgorde van prioriteit.
Zes Teams-doelgroepenGerouteerd per merk en per gevoeligheid, in plaats van één mail aan 50 mensen.
De database beslistLaatste meting, voortschrijdende gemiddelden, bandgrenzen, de beweging en de spikescore zijn allemaal databasewaarden.
Het model beschrijftHet verhaal, en externe context in een eigen, duidelijk gelabeld blok, zodat externe en interne cijfers nooit door elkaar lopen.
11:30

Pack gedetecteerd

n8n pollt OneDrive en bepaalt het merk. Automatisch.

+2,7 min

Ingeladen en getypeerd

17 mirror-tabellen, platgeslagen views. Mediane tijd.

In de database

Herberekend

14 metrics, voortschrijdend over 7/14/30 werkdagen.

Beide richtingen

Geëvalueerd

Verwachte bandbreedte plus spiketest.

Bewaakt

Uitgelegd

Het model schrijft het verhaal achter een numerieke guardrail.

12:00

Afgeleverd

Eerst de samenvatting, dan kaarten naar zes doelgroepen. Vast tijdstip, Britse tijd.

03
De detectielogica

De ene test vangt drift, de andere een crash, dus beide draaien elke dag.

Beide tests slaan in beide richtingen aan, dus een ongewoon goede beweging komt net zo snel boven als een slechte. De spiketest kalibreert op de eigen volatiliteit van elke metric, zodat een van nature beweeglijke metric niet elke dag wordt gemarkeerd.

Dagwaarde7-daags gemiddeldeVerwachte bandbreedte
Bandtest
Spiketest

Schematisch. De vormen laten zien wanneer elke test aanslaat en zijn geen IES-data.

BandtestSpiketest
BewaaktVoortschrijdende gemiddelden over 7 en 14 dagenDe beweging van vandaag ten opzichte van gisteren
Slaat aan alsEen voortschrijdend gemiddelde buiten de band valtDe beweging groter is dan 2,75 SD van de voorgaande 20 werkdagen
VangtAanhoudende driftEen scherpe breuk op één dag die het gemiddelde verbergt
Kaart meldt“Buiten verwachte bandbreedte”“Ongebruikelijke dagbeweging”

IES stelt de band per metric in via het Control Centre. Ook de spike-gevoeligheid van 2,75 SD is per metric instelbaar.

04
Deep dive

De guardrail die voorkomt dat het model een cijfer meldt dat niemand heeft berekend.

Voor een finance-publiek is een verzonnen cijfer erger dan helemaal geen samenvatting. Elk veld op deze kaart is een databasewaarde: laatste meting, voortschrijdende gemiddelden, bandgrenzen, de beweging. Het model schrijft de zin eromheen, nooit de cijfers erin.

Een verificatiestap benoemt elk cijfer dat het model niet heeft gekregen. Commentaar over macro-economie en concurrenten staat in een apart, gelabeld blok, zodat externe context en interne cijfers nooit door elkaar lopen.

⚠ BUITEN VERWACHTE BANDBREEDTE: MERK A2026-08-26 11:01 UTC
AMT Conversion
2026-08-25 · Merk A
Laatste waarde
33,9%
Recent gemiddelde (7/14 dagen)
35,1% / 34,7%
Verwachte bandbreedte
26,8% tot 34,6%
Bewogen (recent gemiddelde → laatste)
35,1% → 33,9% (−1,20 pp, −3,4% relatief)
Status
Boven verwachting (7 dagen)
Verandering sinds gisteren
Binnen normale bandbreedte
Wat dit betekentMerk A AMT Conversion. Het 7-daags gemiddelde (35,1%) ligt boven de verwachte bandbreedte (26,8% tot 34,6%). Het bewoog van 35,1% (recent gemiddelde) naar 33,9% (laatste), een verandering van −1,20 pp, −3,4% relatief. Advies: controleer of dit een echte verandering is of een dataprobleem.
Breach card voor één metric zoals afgeleverd in Teams. Echte systeemoutput, hier vertaald, met andere merknamen en gehusselde cijfers.
5

Buiten verwachte bandbreedte

51

Binnen de band, geëvalueerd en gelogd

2

Niet-geverifieerde cijfers, gemeld in plaats van verborgen

De dagelijkse briefDe samenvatting komt binnen vóór de losse kaarten. Hij begint met het aantal, noemt de grootste afwijking en werkt dan naar beneden. Toen het model twee MI-cijfers in zijn verhaal zette die niet in de inputdata stonden, meldde de brief dat bovenaan en vroeg om verificatie vóór verspreiding.
05
Detectie in de praktijk

De band zei: binnen bereik. De spiketest zei: één op de vijf telefoontjes werd niet beantwoord.

AUG10

Bij één merk zakte het antwoordpercentage van sales in één dag naar 81,7%.

De baseline over zeven dagen was 95,1%. Het voortschrijdend gemiddelde bleef binnen de band, dus detectie op alleen de band had niets gemeld. De spiketest gaf de beweging een score van z = −11,65 en stuurde de kaart vóór 12:00 naar de twee analyseteams.

Hetzelfde patroon op 1 juli: bij een tweede merk stond visit-to-web-call op 0,0155 tegenover een baseline van 0,0938, −83,5%, z = −11,51, opnieuw binnen de band.

Antwoordpercentage sales, één merk
Verwachte bandbreedte (positie ter illustratie)95,1% baseline over zeven dagen81,7% op 10 augGemiddelde blijft binnen de bandSpiketest slaat aan
81,7%Op de dag zelf
95,1%Baseline, binnen de band
−14,0%Beweging op één dag
z −11,65Spikescore
06
Het obstakel

De backtest liet zien dat de banden alleen een instorting op één dag volledig hadden gemist.

IES leverde datums aan waarop ze wisten dat er iets mis was gegaan. Bij het naspelen daarvan vingen de voortschrijdende banden drift goed op, maar sliepen ze door een schok op één dag heen: een systeemstoring op 11 mei verlaagde de call-to-sale van één merk met 38,1%, terwijl het 7-daags gemiddelde binnen de band bleef. Daarom voegde Ovidius de spiketest toe.

3

Gevonden door de band

1

Alleen gevonden door de spiketest

0

Gemist terwijl er een baseline was

2

Nog geen baseline: het incident viel in de eerste dagen van de data

2

Buiten de 14 gecontracteerde metrics

4 van 4 incidenten die binnen scope vielen en een baseline hadden, zijn gevonden.Incidentdatums aangeleverd door IES, het naspelen deed Ovidius.
De band had een partner nodigVoortschrijdende gemiddelden zijn juist gebouwd om één slechte dag te negeren. Daardoor zijn ze goed in drift en blind voor een crash, dus de spiketest draait bij elke metric naast ze.
Daarna waren de banden te luidBanden die op data uit 2024 waren gekalibreerd, sloegen bijna elke dag aan. IES laadde de drempels opnieuw in op zes maanden data van het lopende jaar en verbreedde de banden zelf, in het Control Centre, zonder Ovidius.
07
Alertvolume

1.751 evaluaties, 116 kaarten, en elf dagen zonder één melding.

Een alertsysteem dat elke dag afgaat, wordt op stil gezet. Hieronder het aandeel evaluaties dat buiten de band viel, week voor week, van de eerste twee merken tot alle vier.

Breach rate per week

Twee merken, 140 evaluaties per weekVier merken, tot 280
Bekijk als tabel
Week vanBreach rateMerken
8,3%

Breach rate over 38 werkdagen

11 van 38

Dagen zonder enige melding, de eerste op 8 juli

34

Drempelwijzigingen door IES, zonder tickets

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
08
Overdracht

Het bedrijf stelt de drempels zelf af.

Finance bepaalt wat normaal is. In het Control Centre verschuift IES een band, bekijkt het effect op de recente historie en slaat de wijziging op met de eigen naam erbij. Versleep de gevoeligheid en zie hoe de band reageert.

Drempeleditor

Pas de drempelband van een metric aan en bekijk het effect voordat je opslaat.

Merk A
AMT Conversion

Huidig: midden van de band 30,7% · gevoeligheid ±3,9 pp → markeert onder 26,8% / boven 34,6% · getest op het 7-daags gemiddelde · spike 2,75σ

7-daags 35,1%
20%30%40%
Nieuwe drempel opslaan

Nagebouwde versie van het IES Control Centre, hier in het Nederlands, met de cijfers van de breach card uit hoofdstuk 04.

Vijf views, één bronDashboard, editor, drempelhistorie, alerthistorie en metric-overzicht lezen allemaal hetzelfde Supabase-schema waar de alerts uit komen.
Append-only audittrailElke drempelwijziging wordt vastgelegd: wie hem deed, en van wanneer tot wanneer.
Nul tickets34 wijzigingen in zes weken in eigen beheer, zonder dat er een developer aan te pas kwam.
09
De resultaten

Elke metric vóór 12:00 geëvalueerd, voor vier merken.

Merk A

Alerts sinds 16 juni

38

breaches gemeld

Merk B

Alerts sinds 16 juni

51

breaches gemeld

Merk C

Aangesloten in de week van 3 augustus

53

breaches gemeld

Merk D

Aangesloten in de week van 3 augustus

31

breaches gemeld

Cijfers over 24 juni tot en met 25 augustus 2026, alleen werkdagen. De berekeningen zijn vóór de overdracht gevalideerd tegen de eigen bronbestanden van IES. Tijden en aantallen heeft Ovidius gemeten in de alerthistorie. Het cijfer van 20 dagen en de verspreiding naar 50 mensen komen uit de eigen opgave van IES. Merknamen zijn weggelaten.

Stackn8nSupabase / PostgreSQLOpenRouterMicrosoft Graph APIStreamlit

Wat blijft er ongelezen in jouw rapportagepack?

Neem het rapport mee dat iedereen krijgt en niemand uitleest. In een kennismaking bepalen we welke cijfers wie moeten alarmeren, en wat ervoor nodig is om dat te bouwen. Hoe we zo'n traject aanpakken, lees je in onze werkwijze.

Owen, CEO van Ovidius AI
OwenCEO · sales en scoping
Jason, COO van Ovidius AI
JasonCOO · audit, build en beheer
Plan een kennismaking30 minuten met Owen en Jason. Jij neemt het proces mee.