← Portfolio 01 / Case Study
AI Product · UK RegtechLive & deployed

Regulatory
Intelligence

A grounded, guardrailed compliance assistant — built to decline as reliably as it answers.

0
Tier-1 safety violations across the full test set
0.6%
Hallucination rate on the shipped build
33/36
Golden-set cases passed end to end
All
Automated release gates cleared before ship
Try it live ↗

"I just need to know if this rule applies to us — and I need to point to where it says so."

"I don't trust ChatGPT for this. It made up a policy statement number last time, and sounded completely sure."

— The user, in their own words · compliance analyst / MLRO, UK cryptoasset firm

The bet

An LLM is only useful in compliance if it refuses to guess

A compliance team's scarcest resource is trustworthy time. General-purpose chatbots confidently misstate regulation — inventing plausible rule numbers, dates, and thresholds with no citation and no way to tell right from wrong. In compliance, a confident wrong answer is worse than no answer.

Regulatory Intelligence tests one idea: whether calibrated abstention — saying "I can't answer that from my sources" — can be made reliable enough to turn an LLM from a liability into a trusted first-pass research aid over a curated FCA corpus. Every answer is grounded in a retrieved passage and carries a citation you can open at source. When the sources don't support an answer, it declines and tells you why.

The interface

Every response resolves to one of four honest states

Under the hood the model picks one of eight behaviours in a single grounded step. The user never sees that machinery — only a clear state, a colour, a cited source, and a concrete next step. A decline always explains itself.

Answered
Grounded in the sources, with a citation you can open.
Needs checking
Answerable, but flagged for a human eye before you rely on it.
Need more info
The question is ambiguous or multi-part — it asks you to narrow it.
Can't answer
The sources don't cover it. It won't invent a rule to fill the gap.
The build, in full
Architecture · retrieval & eval methodology · release gates · what we found
How it works

Ask → retrieve → answer-or-decline → verify

1
Ask
The analyst types a plain-language question. No query syntax, no knowledge of document structure needed.
2
Retrieve, then answer-or-decline in one grounded step
Hybrid retrieval pulls candidate passages; the top four, the question, and a retrieval-confidence signal go to the model in a single call governed by the guardrail prompt. The model both chooses how to respond and writes the response — not a separate up-front classification.
3
A clear state, a citation, a next step
Eight internal behaviours collapse to four plain-language states, each with a colour, a one-line meaning, the cited source, and what to do next.
4
Verify at source or escalate
Every answered response links to the official FCA document, so the user confirms it at source — or escalates anything flagged to their SME with the passage already in hand.
5
The product improves from real use
Users rate every answer and every question is logged — but the evaluation set stays frozen, so each improvement is provable rather than assumed.
Architecture

Hybrid retrieval, single-call reasoning

Pure semantic search regressed citation recall and broke on typos; keyword-only search couldn't match on meaning. The answer was to fuse both, and gate on relative confidence rather than a fixed threshold — so the scope test scales with the corpus instead of needing re-tuning.

Retrieve · dense
Voyage embeddings
Semantic match; tolerant of typos and paraphrasing.
→
Retrieve · sparse
Keyword search
Pins exact clause references like "PS26/9 ¶2.4".
→
Fuse + gate
RRF + scope gate
Reciprocal Rank Fusion; returns nothing when no passage stands out.
→
Reason
CoT prompt · k=4
One call: pick behaviour, write the grounded response or decline.
Hybrid RAG dense + sparse, RRF-fused Voyage embeddings Chain-of-thought prompt Render deployment FCA corpus PS26/9–PS26/13
Evaluation · the yardstick

Failures are graded by harm, not by score

An evaluation without a fail-rule is a report, not a gate. Every failure is graded by what it does to the user — and the tier, not the average, decides whether a release ships.

TierWhat it meansRelease rule
Tier 1 — UnsafeCould lead to a compliance breach, and the user can't tell it's wrong.One occurrence blocks the release. No budget, no averaging.
Tier 2 — Wrong but safeUnhelpful or mis-routed, but acting on it doesn't put the user at risk.Measured as a rate against a threshold. Some tolerated.
Tier 3 — QualityCorrect and safe, but reads poorly or takes too long.Tracked. Never blocks a release.
Evaluation · the evidence

A frozen golden set, retrieval measured on its own

36 hand-written questions, each with the behaviour it should produce — including the cases where the correct response is to say nothing useful. The set is frozen: when a score moves, the system changed, not the yardstick. Roughly a third is straightforwardly answerable; the rest tests judgment, deliberately, because knowing when not to answer is the harder half of the product.

9 · 8 · 5
Decline · answer · caveat
The three largest behaviour buckets in the 36-question set.
87.5%
Hit@4 (retrieval)
At least one correct passage reached the model — the measure that matters most.
0.844
Mean reciprocal rank
The first correct passage sits near the top of the returned set.

Retrieval is scored separately because it's upstream of the answer: if the governing passage never arrives, no prompt can ground an answer — it can only decline. k was fixed at 4 on the hit-rate plateau; low precision here is expected, not a defect, since most questions have only one or two relevant passages and the model needs just one.

Evaluation · the decision

Three prompts, one variable, one winner

Sources, test set, and retrieval were held identical across three candidate prompts — so any difference is caused by the prompt alone. Chain-of-thought was selected: it leads on every dimension and is the only candidate with no unsupported figures.

MetricBaselineChain-of-thoughtFew-shot
Tier-1 violations001
Hallucination rate7.7%0.6%1.2%
Citation recall82.4%88.2%82.4%
Query resolution (4+)88.9%97.2%88.9%
Cases passed SELECTED32 / 3633 / 3630 / 36

Few-shot was rejected outright on a single Tier-1 violation, regardless of its other scores — it declined correctly on a fees question, then asserted in the body of the refusal that fees had gone up. That's the tier rule doing exactly its job.

The release gate

The product we built, against the bar we set before building it

GateThresholdMeasuredVerdict
Tier-1 violations0 — absolute0PASS
Behaviour match≥ 90%94.4%PASS
Citation recall≥ 85%88.2%PASS
Reference validity100%100%PASS
Hallucination rate< 2%0.6%PASS
Query resolution≥ 90% at 4+97.2%PASS
Latency (p50 / p95)≤ 8s / ≤ 12s≈ 7s / ≈ 9sPASS

Every automated gate met. The gates were not adjusted to fit the result. One gate — human decision soundness by a senior compliance reviewer — is scheduled against live answers during early access, because it can't run offline.

What we found

The evaluation had a blind spot — and the process caught it

Three cases didn't pass, consistently across every prompt. Two turned out to be retrieval problems wearing an answer-quality disguise — the passage never arrived, so no prompt revision could fix them. The more useful finding was a gap in the eval itself:

  • The gapOn a fee-dispute question the assistant correctly refused — then asserted, uncited, that fees are binding and non-payment triggers enforcement. Every automated check passed it, because declines were assumed to assert nothing. They can.
  • The fixGroundedness and figure checks now run on every response, not only answered ones — carried into the release conditions before the next ship.
  • The lessonThe model judge caught the blind spot the automated checks missed; the automated checks caught what the judge's rubric told it to ignore. The case for running both, not choosing one.

V1 is deliberately narrow: a focused Q&A product, not the full triage → obligation-extraction → control-mapping workflow it could grow into. In a regulated setting, a smaller product that reliably refuses to guess is worth more than a larger one that sometimes states a rule that doesn't exist.

See it decide for itself

Ask it something in scope, then try to bait it into inventing a rule.