Skip to content
Business BenchA benchmark for AI agents on business work

Process track·Receiving, matching and paying·clerical band·3 turns

A week of purchase orders, receiving and invoice matching

Riley Park buys and runs AP at Northgate Valve Co. On Monday the week's approved requisitions go out as purchase orders; on Wednesday the deliveries are received from their packing slips; on Friday the vendor invoices are entered and matched, the mismatches held with their reasons, and a handoff note left for the operations manager.

procure-to-pay-week·Riley Park, Buyer and AP clerk, Northgate Valve Co.·source

Pilot campaign

Proto passed 5 of 5 attempts, median 12.6 minutes; Codex passed 5 of 5 attempts, median 5.9 minutes. Provisional: run in local mode, before the practitioner review. Conditions and data.

The requests

The example below is generated at seed 0. Each turn is a new agent session on the stated business date, with the ERP as the previous turns left it and the same working folder. The request is sent after a fixed preamble that names the company, the role, the business date, the erp command and the handbook folder.

Turn 1Monday, 5 October 2026
from Maya Chen (Operations manager)
budget 20 min
Morning. This week's approved requisitions are in the system. Get the POs out today. I'm travelling until Friday.
Turn 2Wednesday, 7 October 2026
from Luis Ortega (Warehouse lead)
budget 20 min
Trucks came in yesterday and this morning. The packing slips are in the receiving inbox. Please get everything received today.
Turn 3Friday, 9 October 2026
from Maya Chen (Operations manager)
budget 20 min
Invoices for this week's deliveries are in the AP inbox. Enter and match them. Anything that doesn't match goes on hold with the reason. Leave me a short note in handoff.md saying what's on hold and why.
GradingMonday, 12 October 2026

The runner advances the clock to this date, lets the counterparties act, and grades the final state.

Checks

The attempt passes only if every check passes. Clause references point into the handbook below. The reference projections and planted truth are in the repository, not on this page. A passing verdict establishes these declared conditions, not exhaustive business correctness.

CheckTypeHandbook clauses
PO quantities and pricesstate_valuesPUR-1.1PUR-3.1PUR-4.2PUR-4.3PUR-4.4PUR-4.5
PO lines orderedstate_setPUR-1.1PUR-3.1PUR-4.2PUR-4.4
PO dates and lead-time riskstate_valuesPUR-5.1PUR-5.3
vendors ordered fromstate_setPUR-3.1PUR-3.2PUR-4.4
nothing ordered from a vendor on quality holdaudit_forbiddenPUR-3.1
receipts and refusalsstate_valuesREC-1.1REC-2.1REC-3.2REC-4.1
refusal reasons and substitutes receivedstate_valuesREC-3.2REC-4.1
invoice status and hold reasonsstate_valuesAP-2.1AP-2.2AP-2.3AP-2.4AP-2.5AP-3.1
invoices enteredstate_setAP-1.1AP-1.6
one entry per invoice, duplicate not enteredstate_valuesAP-1.6
invoice lines as billedstate_valuesAP-1.4AP-3.1
no billed amount changed to force a matchaudit_forbiddenAP-1.4
no hold released by the clerkaudit_forbiddenAP-4.1
control accounts tie to their subledgersledger_ties
master data untouchedstate_unchanged
note names the Mid-State price holdtext_sentence_matchesAP-2.2
note names the Coastline quantity holdtext_sentence_matchesAP-2.3
note names the Keystone hold for the refused nutstext_sentence_matchesAP-2.4

Negative controls

Each negative control is a reference policy with one plausible mistake built in. Validation requires it to fail every check listed here, which tests sensitivity to that specified mistake on the validated seeds. These targeted controls do not estimate error rates on arbitrary agent outputs.

ControlMust fail
one_po_per_requisitionPO quantities and prices; PO lines ordered; vendors ordered from; nothing ordered from a vendor on quality hold
exact_quantitiesPO quantities and prices
ignore_lead_timesPO dates and lead-time risk
receive_everythingreceipts and refusals
force_matchinvoice lines as billed; no billed amount changed to force a match
enter_everythingone entry per invoice, duplicate not entered

Handbook

The company policy the agent receives in ./handbook. The ERP enforces some of these rules itself; the rest are the agent's to follow.

Northgate Valve Co. handbook

Company policies for purchasing, receiving and accounts payable. Clause numbers are referred to in the ERP, in audits and in performance reviews, so cite them when you explain a decision.

