Live demo

16 series in. 4 alerts out.

A phase III study, 60 days of EDC extracts, 16 series across four investigator sites. On day 42 one site started enrolling three times faster than its own history while the variance of its reported measurements collapsed. The study-wide deviation rate never moved. Find the site. The output is a referral for human monitoring review, not a conclusion about anyone.

Every number on this page is computed in your browser right now, by the same CUSUM and Bayesian changepoint code that runs in production. Nothing here is a screenshot.

The comparison that matters

Against the rule most teams actually ship

The standard configuration is a percentage or sigma threshold against a trailing mean, evaluated per metric. Run it over the exact same 16 series and count what lands in the channel.

Naive rule
143
alerts sent · alert if |Δ| > 15% vs 7-day mean
Of those, false
77
fired before anything was wrong
This engine
4
alerts sent, all correct
Noise reduction
97%
fewer messages, same catch

The false-alarm count is not a judgement call. The incident was injected at a known index, so every naive alert before that index is wrong by construction.

What the engine found

Detection run

Detection run4 alerts16 series tested · 4 fired · 0 suppressed by BH at FDR=0.05
MetricTrendBaselineNowChangeConfidenceMethod
Protocol deviation rate
site=047 Groningen
3.05%9.87%+224%99.9%CUSUM
Enrolments per site-week
site=047 Groningen
1.6094.555+183%99.9%CUSUM
Queries per CRF page
site=047 Groningen
0.4491.144+155%99.9%CUSUM
Reported measurement variance
site=047 Groningen
7.1212.413−66.1%99.9%CUSUM

Show your work

Protocol deviation rate · site=047 Groningen

Baseline
3.05%
After changepoint
9.87%
Change
+224%
Confidence
99.9%
CUSUM (Page 1954)
The series60 daysdashed line = baseline mean · red = detected changepoint
1.90%6.70%11.5%changepointJun 29Aug 27
The CUSUM accumulatorsmall deviations stack slowly; a real shift stacks fast
h = 0.600 (decision boundary)1.430

Baseline mean μ = 0.0121 and σ = 0.1500, both computed from the first two thirds of the day-over-day percentage changes. The slack k = 0.0750 is half a sigma, and the decision boundary h = 0.6001 is four. The accumulator runs on percentage changes rather than raw levels so a healthy growing series cannot drift across the boundary on its own.

What the naive rule did on this same series

alert if |Δ| > 15% vs 7-day mean fired 13 times across this one metric, including 6 before anything was actually wrong. The statistical pipeline sent one message, on the day the regime actually changed.

What lands in Slack

One message, with the work already done

S
SitewatchAPP#eng-alerts
🔴 Protocol deviation rate jumped +224%site=047 Groningen
Baseline
3.05%
Now
9.87%
Confidence
99.9%
Started
Aug 10
Study
XR-214 Phase III
Site
047 Groningen
Sites in study
41
Review
monitoring, not adjudication
Likely cause · Four independent measures at site 047 changed together across Aug 10 and 11, and nothing changed at the other sites or study-wide. Enrolment pace nearly tripled against its own prior history, deviations and queries rose with it, and the variance of reported continuous measurements fell to about a third of the study-wide spread. Increasing throughput with decreasing measurement spread is the combination worth a human look, because real measurements do not get quieter under load. This is a monitoring signal only. It does not determine whether anything improper occurred, it does not unblind, and it makes no clinical judgement about any participant.
  1. 1.Route site 047 to the next risk-based monitoring cycle for a targeted source data review.
  2. 2.Have data management re-check the Aug 10 onward CRF pages against source for the flagged measurements.
  3. 3.Confirm with the site whether staffing, equipment, or the recruitment path changed on or around Aug 10.
AcknowledgeFalse positiveCUSUM · q < 0.0001 · BH-corrected

The written cause is generated only after the statistics confirm the change. The model never decides whether something is an anomaly — it explains one that has already been established. Getting that order backwards is how these products hallucinate.