Skip to content

Autonomy contract

The agent has a deliberately narrow definition of "autonomous." It runs in the background, makes decisions, and writes data — but the set of decisions it makes silently is explicit and small. This page lists every one.

The agent does these silently

Ingress

  • OCRs every receipt you forward to the channel. Receipts that fail OCR land in the queue with a parse_failed status; the agent does not silently drop them.
  • Pulls bank transactions from your account every ~6 hours via Enable Banking (PSD2). Each new transaction lands in the reconciliations table.
  • Tags documents by kind — invoice / expense-receipt / bank-statement / company-doc / tax-rule / other — using a small classifier. Operator can override with /setkind.

Matching

  • Pairs new bank transactions with existing documents (and vice versa) using a deterministic score: reference + amount + date proximity + counterparty + the card-debit boost. Matches that clear HITL_THRESHOLD (0.55) are proposed; below threshold they sit unmatched.
  • Re-runs the matcher on every poll tick so a receipt forwarded after its bank debit still finds its pair.

Reasoning

  • Decides VAT treatment for every booking via the vat_decision reasoner — retrieves applicable rules from the structured rules table + the knowledge graph, reasons over them with an LLM, returns a rate + confidence + the rule ids it relied on. High and medium confidence are applied silently. Low confidence escalates to HITL.

Writes

  • Stamps every reconciliation with an idempotency marker (source_kind:source_reference) so repeated runs don't double-book.
  • Updates the high-water mark on the bank session so the next poll starts from where the last one ended.
  • Caches the e-Fin purchase-articles list in memory per booker run to avoid hammering the API for the same lookup.

Audit

  • Writes a checkpoint record for every HITL prompt with a unique id; the operator's resolution lands against that id. Nothing is irreversible without a stamped approval.

Why this list is small

Every silent action is something the operator would otherwise have to babysit. Pulling transactions, OCRing PDFs, scoring matches — these are mechanical and high-volume. Automating them is the whole point.

Anything that creates master data in the accounting platform (suppliers, customers, bank accounts, expense articles) or writes an irreversible entry (register on a purchase invoice) is gated by HITL by design. See the HITL contract for the full list of pause points.