Skip to content
Vamshi Jandhyala

AI Lab

Prototype

Rule Grounding

An agent reviews a financial promotion and cites the rules it applied. Every citation is then checked against the regulator's own rulebook by three checks that involve no model at all.

A working prototype of citation grounding for regulated agent output, built against the FCA Handbook API on the day after it launched. It resolves a citation, checks whether the provision is binding, and refuses to certify a decision whose governing text has changed since it was taken.

Themes Interface prototype · Agent governance · Agent-ready data · Evaluation · Financial services


The problem

An agent writes a paragraph of regulated advice and cites the rule it applied. Somebody has to decide whether to believe it.

The usual answer is a second reader. A compliance officer samples the output, or a second model scores it. Both read the same words the agent wrote, so both inherit whatever the agent got wrong, and adding more readers of that kind runs into a ceiling that is now reasonably well documented: checkers whose errors correlate with the writer’s stop adding evidence long before they stop adding cost.

There is a narrower question hiding inside the broad one, and it has a different shape. Before anyone asks whether the agent understood the rule, they can ask whether the rule exists.

That sounds trivial. It is not, for two reasons that only become visible when you try.

The first is that until recently, in the United Kingdom, there was no free official interface an agent could query at runtime. The content was reachable. The FCA’s own account of what changed lists the website, monthly downloads and specialist compliance tools as how firms got Handbook information before.1 What none of those offers is a call a program can make mid-decision against the regulator’s copy. An agent emitting the string “COBS 4.2.1R” was producing an authority marker that resolved, if it resolved at all, against whatever corpus the firm had assembled and was maintaining itself. Every retrieval-augmented compliance assistant and every vendor claim about grounded regulatory answers rested on a private copy of the rulebook rather than the published one.

The second is subtler and survives the first being fixed. The status is not hidden. The FCA marks it in the reference itself, an R for a rule and a G for guidance, and publishes it as a field on the provision. The difficulty is that the suffix travels inside the citation the agent produced. A record asserting COBS 4.12A.6R is asserting the provision and its binding status in the same breath, and taking the model’s word on the second is letting it grade its own work. In the chapter this prototype uses, 127 provisions are rules and 114 are guidance, sitting interleaved, so getting the suffix wrong is not an exotic failure.

So the question “did the agent cite a real rule” decomposes into something more useful than it first appears: does the provision exist, and is it the kind of thing that binds.

What changed

On 6 August 2026 the FCA published its Handbook as a free machine-readable API. Rules, technical standards and glossary, open to anyone with a registered account.2

This prototype was built the following day. That timing is the reason it exists rather than a boast: the gap it closes had been the stated blocker on an earlier piece of work, and the interesting thing about a blocker closing is finding out which half of the problem it was actually blocking.

The artifact

A draft financial promotion goes in. It is invented, and it contains the failures a first-line reviewer looks for: a guaranteed return, a comparison that implies no downside, an incentive to act before a deadline.

A model reviews it and produces a decision record rather than prose. Each finding is a tuple: which provision, which requirement under it, whether the promotion complies, and which line of the draft is the evidence. The prose a reviewer reads is rendered from that structure, so it cannot drift from it.

Then three checks run. None of them is a model.

Existence. The citation is resolved against the live Handbook. A provision that does not exist is caught outright, which is the failure fluent prose hides best, because an invented citation reads exactly like a real one.

Type. The suffix is stripped from the citation before resolution, so the provision is fetched by number alone and its type comes back from the FCA rather than from the record under review. If the record relies on a provision as binding and the regulator publishes it as guidance, that is a violation. One string comparison, no interpretation, and the comparison is between two sources rather than one source with itself.

Staleness. Every provision carries the date its current version took effect. If that date falls after the decision was taken, the text available today is not the text that applied.

The interface puts the draft on the left and the record on the right, with each finding sitting beside the actual Handbook text rather than a summary of it, its type badge, and its effective date.

What the prototype argues