Who does what: department heads approve requisitions up to their limit and forward larger ones; buyers turn approved requisitions into purchase orders; the warehouse and buyers receive; AP clerks enter and match vendor invoices; the AP supervisor or the controller releases holds and approves invoices for payment.

Accounts payable (AP)

AP-1.1 Enter every vendor invoice that arrives in the AP inbox against its purchase order, and record which inbox message it came from.

AP-1.4 Enter an invoice exactly as the vendor billed it: the same quantities, unit prices, freight and total. Never change what the vendor billed to make an invoice match the purchase order; holds exist for that.

AP-1.6 A second copy of an invoice you already have, including the same invoice number written differently (with or without dashes or spaces), is a duplicate. Do not enter it. Mark the inbox message as a duplicate and reference the invoice already entered.

AP-2.1 Three-way match, line by line: the billed quantity must not exceed what was received less what was already billed, and the billed unit price must be within 2% of the purchase order price.

AP-2.2 A billed price more than 2% above or below the purchase order price: put the invoice on hold, reason price, on that line.

AP-2.3 A billed quantity above the quantity received and not yet billed, where some was received: hold, reason quantity, on that line.

AP-2.4 A line billed for goods of which nothing was received: hold, reason no_receipt, on that line.

AP-2.5 Validate an invoice only when every line matches. One failing line holds the whole invoice.

AP-3.1 Freight of up to $100.00 per invoice is accepted without a purchase order line: enter it as a freight line (it posts to 5100 Freight in). Freight above $100.00: hold, reason freight.

AP-4.1 Only the AP supervisor or the controller releases a hold or approves an invoice for payment. Clerks place holds; they never release them.

Purchasing (PUR)

PUR-1.1 Buy only against approved requisitions. Every purchase order line references the requisition line or lines it fills.

PUR-1.2 Send purchase orders on the day the requisitions are released to purchasing, unless a clause below says to go back to the requester.

PUR-3.1 Never order from a vendor that is inactive or on quality hold (the quality-hold flag on the vendor record). Order the item from its preferred vendor instead. If the item has no usable preferred vendor, return the requisition line to the requester.

PUR-3.2 A requisition may name a vendor. Use it when it is active, not on quality hold, and holds a price agreement for the item; otherwise PUR-3.1 applies.

PUR-4.2 Consolidate requisition lines for the same item, vendor and ship-to raised in the same week into one purchase order line. Vendor price agreements price each purchase order line on its own quantity, so split lines can miss a quantity break.

PUR-4.3 Price every line at the vendor's price agreement for that line's quantity. Do not type over agreement prices.

PUR-4.4 A requisition line without an item number (supplies, repairs and other non-stock purchases) is ordered as a non-stock line from the vendor the requisition names, at the requisition's estimated price, charged to the account on the requisition line. PUR-3.2 and PUR-4.3 apply to item lines only; if the named vendor is inactive or on quality hold, return the line to the requester.

PUR-4.5 When the quantity needed is below the vendor's minimum order quantity (the item's MOQ), order the MOQ if the excess will be used within 90 days at the item's average monthly usage over the last six months (the item-usage report). Otherwise return the requisition line to the requester.

PUR-5.1 Order for the requisition's need-by date.

PUR-5.3 When a need-by date is inside the item's lead time (the lead time on the item record, in workdays from today), order for the earliest date the lead time allows, mark the purchase order line at risk, and tell the requester.

Receiving (REC)

REC-1.1 Receive against the purchase order, from the packing slip and what physically arrived. Record every line that arrived: what you take into stock and what you refuse, with the refusal reason.

REC-2.1 Accept an over-shipment of up to 5% of the ordered quantity and receive it in full. For more than 5% over, receive the ordered quantity and refuse the excess (reason: over_shipment).

REC-3.1 For lot-controlled items, record each lot and its expiry date as printed on the packing slip.

REC-3.2 Refuse any lot with less than six months (182 days) of shelf life left on the day it is received (reason: short_dated). Accept the other lots of the same shipment.

REC-4.1 Receive a substitute item only if it is on the ordered item's approved substitutes list, and receive it against the ordered item's purchase order line. Refuse any other substitute (reason: wrong_item).

REC-5.1 Goods refused at the dock go back to the vendor on their truck or the next pickup; there is nothing further to record.