Skip to content
PromoCheck

Accuracy & methodology

How we measure, and where we’re honest about the limits.

Most AI compliance tools publish no accuracy number at all. We publish ours, the method behind it, and the failure modes. It’s a first-pass aid your team reviews, not a replacement for a qualified reviewer, and we don’t pretend otherwise.

96.5%
Breach recall
95% CI 91.3–98.6% · of expected breach-rule findings caught
0.0%
Over-flag rate
95% CI 0.0–3.8% · false-alarm rule flags on compliant copy
98.3%
Assessment accuracy
95% CI 94.0–99.5% · correct pass / issues / refusal
100.0%
Grounding integrity
95% CI 98.9–100.0% · every quote verbatim in the input

96.5% breach recall, with a 0.0% false-alarm rate. Zero breaching promotions were wrongly cleared to PASS — the failure mode we treat as worst. Where it errs, it errs cautiously: the two assessment misses in this run were a compliant promotion flagged as issues, and a compliant promotion refused for insufficient grounding, never a breach let through clean. We report every miss rather than hide it — the full per-rule breakdown and per-case detail ships with the product in evals/RESULTS.md, regenerated by npm run eval; ask us for the latest copy if you don’t have code access.

The labelled set

A hand-labelled set of 118 financial promotions: 71 containing genuine breaches (spread across all 10 rules, guarantees, missing warnings, unbalanced presentation, past-performance misuse, hidden costs, disguised promotions, targeting, s21, social/standalone, and a handful of prompt-injection attempts embedded in the promotion text), 34 compliant promotions that must pass (savings, ISAs, properly-warned investments, credit, insurance, pensions), and 13 deliberately thin inputs that should be refused. Each case is labelled with the rules that should fire and the rules that must not. Rule set applied: fca-cobs4-v1-2026-07.

What we measure, and why

  • Missed-breach rate (recall), the metric a compliance buyer cares about most: a breach the tool failed to flag.
  • Over-flag rate, false positives on compliant promotions; over-flagging is what makes teams distrust a tool.
  • Grounding integrity, whether every quoted excerpt is genuinely present in the promotion. Enforced in code, so it should be 100%.
  • Wrongly-cleared breaches, the worst failure mode: a real breach returned as a pass.

Reading the 3.5% honestly

The 4 missed expected-rule citations (of 114 across the set) are all secondary-rule completeness: on a promotion the tool had already correctly flagged as ISSUES_FOUND, it cited the specific breach but not every overlapping rule the label expected too. Zero breaching promotions were wrongly cleared to PASS — the worst failure mode did not occur in this run. Two assessment misses went the other way: a compliant promotion flagged as issues, and a compliant promotion refused for insufficient grounding. Both are the cautious direction of error; we still count them against ourselves rather than hide them behind the headline numbers.

How grounding is enforced (not just prompted)

A finding is only shown if it names a real rule — that’s checked in code for every finding, no exceptions. Where the finding is that something is present in the promotion, it must also quote text that is verbatim-present there; a quote that isn’t actually in your text gets dropped in code before you see it. Where the finding is that something is missing (an omission — a required risk warning that isn’t there, for example), there’s no text to quote by definition, so it’s marked as the model’s judgement instead of a verbatim-checked claim. An “issues” verdict left with no valid findings is corrected to a pass. The 100% grounding-integrity number above is specifically about the quotes that exist: every one of them is verbatim in the input — an enforced invariant, not a hope. It is not a claim that every finding carries a quote.

Reproduce it

The evaluation harness ships with the product. npm run eval runs the labelled set through the live engine and regenerates the results file. We welcome an independent compliance professional labelling a held-out set, that is what turns this internal signal into an external benchmark, and we’ll publish the result whichever way it goes.

Limitations, stated plainly

  • • This is a self-constructed set (n=118), not an independent benchmark. Small n; may not generalise to your product lines.
  • • PromoCheck is a first-pass aid, human-reviewed. It does not replace an s21 approver’s sign-off, and it will miss some breaches, never rely on it to “catch everything.”
  • • It reviews pre-publication copy. It does not do post-publication monitoring of live pages or social.
  • • Numbers are measured on the currently-configured model; a different provider will move them.

See it on your own promotions.

The honest way to judge it is on your real copy, with the evidence pack to review.

Open the checker →