Control
Rules you can read. Clauses you can trace. Approvals you can prove.
Every clause points to what enforces it, or says why nothing does. Every approval names its role, and every action leaves a record. No approval is ever made by the AI alone.
8 of 23 clauses shown. Tested on 8 test clients, all approved by Lena (control owner) on 11 Nov 2026.
1 / Coverage
A clause nothing checks is a gap, and a gap locks the release.
Each clause is enforced when a rule, step, deadline or check covers it. It is referenced only when it is mentioned but nothing checks it, and missing when nothing covers it at all.
- Release stays locked while any conflict, missing clause, referenced-only clause or undecided AI addition remains, and it also waits until the control owner approves the test set behind “tested”. This draft shows 4 items to resolve.
- A referenced-only clause is closed by a drafted check, or by Lena marking it guidance only, with a reason kept in the ledger.
- “Tested” counts only test clients that Lena has approved, so the AI never grades its own reading of a clause.
WLL §2 Cover only a defect first reported within 18 months or 18,000 miles
Rule in_period, 2 test clients, waiting for Lena
WLL §7(a) Tell the client about the state arbitration program
Mentioned in template t5. Nothing checks it was said.
Add a check to step 6: before any demand goes out, the case must show that the client was told, with the date and who told them.
WLL §5(c) Notice states the client’s choice of refund or replacement
Nothing yet: template t1 has the defect and the history only.
Add one sentence to the notice template, and have the gate test that the letter states the defect, the repair history and the client’s choice. The gate check is a new control.
Release is locked: 4 items to resolve. Two are here, two are on the design side.
| When | Then | Clause |
|---|---|---|
| Same defect repaired 3 or more times (fired for LL-2047) | Presumed lemon | WLL §3(a) |
| 30 or more days out of service in total | Presumed lemon | WLL §3(b) |
| Serious safety defect repaired 2 or more times | Presumed lemon | WLL §3(c) |
| None of the above | Not yet presumed: keep collecting repair orders | WLL §3(a) |
| When | Then | Clause |
|---|---|---|
| Recipient is the manufacturer’s designated address from the owner’s manual, sent by email or certified mail | Pass | WLL §5(b) |
| Recipient is anyone else, the dealer included (fired for LL-2047) | Hold the letter and propose the designated address | WLL §5(a) |
Marked with the pink bar: the row that fired for LL-2047 on is_lemon, and the row that held the first draft of its notice on notice_recipient.
2 / Rules
Where the law decides, a table a lawyer can read decides.
Each rule is a short table: when this, then that, and the clause behind it. Where a rule decides, no AI call is made, and a rule changes only as a new version that people approve.
- The AI can draft a rule, but a rule or control changed by the AI alone is never allowed.
- The same table runs in the test clients and on live cases, so what you read is what runs.
3 / Approvals
Who may approve what, written down.
Anything that adds, weakens or bypasses a control needs the control owner as well as the designer. Controls are rules, clause checks, statutory deadlines and gate checks. Reminders and follow-ups are routes.
Who approves what The AI has its own column, because it never approves.
| Change | Designer | Control owner | Lawyer | AI |
|---|---|---|---|---|
| Release a package versionOmar (designer) releases. He can release only when every control in the version carries Lena’s approval. | approves | approves every control in the version first | not involved | drafts only |
| A route change that touches no controlFor example, reordering internal tasks, or a reminder or follow-up. | approves | not involved | not involved | drafts only |
| Anything that adds, weakens or bypasses a controlControls are rules, clause checks, statutory deadlines and gate checks. Reminders and follow-ups are routes: they need the designer only. | approves | also approves | not involved | drafts only |
| Marking a clause as guidance onlyThe reason is kept in the evidence ledger. | not involved | approves, with a reason | not involved | drafts only |
| An outgoing letter to a manufacturer or a dealerThe lawyer sees the full text, the resolved recipient and the attachments. | not involved | not involved | approves the exact letter | drafts only |
| A message to a clientNothing that reads as legal advice reaches a client without a lawyer. | not involved | not involved | approves the exact message | drafts only |
| A law change that edits a rule or a deadlineThe AI maps the change to rules and open cases. Lena approves the rule change; Omar releases v1.2. | approves the release | approves | informed | drafts only |
| A new branch from repeated exceptionsThe replay on past cases comes with the proposal. A branch that adds no control, like the dealer branch, needs the designer only. | approves | also approves if it touches a control | not involved | drafts only |
| An action that is not on the approved menu, such as accepting an offer for a clientNot available to anyone on the client’s behalf: the client decides. | not involved | not involved | not involved | ⊘ cannot propose it |
| Any rule, check, term or approval changed by the AI aloneNo approval is ever made by the AI alone. The AI drafts and people approve. | approves a draft that touches no control | approves a draft that touches a control | approves a draft letter or message | ✕ never approves |
The roles at Harbor Legal. Omar designs, Lena owns the controls, Maya is the supervising lawyer.
4 / The outbound gate
The AI can stop. Only rules and people release.
Every letter, email or document sent by or checked through ai4bp passes the outbound gate first. A check can hold it. Only an exact rule or a person lets it through.
- The AI can stop, but cannot release. No approval is ever made by the AI alone.
- A false alarm costs someone a minute. A missed conflict is the failure ai4bp exists to prevent.
- The email goes out through MCP, a standard way for a program to offer its tools to an AI, such as email and documents. No agent calls an MCP tool directly: ai4bp’s gate does, after the checks pass.
- New situations, never new powers: the AI works inside the approved menu and cannot add to it.
- ✓On the approved action menupass
- ✓Rulespass
- ‖Recipient, WLL §5(a)held
- ✓Disclosure, WLL §5(c)pass
- ◐Approval, Maya (lawyer)waiting
The letter is addressed to Brightwater Norvik, the dealer. WLL §5(a) requires the manufacturer’s designated address, as stated in the owner’s manual. A notice given only to a dealer does not satisfy it.
Proposed fix: send it to notices@norvik-motors.example, read from the owner’s manual stored in Vyxlo, page 14.
Nothing was sent. The hold is recorded in the evidence ledger.
5 / The evidence ledger
Proof of every action, from proposal to confirmation.
For each action the ledger keeps what was proposed, permitted, approved, performed and confirmed, with who did it and the clause it served. A hold is recorded too.
One notice letter, seven records Oldest first.
| Record | What happened | By | Clause |
|---|---|---|---|
| proposed | The notice letter was drafted from template t1 and the case facts. | ✦AI open-weight model · self-hosted | WLL §5 |
| ‖held | The gate held the letter: it was addressed to the dealer, not the manufacturer’s designated address. | Rule notice_recipient no AI call | WLL §5(a) |
| ✓approved | Maya applied the recipient fix: the recipient becomes notices@norvik-motors.example, read from the owner’s manual stored in Vyxlo. | ◉Acting aslawyer | WLL §5(a) WLL §5(b) |
| permitted | The gate let the letter through to approval: on the menu, rules pass, recipient pass, disclosure pass. | Gate checks rules only | WLL §5(a) WLL §5(c) |
| ✓approved | Approved and sent the notice letter: the exact letter, the recipient and three repair orders, at 10:42. | ◉Acting aslawyer | WLL §5(a) |
| ↗sent | Performed: the email was sent by email.send to notices@norvik-motors.example. Message msg-48201. | Gateway the system that sent it | WLL §5(b) |
| confirmed | The outcome was checked against the mail server: accepted, verified. Norvik’s 14 days run to 25 Nov. | Gateway the system that checked | WLL §6(a) |
Performed is a record, not a guess. The send is recorded as performed, then confirmed against the mail server before the step counts as done.
Decisions on the record Package decisions, then one case decision.
| Record | What happened | By |
|---|---|---|
| ✓approved | WLL §1(a) to (d) marked guidance only, at 09:18 on 11 Nov 2026. Reason: no check can enforce a definition; the rules that use these terms cite §2 and §3. | ◉Acting ascontrol owner |
| ✓approved | The test set behind “tested on 8 clients”, at 10:19 on 11 Nov 2026. | ◉Acting ascontrol owner |
| ✓approved | Release of v1.0 at 10:25, after every control in it and its test set carried Lena’s approval. | ◉Acting asdesigner |
| ✓approved | Approved the client message on Norvik’s cash-and-keep offer. Sent with the lawyer’s comparison against WLL §8. | ◉Acting aslawyer |
Decisions are evidence too.
Marking a clause guidance only, approving the test set, releasing a version, approving a client message: each is recorded with its reason and the role that decided.
ai4bp is not a GRC platform. It reads your rule books, enforces them on processes and outgoing documents, and keeps this evidence. It does not manage risk registers, audits or attestations.
6 / The AI registry
Every AI function is registered, bound and evaluated.
Each function has a named owner, a model binding and an evaluation with a pass mark. Every binding is an open-weight model, self-hosted, and a function is released only after it passes its evaluation there.
What the AI is allowed to do here None of these can approve or release anything.
| Function | Binding | Evaluation | Owner | Authority |
|---|---|---|---|---|
| Draft the packageDesign. Reads the statute and the practice sheet, and drafts steps, rules, deadlines, templates and automation points. | open-weight model · self-hosted | Westland reference package written by a lawyer, 23 clausesPass mark: Every clause covered or flagged✓ passed · last run 9 Nov 2026 | Lena (control owner) | Drafts only. Cannot approve or release. |
| Draft a clause checkDesign. Turns a clause that is only mentioned into a check, such as the arbitration check for WLL §7(a). | open-weight model · self-hosted | Clauses with lawyer-written checks, 23 clausesPass mark: Check matches the lawyer’s on every clause✓ passed · last run 9 Nov 2026 | Lena (control owner) | Drafts only. The control owner approves every check. |
| Compare two repair visitsRun · eligibility. Says whether two repair orders describe the same defect when the system codes do not settle it. | open-weight model · self-hosted | Labeled pairs of repair visits, 120 pairsPass mark: No wrong same-defect call in the set✓ passed · last run 9 Nov 2026 | Maya (lawyer) | Proposes. Maya confirms any case the rules cannot settle. |
| Draft the notice letterRun · notice. Fills the notice template from the case facts and the repair orders. | open-weight model · self-hosted | Notice drafts reviewed by a lawyer, 40 lettersPass mark: All three WLL §5(c) statements present✓ passed · last run 9 Nov 2026 | Maya (lawyer) | Drafts only. The gate checks it and Maya approves the exact letter. |
| Propose the next step in an exceptionRun · exceptions. When a case leaves the designed path, proposes one action from the approved menu and cites the clause. | open-weight model · self-hosted | Past exceptions with the action people took, 60 casesPass mark: Never proposes an action off the menu✓ passed · last run 9 Nov 2026 | Maya (lawyer) | Proposes from the menu only. Cannot add an action or accept anything for a client. |
| Draft a client messageRun · exceptions. Writes the plain-language message to the client, with the numbers from the lawyer’s comparison. | open-weight model · self-hosted | Client messages reviewed by a lawyer, 30 messagesPass mark: No advice beyond the lawyer’s comparison✓ passed · last run 9 Nov 2026 | Maya (lawyer) | Drafts only. Nothing is sent until Maya approves. |
| Draft a branch from repeated exceptionsImprove. Finds exceptions resolved the same way, drafts a branch and replays it on past cases. | open-weight model · self-hosted | Closed cases with the action people took, 14 cases for this branchPass mark: Every difference explained✓ passed · last run 10 Nov 2026 | Omar (designer) | Proposes a new version. The designer approves. |
| Map a law change to rules and open casesImprove. Reads an amendment, finds the clauses, rules, templates and open cases it touches, and drafts the changes. | open-weight model · self-hosted | Past amendments with known impact, 12 amendmentsPass mark: Every affected rule and case found✓ passed · last run 10 Nov 2026 | Lena (control owner) | Proposes a new version. The control owner approves. |
Owners are people. Every function has a named owner and a stated authority. The registry has no function that approves or releases.
Try it
Resolve the four review items, have Lena approve the tests, then release.
Play the designer, the control owner and the lawyer in the lemon-law demo. See the clause coverage change, then find your own approvals in the ledger.