Expense audit against policy
Audit expense reports against policy and approve, reject or correct them.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
Previous class address: R05.01.02.03 · Original proposal IDs are retained.
- Typical applications
- SAP Concur · Expensify · Workday
- Class GUI-need label
G2· GUI-essential
Digital-employee context
Project class assignments, not demonstrated employee capability or imported benchmark coverage. Acceptance criteria and value metrics are proposals; no ROI has been measured.
Related roles
- Finance operations · Finance outcomes include validated supplier invoices, reconciled accounts, close entries, collections and expense decisions.
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R05.01.02.03-T01 Reject receipt-less lines over $75 and approve the rest of an Expensify report
Original instruction
Expensify test policy 'Lumen Studio', approver role. Report EXP-1023 (14 expenses) must follow input/expense_policy_v4.pdf: any line over 75.00 without an attached receipt image is rejected with comment 'Receipt required (policy 4.2)'. Reject those lines (move them off the report) and approve the remaining report.
- Platforms
web· Any OS (web)- Applications
- Expensify
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Grader exports via admin: rejected expense IDs equal key (4); each has the exact comment; EXP-1023 approved with remaining total equal key. Agent has no Expensify partner credentials; report history must show actions by the agent's web session.
Proposed partial credit
50% correct rejected set (penalty per wrong rejection); 20% comments; 30% report approved with correct total
R05.01.02.03-T02 Refuse an expense whose receipt does not match the claimed amount in Odoo
Original instruction
Odoo 17 Expenses, manager role, company 'Kestrel Metals'. Expense report 'Trade show Sept - J. Ortiz' has 6 lines with receipt images. Compare each claimed amount to its receipt; refuse the line(s) where they differ with reason 'Amount differs from receipt' and approve the report for the rest.
- Platforms
web· Any OS (web)- Applications
- Odoo
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
DB: hr_expense rows in key mismatch set state refused with reason text; remaining lines in approved sheet; sheet total equals key. XML-RPC blocked for the agent; state changes tracked to its web session.
Proposed partial credit
60% correct line refused (no false refusals); 40% report approved with correct total
R05.01.02.03-T03 Report employee E-117's total reimbursable for September from Concur
Original instruction
SAP Concur Expense test entity, auditor (view) role. Find all September 2026 reports for employee E-117 (Dana Ruiz) and determine the total reimbursable amount to employee (exclude company-paid card lines and personal items). Write it to output/answer.txt.
- Platforms
web· Any OS (web)- Applications
- SAP Concur
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicknav· Pan/zoom/scroll- Work product
WP12· Answer/decision- Conditions
licensed· Licensed pro app- Proposed difficulty
- 1 / 5
Proposed verifier
Exact match to the cent against key from the seeded entity (3 reports, one of which contains company-paid lines and a personal flag). Agent has no Concur OAuth app or API token, so report data is reachable only in the Concur web UI.
Proposed partial credit
50% company-paid lines excluded; 50% personal items excluded. Exact total earns both; a total equal to a key variant with only one exclusion applied earns only that milestone.
R05.01.02.03-T04 Cap meal lines at the per diem allowance as a Concur expense processor
Original instruction
SAP Concur test entity, processor role. Report 'Chicago client visit' (5 travel days) claims actual meals. Policy (input/meal_policy.pdf) caps daily meals at the GSA M&IE rate for the city in input/gsa_rates_fy26.csv, 75% on first and last day. Adjust the approved amount for each over-limit day and add an audit comment stating the cap.
- Platforms
web· Any OS (web)- Applications
- SAP Concur
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
Concur report export: approved amounts per meal day equal key (75% rule applied to day 1 and 5); comments present on adjusted lines only; report total equal key. Agent has no Concur OAuth app; audit trail must show the processor/approver web session.
Proposed partial credit
50% per-day approved amounts exact; 20% first/last-day rule; 30% comments and report status
R05.01.02.03-T05 Reject duplicate expenses that appear across three Expensify reports
Original instruction
Expensify test policy 'Lumen Studio', admin. Three open reports from two employees cover a shared offsite. Find duplicate expenses (same date, merchant and amount, possibly different employees or one a card import and one cash) and reject the later-submitted copy with comment 'Duplicate of <report id>'. Approve nothing.
- Platforms
web· Any OS (web)- Applications
- Expensify
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicknav· Pan/zoom/scrollvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Admin export: rejected set equals key's 5 later duplicates; earlier copies untouched; comments reference the right report ID; no approvals logged. Agent has no Expensify partner credentials; report history must show actions by the agent's web session. Control pair: T12.
Proposed partial credit
60% exact duplicate set (per item); 25% earlier copy kept; 15% comment references
R05.01.02.03-T06 Check claimed mileage against the mapped route and send back an inflated claim in Workday
Original instruction
Workday test tenant, expense approver role. Report EXP-0098 claims 3 mileage trips between named client sites at the 2026 IRS rate. Use Google Maps (shortest driving route) to check each; policy allows +10% over mapped distance. Send back the report with a comment listing each trip's allowed miles and approve nothing.
- Platforms
web· Any OS (web)- Applications
- Workday · Google Maps
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsmulti· Cross-app- Work product
WP08· App/system state- Conditions
licensed· Licensed pro appmultiapp· Multi-app- Proposed difficulty
- 3 / 5
Proposed verifier
Workday report status Sent Back; comment parsed for 3 allowed-mile values within 2% of key route distances and identifies the 1 inflated trip. No integration system user is issued; business-process history must show the agent's UI session.
Proposed partial credit
40% report sent back (not approved); 40% allowed miles per trip within tolerance; 20% inflated trip named
R05.01.02.03-T07 Flag card transactions missing receipts and restricted categories in Ramp
Original instruction
Ramp demo business 'Orbit Labs'. For September card transactions, policy requires receipts over 75.00 and prohibits alcohol-only merchants. Flag each non-compliant transaction with the right reason ('Missing receipt' or 'Restricted merchant'), request a receipt from the cardholder where missing, and do not lock any card.
- Platforms
web· Any OS (web)- Applications
- Ramp
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Ramp demo DB: flagged transaction set and reasons equal key; receipt requests sent for the missing-receipt set only; card states unchanged. Agent has no API token; activity log source is web.
Proposed partial credit
50% exact flagged set; 30% reasons correct; 20% receipt requests and no card locks
R05.01.02.03-T08 Split personal charges off a hotel folio in Navan Expense
Original instruction
Navan Expense sandbox, approver role. Expense 'Hotel - Austin' (1,486.20) attaches a 3-night folio image with room, tax, two minibar charges, an in-room movie and a laundry charge. Policy treats minibar and movies as personal. Itemize the expense so personal items are marked non-reimbursable, keep the rest business, then approve.
- Platforms
web· Any OS (web)- Applications
- Navan
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Sandbox export: itemizations sum to 1,486.20; personal itemizations total equals key (minibar+movie); reimbursable equals key; report approved. Agent lacks API keys; audit log shows web actions.
Proposed partial credit
50% itemization amounts exact; 30% personal flags correct; 20% approved
R05.01.02.03-T09 Correct foreign-currency conversion rates on three Concur lines
Original instruction
SAP Concur test entity, processor role. Report 'Lisbon conference' has 9 EUR and GBP receipts; three lines use a wrong exchange rate (not the transaction-date rate). Using input/fx_rates_ecb.csv, correct the rate on those lines so the USD amounts match, then approve with comment 'FX corrected'.
- Platforms
web· Any OS (web)- Applications
- SAP Concur · Excel
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsmulti· Cross-app- Work product
WP08· App/system state- Conditions
licensed· Licensed pro app- Proposed difficulty
- 3 / 5
Proposed verifier
Export: the 3 lines carry rates equal fixture rates for their dates (6 dp) and USD amounts equal key; other 6 lines unchanged; report approved with comment. Agent has no Concur OAuth app; audit trail must show the processor/approver web session.
Proposed partial credit
50% three lines corrected; 30% no other lines changed; 20% approved with comment
R05.01.02.03-T10 Fix billable flags on project expenses before re-invoicing in Odoo
Original instruction
Odoo 17 Expenses with project re-invoicing, company 'Northwind SaaS'. Policy: travel for customer project ACME-IMPL is re-invoiced at cost; internal training and meals over 50.00 per person are not. Among the 18 approved-but-unposted expenses, correct each 'Re-invoice' setting and analytic account, then post the journal entries.
- Platforms
web· Any OS (web)- Applications
- Odoo
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & click- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
DB: hr_expense re-invoice policy and analytic account per expense equal key; posted moves exist for all 18; sale order ACME-IMPL gets exactly the key's re-invoiced lines. XML-RPC blocked; changes tracked to agent web session.
Proposed partial credit
50% flags and analytics exact per expense; 30% re-invoiced SO lines correct; 20% posted
R05.01.02.03-T11 Spot doctored receipt images in an Expensify report
Original instruction
Expensify test policy, approver role. Report 'Q3 client dinners - P. Lane' has 11 restaurant receipts. Some images were altered: printed totals do not equal subtotal plus tax plus tip, or dates conflict with the card transaction. Reject each altered receipt with comment 'Receipt inconsistent' and escalate the report to the policy admin with a note naming them.
- Platforms
web· Any OS (web)- Applications
- Expensify
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Admin export: rejected set equals key's 3 doctored receipts; report forwarded to admin; note names the 3 merchants. Agent has no Expensify partner credentials; report history must show actions by the agent's web session; any OCR-only field comparison misses the two image-only alterations.
Proposed partial credit
60% doctored set exact (per item, penalty for false rejections); 20% escalated; 20% note content
R05.01.02.03-T12 Find cross-report duplicates via the Expensify Integration Server (control pair of T05)
Original instruction
Control pair of T05. A copy of the same policy has partner credentials in env EXPENSIFY_*. Use the Integration Server export API to pull the three reports, compute duplicates by date, merchant and amount, and write output/duplicates.csv (expense_id_to_reject, original_report_id). Do not modify Expensify.
- Platforms
lin· Linuxmac· macOS- Applications
- Expensify Integration Server · Python
- Interfaces
api· API/SDKterm· Terminal- GUI need · task setting
AP· API-sufficient- GUI need · ordinary access
AP· API-sufficient- Interaction primitives
code· Code & commands- Work product
WP02· Records/table- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
CSV rows equal key's 5 duplicates with correct original report IDs. Compared against T05 to measure the GUI penalty on identical data.
Proposed partial credit
70% duplicate set exact; 30% original report mapping
R05.01.02.03-T13 Audit fifteen sales-trip reports for attendee and alcohol rules in Concur
Original instruction
SAP Concur test entity, approver role. Fifteen reports from the October sales summit await approval. Rules (input/policy_summit.pdf): business meals over 50.00 per person need an attendee list with count; alcohol over 30% of a meal is non-reimbursable; entertainment requires a business purpose. Approve compliant reports; send back the rest with a comment citing the rule numbers.
- Platforms
web· Any OS (web)- Applications
- SAP Concur
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
licensed· Licensed pro applong· Long-horizon- Proposed difficulty
- 4 / 5
Proposed verifier
Export: per-report status equals key (approved vs sent back); comments contain the key's rule numbers per sent-back report; no edits to amounts. Agent has no Concur OAuth app; audit trail must show the processor/approver web session.
Proposed partial credit
60% per-report decision correct; 30% cited rules correct; 10% no amount edits
R05.01.02.03-T14 Reconcile corporate-card transactions and mark personal spend for repayment in Workday
Original instruction
Workday test tenant, expense partner role. Employee W. Zhang's September card statement has 31 transactions; 27 are matched to expense lines. Investigate the 4 unmatched: attach the 2 business ones to new expense lines with receipts from input/zhang_receipts/, and mark the 2 personal ones as personal so they post as amounts due from employee.
- Platforms
web· Any OS (web)- Applications
- Workday
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
licensed· Licensed pro app- Proposed difficulty
- 4 / 5
Proposed verifier
Workday report: all 31 transactions resolved; 2 new business lines with receipt attachments and correct expense items; 2 personal flagged with total due equal key. No integration system user is issued; business-process history must show the agent's UI session.
Proposed partial credit
40% business lines created with receipts; 40% personal flags and amount due; 20% no unresolved items
R05.01.02.03-T15 Sample, test and document 25 expenses in an audit workpaper
Original instruction
Expensify admin export (input/expenses_q3.csv, 412 lines) plus web access to the test policy. Select a simple random sample of 25 lines with Excel RAND seeded per input/sampling_memo.pdf, open each in Expensify to test receipt presence, policy category and approval chain, and record results and exceptions in output/q3_expense_wp.xlsx (template provided).
- Platforms
web· Any OS (web)mac· macOSwin· Windows- Applications
- Expensify · Excel
- Interfaces
brow· Browserdesk· Desktop GUI- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsmulti· Cross-appvis· Visual judgment- Work product
WP02· Records/table- Conditions
multiapp· Multi-applong· Long-horizon- Proposed difficulty
- 4 / 5
Proposed verifier
Workpaper: sample IDs equal the deterministic key sample; per-item attribute results equal key; exception count and projected error equal key within 1%. Read-only role: any change to Expensify data fails.
Proposed partial credit
25% correct sample; 50% per-item test results; 25% exception summary and projection
R05.01.02.03-T16 Enforce business-class pre-approval on flagged trips in Navan
Original instruction
Navan sandbox, travel manager role. Six trips are flagged 'out of policy: cabin'. Policy: business class allowed only for flights over 6 hours or with VP pre-approval. Check flight durations in each itinerary and the approvals in the 'Travel approvals' Gmail label, then approve compliant exceptions and deny the rest with reason.
- Platforms
web· Any OS (web)- Applications
- Navan · Gmail
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsmulti· Cross-app- Work product
WP08· App/system state- Conditions
multiapp· Multi-app- Proposed difficulty
- 4 / 5
Proposed verifier
Sandbox DB: per-trip decisions equal key (3 approve, 3 deny); deny reasons present; no bookings cancelled. Agent lacks API keys; actions logged from web session.
Proposed partial credit
70% per-trip decision correct; 20% reasons; 10% no cancellations
R05.01.02.03-T17 Approve or reject twelve reports against per-category limits in Zoho Expense
Original instruction
Zoho Expense demo org 'Orbit Labs', approver role. Twelve submitted reports must satisfy input/policy_zoho.pdf (category limits, receipt over 25.00, max 60 days old, mileage via GPS log). Approve fully compliant reports, reject non-compliant ones with a reason naming the failing rule, and for one report with only a missing receipt, send back to the submitter instead.
- Platforms
web· Any OS (web)- Applications
- Zoho Expense
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
long· Long-horizon- Proposed difficulty
- 4 / 5
Proposed verifier
Zoho export: per-report status equals key (approve/reject/sent back); rejection reasons mention the failing rule. No Zoho Expense API OAuth client is issued to the agent; each report's activity log must show the action came from its web session.
Proposed partial credit
60% per-report decision; 25% reasons; 15% send-back case handled
R05.01.02.03-T18 Run a month-end VAT-reclaim audit across forty Concur reports
Original instruction
SAP Concur test entity (UK), processor role. Forty September reports include VAT. Only receipts that are valid VAT invoices (supplier VAT number, VAT amount, date) are reclaimable. Inspect each receipt image, set the VAT tax-code/reclaim flag correctly on every line, approve with corrections, and export the VAT reclaim report to output/vat_sep.xlsx.
- Platforms
web· Any OS (web)- Applications
- SAP Concur · Excel
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickvis· Visual judgmentnav· Pan/zoom/scroll- Work product
WP08· App/system state- Conditions
licensed· Licensed pro applong· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Concur export: per-line reclaim flag and VAT amount equal key (tolerance 0.01 GBP); total reclaimable equals key; 40 reports approved; export file matches. Agent has no Concur OAuth app; audit trail must show the processor/approver web session.
Proposed partial credit
50% per-line VAT flags; 25% VAT amounts; 15% total reclaim; 10% export saved
R05.01.02.03-T19 Close out a terminated employee's expenses and cash advance in Workday
Original instruction
Workday test tenant, expense partner. Employee R. Park terminated 2026-09-26 holding a 1,500.00 cash advance. Her final report includes items dated before and after termination. Disallow post-termination items, approve the rest, apply the cash advance against reimbursable items, and create the employee receivable for any remaining advance.
- Platforms
web· Any OS (web)- Applications
- Workday
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
licensed· Licensed pro apprisk· Irreversible/risky- Proposed difficulty
- 5 / 5
Proposed verifier
Workday report export: disallowed lines equal key (dated after 2026-09-26); advance applied amount equal key; receivable for remainder equal key; report status approved. No integration system user is issued; business-process history must show the agent's UI session.
Proposed partial credit
30% post-termination lines disallowed; 40% advance application exact; 30% receivable created
R05.01.02.03-T20 Detect split transactions that evade the approval limit in Ramp and open a review
Original instruction
Ramp demo business 'Orbit Labs'. Card spend over 500.00 needs manager approval. Review September transactions and identify purchases split into several charges (same merchant, same or consecutive days, possibly across two cardholders) whose total exceeds 500.00. Flag each split group as 'Policy: split purchase', lock the cards of repeat offenders (2+ groups), and write output/split_groups.csv.
- Platforms
web· Any OS (web)- Applications
- Ramp
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicknav· Pan/zoom/scrollvis· Visual judgment- Work product
WP08· App/system state- Conditions
risk· Irreversible/risky- Proposed difficulty
- 5 / 5
Proposed verifier
Ramp DB: flagged transaction groups equal key (4 groups, 11 transactions); locked cards equal key's 1 repeat offender only; CSV groups match. Agent has no API token; activity log source web.
Proposed partial credit
50% split groups exact; 20% flags/reason; 20% correct card locked only; 10% CSV
Mapped research references
Existing benchmark-to-class links from the research catalog. They are not record-level annotations, executions or product endorsements.