AI governance

Your controller writes the rules, not us

Level 2 means an agent acts inside policy. That is meaningless unless someone in your finance team can actually author the policy — and can see what it would have done before turning it on. This is that surface.

policy · ap_autopostdraft v5

Post a coded vendor bill automatically when all of these hold:

Simulated against your last quarter — 1,284 bills
603 posted automatically
681 held
Balanced. Most customers settle around here.
Simulation runs before the policy is enabled. You see what it would have done last quarter, not what it might do next.
Simulated against your historyVersioned, never editedAuthored by finance, not engineering

What it does

Six properties of a policy that can be trusted.

Conditions, not code

Amount thresholds, PO match state, tolerance, vendor history, GL account exclusions, entity, department. Composed by a controller in an afternoon rather than requested from engineering.

Simulation before enabling

Every draft policy runs against your last quarter and reports what it would have auto-posted, what it would have held, and — critically — how many of the auto-posts your team later corrected.

Versioned, never edited

A policy change creates a new version. Every posted transaction records the exact version that permitted it, so a year later you can show what the rule was at the time.

Bound by authority

A policy cannot grant more than the agent’s authority level allows. Writing a rule that would auto-release payment is rejected at save, not at run time.

Separated from administration

Controllers author policies; administrators grant authority levels. Deliberately different people, because one person doing both is the control failure.

Drift detection

If a policy that was safe starts producing corrections — because your vendor mix changed — it flags rather than continuing quietly.

Simulation is the part that makes this usable

Asking a controller to write a rule that will automatically post financial transactions is asking them to accept an unbounded risk on the basis of a description. Reasonably, most refuse — and then Level 2 never gets enabled, and the automation you bought sits unused at Level 1 forever.

Running the draft policy against your own last quarter changes that conversation entirely. Instead of "do you think this rule is safe," it becomes "this rule would have auto-posted 412 of your last 1,284 bills, and of those, four were subsequently corrected by your team." That is a decision a controller can actually make.

Nobody should enable an automated posting rule on the strength of a description. They should enable it on the strength of what it would have done last quarter.

The number that matters is corrections, not coverage

Simulation reports both how much a policy would automate and how many of those automated postings your team later corrected. The second number is the one to optimise, and it moves in the opposite direction to the first.

A policy with a single condition automates the most and has the worst correction rate. Adding conditions reduces coverage and improves safety. Most customers settle at three or four conditions, which is a judgement about their own risk tolerance rather than something we should be making for them.

Who writes policies, and who cannot

Policy authorship sits with the controller. Authority levels — which agent may operate at which level at all — sit with an administrator. Those are deliberately different permissions and, in most of our customers, different people.

The reason is straightforward: if one person could both raise an agent to Level 2 and write the policy defining what Level 2 permits, they would hold an unreviewed ability to automate financial postings. Splitting it means a policy is always constrained by a grant somebody else made.

Some customers go further and require two administrators to approve any authority increase. That is a configuration we support, and for companies with a private-equity sponsor or a lender covenant it is usually worth turning on.

Policies cannot exceed authority

A rule that would permit an agent to release funds, close a period, or post into a closed period is rejected when you try to save it, with the reason shown. The permission model is the outer boundary and policy operates strictly inside it.

Questions

What controllers ask.

Do we need engineering to write a policy?
No. It is a condition builder, and a controller who understands their own approval matrix can author one in an afternoon. If a policy needs code, the design has failed.
What happens to in-flight work when we change a policy?
Items already proposed under the old version complete under it, recorded with that version. New work uses the new version. Policies are never retroactive.
Can we test a policy without enabling it?
That is what simulation is. You can run any number of drafts against history and enable none of them.
How do we know a policy is still safe six months on?
Drift detection compares ongoing correction rates against what the simulation predicted. If your vendor mix changes and a policy starts producing corrections, it flags rather than continuing quietly.
Can a policy be scoped to one entity?
Yes — per entity, per department, per vendor, per GL account. A common pattern in groups is a looser policy in operating companies and nothing at all at the holding level.

See what a policy would have done.

Send a quarter of bills and we will simulate several policy shapes against your own history.