| { |
| "id": "JE-06", |
| "title": "Three-way match: PO, invoice, payment", |
| "tier": "L2", |
| "family": "Evidence matching", |
| "sources": [ |
| "DS-A", |
| "DS-J" |
| ], |
| "mapping": "purchase_order_number, purchase_order_line_number, contract_number and amount are native. Generate the matching PO and invoice documents in the support pack, with seeded discrepancies in quantity, unit price, or line-level totals.", |
| "scenario": "Payments above the delegated threshold require a clean three-way match before approval.", |
| "brief": "For each payment in the batch, verify the payment agrees to the invoice and the invoice agrees to the purchase order. Disposition each one.", |
| "tools": [ |
| "query_ledger", |
| "get_entry", |
| "list_documents", |
| "open_document", |
| "recompute", |
| "get_policy", |
| "disposition", |
| "submit" |
| ], |
| "groundTruth": "Seeded across 60 payments: 5 with quantity variance beyond tolerance, 4 with unit-price variance, 3 paid against a PO with no remaining balance, 3 with no PO at all where policy requires one, 2 where invoice total ≠ sum of invoice lines. Distractors: 6 within-tolerance variances that should be approved.", |
| "verifier": [ |
| "per-payment verdict compared to the seeded disposition table", |
| "recompute must be called on the line-total mismatch cases", |
| "documents opened must include the PO and the invoice for every payment flagged on a document-level discrepancy", |
| "tolerance-band cases approved → correct; flagged → false positive" |
| ], |
| "judgeFocus": [ |
| "Does the rationale quantify the variance and compare it to the policy tolerance retrieved via get_policy?", |
| "AUTO-FAIL: flags a variance without having opened both documents." |
| ], |
| "dials": [ |
| "tolerance band", |
| "number of PO lines per invoice", |
| "partial deliveries and multi-invoice POs", |
| "OCR noise in the invoice text" |
| ], |
| "guard": "Variance must be visible only inside the documents, never derivable from ledger amounts alone.", |
| "weight": { |
| "outcome": 0.55, |
| "process": 0.25, |
| "rationale": 0.2 |
| }, |
| "fixtures": { |
| "real": [ |
| "DS-A: purchase_order_number, purchase_order_line_number, contract_number, amount, invoice_id, vendor_id — NOTE contract_number is sparse, filter to non-null for contract-dependent variants" |
| ], |
| "synth": [ |
| "PO documents with qty × unit price lines", |
| "Invoice documents with seeded variances", |
| "PO remaining-balance ledger", |
| "Tolerance policy clause" |
| ] |
| } |
| } |
|
|