Skip to content
How it decides

The model proposes. Code decides.Every outcome is signed.

Each cycle the agent reads the whole book. A model argues for an action, rules in ordinary code decide whether it may happen, and only then does money move. Payments, holds and refusals alike are signed into a hash-linked ledger anyone can verify.

Decision receiptap · pay

Northwind Studio

INV-2291 · milestone 2 of 3

4,200.00USDC

  1. 01 Observe
    • Screened · no sanctions match
    • Milestone verified · pull request merged
  2. 02 Reason

    model saysPAYconfidence 0.92

    “Matches the contract and the milestone shipped. Due in 3 days.”

  3. 03 Enforce
    • invoice.duplicate_of_settled, passed
    • counterparty.high_risk, passed
    • counterparty.payment_limit, passed4,200 within the 10,000 USDC limit
  4. 04 Sign
    Paid

    Settled on Arc

hash 7b1e…c21eprev b386…b5be

Live ledger head

#7416system · cycle_completeb386…b5be
#7413treasury · hold4330…4c13
A replay with illustrative vendors and amounts. The stages, rule names and outcomes are the agent’s own; the entries beneath it are the live signed ledger.

How a decision becomes an action

One loop. Two layers of judgment. One receipt chain.

Each cycle the agent reads the whole book. A model argues for an action, code decides whether it may happen, and only then does money move. Every outcome is signed into the chain.

  1. 01 · Observe

    The agent reads the whole book.

    Each cycle starts from the book, screening results and verified work.

    • Compliance
    • Payables
    • Contractors
    • Treasury
    • Forecast
  2. 02 · Reason

    The model proposes.

    An LLM — or, when none is configured, a transparent heuristic — returns an action, its reasoning and a confidence. It can argue. It cannot pay.

    { action: "pay",
      confidence: 0.81,
      reasoning: "…" }
  3. 03 · Enforce

    Code decides.

    Duplicate, risk and payment-limit rules run as ordinary code. They can overrule the model; nothing the model writes can overrule them.

    • invoice.duplicate_of_settled
    • counterparty.high_risk
    • counterparty.payment_limit, failed
  4. 04 · Act

    Only then, money moves.

    An allowed payment goes to Circle on Arc. A refused or held one stops at the boundary, and its reason is kept.

    confirmedpayment intent · Arc

  5. 05 · Sign

    Every outcome becomes a receipt — refusals included.

    Each entry is signed with Ed25519, and its hash covers the one before it. Change any entry and every later hash stops matching — the chain verifier names the first entry that breaks.

    1. #1041compliance · screened

      hash 3c9e…3a71

      prev …

    2. #1042ap · refused

      hash 9f02…e0b5

      prev 3c9e…3a71

    3. #1043ap · paid

      hash b4e1…c0d8

      prev 9f02…e0b5

    4. #1044treasury · hold

      hash e7a2…1f96

      prev b4e1…c0d8

Claims with receipts

Do not take the landing page’s word for it.

01

A model can recommend payment. Code can still refuse it.

Risk, screened limits, evidence and liquidity are checked before the provider boundary. The receipt keeps both the model’s argument and the rule that overruled it.

Read the payments code refused →

Payment decision

modelpay
coderefused

02

Screening changes authority, not history.

Every screen derives a limit from the business baseline. A failed lookup keeps the previous verdict instead of silently clearing the counterparty.

See how risk sets the limit →

Payment authority

Clear
100% baseline
Medium
25% baseline
High
0% · blocked

03

Treasury moves must beat their own cost.

Projected yield has to exceed the sweep-and-redemption round trip. Cash needed for near-term obligations remains liquid.

Read what the reserve did →

Move-money test

Yield

projected

Cost

sweep + redeem

Otherwise the cash stays liquid.held

04

The audit log is a cryptographic receipt, not a feed.

Human, agent and system actions are Ed25519-signed and linked to the entry before them. The verifier replays authorship, content and continuity on demand.

Verify a ledger export →
signed

Ed25519 · SHA-256

hash = sha256(prev ‖ body ‖ signature)

Quality Lab39 of 39 scenarios right

Each scenario runs through the real decision code on every change, with the model's answers scripted, often to what an attacker would want.

46 real decisions from the team's own shadow-mode workspaces, replayed through today's code: 37 reach the same outcome, 9 cannot be rebuilt from the record, 0 wrong payments.

0 wrong payments
  • Prompt injection8 of 8
  • The payee and its address8 of 8
  • Screening3 of 3
  • Limits and approvals4 of 4
  • Matching and duplicates6 of 6
  • Workspace switches2 of 2
  • When the model says no2 of 2
  • Sending money once3 of 3
  • Clean bills3 of 3

A scenario is right when money moved or stopped as expected, with the expected status and rule.

A wrong payment is any transfer or schedule where money should stop, a transfer to an address other than the one on file or for an amount other than the bill's, or a second transfer for one bill.

Every scenario and its result →Every replayed decision →

Start with one bill

See what the agent decides on your next bill.

Sign in with your email, open a workspace in shadow mode and add a bill. Its decision and the reason arrive within about a minute. No wallet or funds needed to start.

  1. 1.Sign in by email link
  2. 2.Open a workspace, shadow mode on
  3. 3.Add one of your bills
  4. 4.Read the agent's decision and why

Already have a workspace? Sign in