Coverage
16 SADC markets
Case study · AI governance for payments
The Corridor Register is a compliance register for the sixteen SADC markets: what the law requires of a payment business in each, which instrument imposes it, what happened when a real company applied to a provider, and what changed since you last looked. Its only asset is that every line is true, dated and cited. I used an AI model for the slow intake work, and built the system so the model can never be the source of a fact.
Coverage
16 SADC markets
Publish gate
10 refusal rules
Model write access
None
01 / The problem
Anyone deciding whether to operate a payment business in a southern African market asks the same questions: am I obliged to register, under which instrument, and will anyone onboard me? The answers sit in 135-page draft directives, exemption notices, and rejection emails from providers. What the buyer needs is the instrument, the issuing authority, the date, and a link they can hand to their own lawyer.
Reading that material into structured records is slow, which makes it an obvious job for a language model. It is also where a model is most dangerous. A model that reads "we'd need to see audited financials" and records a capital threshold has invented exactly what a compliance reader acts on. So has one that turns "no rule was found" into "this is unregulated". One fabricated line, found once, and nothing else in the register is believed.
The design rule: the model is an intake clerk, not a source. It may restate what a document says. Anything the document does not say comes back empty and named as a gap. A figure or a reading the model worked out counts as fabricated, even when it happens to be right.
02 / How a fact gets in
03 / Mapped to NIST AI 600-1
NIST's Generative AI Profile names twelve risks specific to generative models. This is how the register handles each one that applies, and where it does not.
| Risk | Control in the register |
|---|---|
| Confabulation | Schema-constrained output. Gaps are named, never guessed. No number is inferred from a neighbouring number. Absence is never recorded as "unregulated" without a source that positively says so. Quotes are verified against the source before approval. |
| Human–AI configuration | The model proposes, a person approves, a validator has the final word. Nothing else can write to the register. |
| Information integrity | Every line carries the date it was verified; a requirement past its review date is withheld, not caveated, from findings and from the change alerts subscribers receive. The regulator's words and our reading of them are separate fields. A reading needs the regulator's own text or an official source behind it, and "high confidence" is only allowed when the regulator's own text supports it. A provider's silence is always recorded as inferred. |
| Data privacy | Extraction runs on a local model, so correspondence stays on the machine unless a cloud model is chosen by name. Anything said by someone who did not expect to be quoted is never published, and anything under an NDA is refused at the gate. |
| Information security | Source documents are treated as data, not instructions; a provider's email may want to be described favourably. The schema and the human approval limit what an injected instruction could achieve. This is prompt injection, the top risk on OWASP's LLM list. |
| Value chain | The model is swappable, and a warning prints every time text is about to leave the machine. |
| Intellectual property | Quote fields hold under 25 words, copied exactly or left empty. |
| Harmful bias | Not yet addressed. Which providers get approached shapes what the register can say, and nothing measures that skew today. |
| CBRN, violent, obscene, environmental | Not applicable to a system that only extracts, with no generated text reaching readers. |
04 / What review found
A review in October 2026 found three gaps. Each is now fixed.
A later regulatory layer stored its dates under names the publish gate did not know, so it read them as undated and withheld every finding that cited them. Over-withholding is the right way to fail, but it blocked sound findings too. The gate now reads every store's dates and enforces each record's own review date.
The prompt told the model to copy quotes character for character. Nothing verified it, so a paraphrase could reach the register as a provider's own words. Approval now refuses any quote that is not in the source.
The policy said extraction runs locally. The code switched to a cloud model whenever an API key happened to be set. Leaving the machine is now opt-in by name: a key in the environment is not consent to send someone's off-the-record remark to a third party.
05 / Limits and what transfers
In October I cut everything operational from the register: transfer costs, liquidity, payout rails, corridor sizes. The test was who asks the question. A compliance officer asks what obliges them; an engineer asks whether a payment will land. A product that answers both answers neither convincingly, and every field the model can fill is a field it can get wrong. A smaller scope is a smaller surface to govern.
The same pattern fits anywhere a payments team wants a model to read what people read by hand today: KYB packs, dispute evidence, partner due diligence, regulatory change. The model does the reading. Schemas, provenance, freshness rules and a gate that refuses decide what counts as true.