Expense Policy Auditor
Applies the expense policy nobody has read since it was written
- 8hard rules
- Things it must never do, enforced in every run
- 5handover rules
- Conditions where it stops and gives the work to a person
- 10output fields
- A structured result, not a paragraph you have to re-read
- ≤5steps per run
- Bounded work: at most 4 tool calls, enforced by the runtime
Read-only by design. This agent has no path to sending, spending, publishing or committing anything. Where that limit is the product, removing it would remove the reason to trust the output.
Overview
Expense approval is a rubber stamp. A manager with forty claims and no memory of the per-diem limit approves all forty, and the policy document exists to be pointed at afterwards rather than applied.
This agent applies it. It reads your policy from your knowledge base — the limits, the receipt thresholds, the categories that need pre-approval, the things never reimbursable — and checks each claim line against the rules that govern it, citing the clause and the amount over.
It also sees what a single claim cannot: the expense split into two to sit under a threshold, the same receipt submitted twice, the category that has quietly doubled since the policy was written. It approves nothing and rejects nobody — it produces an exception report for the approver, and never characterises a person's intent.
Benefits
The policy actually takes effect
A rule applied to every claim is worth more than a rule everyone can quote.
Approval in minutes
Clean claims pass silently; the approver reads only what needs them.
Fair and consistent
The same rule for everyone, not whoever the approver happens to know.
What it does
Applies your written policy
The limits and conditions as your document states them, not a generic expense ruleset.
Cites the rule and the amount over
An approver sees the clause and the difference, and decides in seconds.
Sees across claims
Splits under a threshold, duplicate receipts, and the same journey claimed twice — invisible one claim at a time.
Separates missing from breaching
A claim without a receipt is incomplete, not a breach. Treating them alike is how these reports get ignored.
Reports drift
Categories rising against the policy that governs them — usually a policy problem, not a people one.
Approves and rejects nothing
It produces exceptions. Every decision about a person's money stays with a person.
What this changes
What this changes about your week
- It takes over
- Checking every expense claim against the policy nobody has read since it was written.
- Done today by
- Managers approving in batches, and finance afterwards.
- How often
- Every expense run.
- Typical manual effort
- Applying the policy properly to forty claims is an afternoon.
Why Finance & Accounting in particular. Approval is a rubber stamp everywhere. A rule applied to every claim is worth more than a rule everyone can quote.
Runs unattended
Started by you or by an event, and it finishes on its own. Nothing waits for someone to be at a desk.
The same standard every time
The two-hundredth item is held to the bar the first one was. Consistency is the part people cannot sustain.
It cannot act on its own
Expense Policy Auditor has no path to sending, spending or committing. That limit is why its output is safe to act on.
How it runs
This agent runs server-side through the PROMIVO runtime. Each run is logged step by step and every tool call is permission-checked before it executes.
- 1InputValidated against the agent input schema
- 2Modelclaude-sonnet-5 with automatic fallback
- 3Toolssearch_knowledge, extract_structured_data
- 4PermissionsRuns READ actions automatically; anything higher waits for approval
- 5OutputStructured result matching the output schema
- 6LoggingTokens, duration and every step recorded
Demo
Demo dataIllustrative sample output, abridged.
Input
{
"claims": [
{
"lines": [],
"claimId": "EXP-118"
}
],
"period": "March 2026",
"currency": "EUR"
}Output
{
"escalate": false,
"patterns": [
{
"claimIds": [
"EXP-118"
],
"observation": "Two taxi lines of EUR 24 and EUR 23 on the same evening, where receipts are required above EUR 25."
}
],
"disclaimer": "An exception report against your written policy. No claim has been approved, rejected or paid, and no finding implies intent on anyone's part.",
"exceptions": [
{
"line": "Dinner, Frankfurt, 12 March",
"rule": "Evening meals reimbursed up to EUR 40 in Tier 1 cities.",
"type": "policy-breach",
"claimId": "EXP-118",
"claimed": 78,
"difference": 38,
"policyLimit": 40,
"sourceDocument": "Travel & Expense Policy 2025 — section 4.2"
}
],
"policyFound": true,
"policyDocument": "Travel & Expense Policy 2025 — section 4",
"totalOverPolicy": 38
}Requirements
Integrations
No integrations required.
Before you start
- The expense claims, as structured data or text
- A knowledge base holding your expense policy
- Requires the Starter plan or higher
Use cases
Monthly expense run
Every claim checked before the approver opens the batch.
Pre-audit review
Find the exceptions before an auditor does.
Policy review
See which rules are breached constantly — often the rule is wrong.
Pricing
Starter
Billed monthly through your PROMIVO subscription. Cancel at any time.
Runs consume your plan allowance for agent executions and tokens. See plan limits
FAQ
Does it reject claims?
No, and it cannot. It reports exceptions against the policy with the clause attached. Decisions about someone's reimbursement are made by a person.
What if we have no written policy?
Then it has nothing to check against and says so, rather than applying rules you never agreed to. Load the policy you do have — even a page — and it will apply exactly that.
Does it accuse people of fraud?
Never. It reports patterns — a duplicate, a split, a threshold — as observations for a person to interpret. Intent is not something it is competent to judge, and saying so in a report would be defamatory.
Reviews
Reviews open once customers have run this agent.
Need this agent to work differently?
Tell us what to change and our team will scope a customised version for your business.
Customize this agent