Expensify Report Review Agent with OpenCode

An unclear line is never clean and never a violation. That rule does more for an approver than any flag, because it separates the three lines needing a person from the forty that are ordinary. OpenCode is model agnostic, and how well a model resists resolving an ambiguous line is worth testing before this runs against real reimbursements.

Loading preview…
Free to start · guided setup

Watch it work before it's live

Run a staged conversation — no account needed. The agent handles it for real while a simulated world answers its tool calls; nothing touches real accounts, and nothing is actually sent.

Berlin Sales Trip, 4 to 7 May

Marta KowalczykSales Travel Policy (EU)

Eleven line items totalling 1,842.60 EUR. Flights Warsaw to Berlin at 312.40 EUR, hotel for four nights at 688.00 EUR, seven meals between 14.20 and 61.90 EUR, and airport taxis at 74.00 EUR. Every item has a receipt attached and each dinner sits under the 75.00 EUR limit.

Set up in minutes

Using this template drops you into a guided setup. It asks exactly this, nothing else:

  1. Connect Expensify

    One sign-in. The agent acts through your account, scoped to what this template uses.

  2. Connect Slack

    One sign-in. The agent acts through your account, scoped to what this template uses.

  3. Expense policy

    The spending rules a report has to satisfy - per item and per category limits, what always needs a receipt attached, categories you never reimburse, how far back a submission can be dated, and what makes a report worth a proper read rather than a rubber stamp.

  4. Runs on OpenCode

    Preselected for this page — connect your OpenCode account during setup, or switch to NoClick's built-in models with one click.

  5. Watch it handle a test run

    A staged conversation against a simulated world — then it’s live.

Why OpenCode for this agent

NOT SURE earns its place

A receipt image the export cannot read, a category the policy never mentions, a conversion nobody can verify. Each is named with what a person has to check rather than waved through.

Advice, never a decision

The report state never changes in Expensify. Every flag is a suggestion to an approver who can override it for a perfectly good reason.

Before you fork

What does it do with a receipt image it cannot read?

It says so, under the NOT SURE section, naming the line and what needs checking. It does not treat an unreadable receipt as a missing one, and it does not treat it as satisfied. That distinction matters at audit time and it is exactly what weaker models blur, so check it on the model you pick.

Run it with a different agent

Put Expensify Report Review Agent to work on OpenCode

Free to start. Guided setup, a test run against staged conversations, and it's live.