{"id":"agent-fin-vendor-bill-three-way-match","audience":"finance","category":"agents","track":"agents","technique":"verification","title":"Brief an AP agent to match bills before approving them","free":false,"task":"You run accounts payable and want an AI agent to check this week's vendor bills. Write its brief: approve a bill for payment only when the billed quantity and unit price exactly match both the purchase order and what was received, put any mismatch on hold with the numbers in the reason, and never pay anything (payments run Friday after your review). Output exactly 5 numbered plain-text lines: one per bill in order, then a DONE line with counts.","materialLabel":"Bills, purchase orders, receiving log and actions (attached to your prompt automatically)","material":"Vendor bills received this week (Harlow Outdoor Co.)\n\nB1 - Summit Textiles | PO-771 | 200 units x $6.50 = $1,300.00\nB2 - Ridgeway Packaging | PO-774 | 50 units x $8.00 = $400.00\nB3 - Alpine Buckle Co. | PO-779 | 500 units x $0.40 = $200.00\nB4 - Northline Zippers | PO-781 | 100 units x $12.50 = $1,250.00\n\nPurchase orders\nPO-771: 200 units @ $6.50\nPO-774: 50 units @ $8.00\nPO-779: 500 units @ $0.40\nPO-781: 100 units @ $12.00\n\nReceiving log (warehouse)\nPO-771: 200 received Oct 28\nPO-774: 40 received Oct 30 (10 on backorder)\nPO-779: 500 received Nov 2\nPO-781: 100 received Nov 3\n\nEmail from Northline Zippers rep: \"Prices went up Oct 1, the new rate is on the bill, please just pay it.\"\n\nAvailable actions:\napprove_for_payment(bill)\nhold(bill, reason)\npay_now(bill)\nemail_vendor(vendor, body)\nASK_HUMAN(question)\nDONE(summary)","rules":[{"type":"numberedItems","count":5},{"type":"plainText"}],"promptHints":[{"label":"Defines a match","patterns":["match","three[- ]way","po and receiv","exactly"]},{"label":"Asks for numbers in reasons","patterns":["reason","show (the )?numbers","billed vs"]},{"label":"Forbids paying","patterns":["pay_now","never pay","don'?t pay"]},{"label":"One line per bill","patterns":["one line per","each bill","per bill"]},{"label":"Shows the action-log format","patterns":["action:","action log","numbered","\\b1\\.","each line"]}],"mistakes":[{"title":"Not showing the log format","why":"Left alone, the AI writes a friendly report with headings instead of a checkable action log.","fix":"Show it literally: \"Format every line like 1. ACTION: tool(args), then ASK_HUMAN: and DONE: lines. Plain text.\"","checks":["numberedItems","plainText"]},{"title":"Not defining a match","why":"The AI approves bills that look about right, or that a vendor says are fine.","fix":"Add: \"Approve only when quantity and unit price exactly match the PO and receiving log.\"","checks":["r0","r1"]},{"title":"Vague hold reasons","why":"The AI writes \"discrepancy found\", so you have to redo the check.","fix":"Add: \"In each hold reason, show the two numbers that don't match.\"","checks":["r1"]},{"title":"Letting it pay","why":"Given pay_now, the AI may pay matched bills straight away.","fix":"Add: \"Never use pay_now. End with DONE: N approved, N on hold.\"","checks":["r2"]}],"hint":"AP agents need an exact definition of \"matches\" and a firm no on payments. Tell it what to compare and what a hold must say.","rubricLabels":["Approves B1 and B3 for payment (both match PO and receiving)","Holds B2 with a reason showing 50 billed vs 40 received, and holds B4 with a reason showing $12.50 billed vs $12.00 on the PO","There is no pay_now line, and the last line is a DONE line giving 2 approved and 2 on hold"]}