A citation is a claim, and claims can be checked cheaply. Most of the effort in verifying regulated agent output goes into the hard question, whether the reasoning is sound. Two of the three checks in this prototype are not reasoning at all. They are lookup, and lookup against an authority the agent does not control removes a class of correlated error that no amount of additional reading removes. The checker can still be wrong. What it cannot be is wrong in agreement with the model about what the regulator said.

The rule-versus-guidance check is the highest value per line of code in the system. It needs no encoding, no mapping, no interpretation, and it catches a mistake a reader will wave through and a firm will answer for.

“Could not check” is a third state, and collapsing it is the bug. A grounding layer will routinely meet a rulebook it cannot reach: rate limited, degraded, or simply outside the coverage of whatever corpus the firm holds. That is not a pass and it is not a failure. The prototype renders it as its own state, in its own colour, because every system I have seen that flattens it flattens it into the wrong one. This was not a design insight. The API began returning gateway errors partway through a live run, the checker crashed, and crashing turned out to be more honest than what it had been doing before.

Where the regulator’s data stops is where the firm’s work starts. The API supplies a provision’s identity, type and text. It does not supply the provision’s logic, the statement of which conditions must hold for a rule to bite. That is prose, and turning it into something checkable is an interpretation of law rather than a data problem. So this prototype grounds resolution against real Handbook data and keeps entailment on an invented rulebook, and the seam between the two halves is the line between what a regulator commoditised in a day and what a firm still has to own.

The gap that did not close

The API returns the current rulebook. Ask it for a past date and it refuses, and says so plainly in its own documentation.3

Every compliance question that carries consequence is asked backwards. A supervisor does not ask what the rule says today. They ask what it said on the date the advice was given, and whether the firm applied it.

The history is not missing. The Handbook website carries a timeline, and a person can set it to a date and read the chapter as it stood.3 What they cannot do is have a program put the same question to the same authority. The shape of that gap is worth stating precisely, because it generalises well past the FCA: agent-ready is a property of the interface, not of the data. The current rulebook has been made agent-ready. The historical rulebook has been left human-readable.

What survives is better than nothing and worse than an answer. Because each provision carries its own effective date, a system can determine that the text it is reading is not the text that applied, even though the API will not hand back what did. The blind spot is not fillable at the machine interface. It is detectable. A system that abstains for a stated reason is a different object from one that answers confidently from the wrong version, and the difference is most of what governance is.

It follows that a machine-resolvable point-in-time record is the firm’s own problem. An archive started today gives deterministic coverage of decisions taken from today, and anything earlier has to be reconstructed from the website or bought from somebody who already did it. That is a dull piece of infrastructure, and much cheaper to start now than to want later.

What this isn’t

It is not a compliance product and nothing on the page interprets a rule. The checks ask whether a provision exists, whether it is the type the record claimed, and whether it changed. A firm’s obligation mapping, the thing that actually costs money to build and maintain, is untouched by any of this.

The comparison the harness was designed to make, between a model citing from memory and the same model handed the real chapter, is not established. Repeated runs varied widely, and an earlier version of the harness inflated the gap roughly threefold through a bug in its own citation parser: it was rejecting sub-paragraph references as malformed. Establishing that comparison needs many runs and an interval, not one run and a headline. The page says so where a reader will see it.

The draft promotion is invented and the firm does not exist. The rulebook is real.

Footnotes

  1. Same source, as of 7 August 2026: before the API, firms “could only get all this information through websites, monthly downloads and specialist compliance tools”.

  2. FCA, “Making compliance simpler: opening up the FCA Handbook through our new API”, published 6 August 2026, fca.org.uk/news/blogs/making-compliance-simpler-opening-fca-handbook-new-api. Endpoint behaviour, provision counts and field names in this entry were established by direct calls to the API on 7 August 2026, not from documentation prose.

  3. FCA Handbook, “Launch of Handbook API”, handbook.fca.org.uk, as of 7 August 2026: “The API does not provide past versions of Handbook content. Attempting to extract information from a past date using the API will return an error message.” Only current and future versions are served. The Handbook website itself does render past dates, through the timeline control on handbook.fca.org.uk. 2