Skip to main content

Flag Expense Anomalies Automatically

By the end of this recipe, every expense that lands in Copera is checked against your rules and judged by AI — and anything unusual is flagged, explained, assigned to a reviewer, and posted to your finance channel before it gets approved. Expenses are easy to wave through on autopilot and painful to audit after the fact. Because your expense rows, your policy rules, and your finance channel all live in one workspace, an automation can catch the outliers the moment they arrive — and a person still makes the call.

Readiness: Available now (built as an Automation). The version where a single named "Expense Auditor" teammate watches spending and flags anomalies on its own schedule is rolling out in early access.

What it does

Every time a new expense row is created — whether someone submitted a form, imported a batch, or a card feed pushed it in — the automation runs a quick review:

  1. It checks your hard rules first. Amount over your cap, no receipt attached, an out-of-policy category or vendor — the non-negotiable stuff. If a rule trips, the expense is flagged immediately with the exact reason.
  2. It looks for duplicates. A Find rows step searches the table for another expense with the same vendor and amount, so the same lunch doesn't get reimbursed twice.
  3. It asks the AI about the rest. For expenses that pass the hard rules, an AI Classify step labels each one Normal or Anomaly from its own details — catching the subtle "this looks off" cases a flat threshold misses.

Anything flagged gets its Status set to Flagged for review, the reason written to the row, a reviewer assigned, an SLA timer started so it can't sit forgotten, and a message posted to your finance channel. Flagged rows collect in a filtered Anomalies view that's your live audit queue. Nothing is approved or rejected automatically — the automation surfaces the outliers, and a human decides.

Build it yourself

One-time setup

Create the Expenses board

Make a board with a table for expenses. Add columns for Amount (number), Category, Vendor, Receipt (attachment), Submitter (people), Date, Status (with options like Submitted, Flagged for review, Approved, Rejected), and a Flag reason (text) column the automation writes into. This board is both your intake and your audit trail.

Add an Anomalies view

Create a saved view on the table filtered to Status is Flagged for review. This filtered view is where flagged expenses surface for your finance team — a live queue anyone can open, with the reason and assignee right there. See Filters & Sorting for how views and filters work.

Automation 1 — flag anomalies as they arrive

Trigger: Row created

Add a Row created trigger on the Expenses table. It fires once for every new expense, no matter how it got there — a submission form, an import, or an inbound webhook from your card or accounting tool.

Condition: check the hard rules

Add a condition for your non-negotiable policy checks. Use a Compare or Row filter condition inside an AND/OR group — for example: Amount is greater than 500 OR Receipt is empty OR Category is one of your out-of-policy categories. For anything computed (like "amount is more than double the category's usual"), use a Formula condition. If the check is true, send the flow to the flag actions below.

Find rows: catch duplicates (optional)

Add a Find rows step that searches the Expenses table for a row with the same Vendor and Amount (and, if you like, the same Date). Then add a condition on whether a match was found — if one already exists, route the new expense down a possible duplicate path and flag it. This is what stops the same receipt being reimbursed twice.

AI step: Classify the borderline cases

On the path where the hard rules didn't trip, add an AI → Classify step. Feed it the expense's amount, category, vendor, description, and submitter, and define the labels you want — for example Normal, Review, and Anomaly. The AI labels each expense from its details, catching odd combinations that no single threshold would. Add a condition on the label so only Anomaly (or Review) continues to the flag actions.

Action: Set the status and the reason

Add a Set field action to set Status → Flagged for review. Add a second Set field for Flag reason: for a rule-based flag, a short template like "Over the $500 cap" or "No receipt attached"; for an AI-detected one, map the Classify output (or add an AI → Generate step to write a one-line explanation). Now the row explains itself at a glance.

Action: Assign a reviewer and start an SLA timer

Add an Assign user(s) action to put your finance reviewer on the row, then an SLA timer control action to start a review clock — so a flagged expense has to be looked at within, say, 24 hours instead of drifting. See SLA Tracking for how timers work.

Action: Alert the finance channel

Add a Post channel message action to your finance channel with the expense's amount, vendor, submitter, and the flag reason — so the team sees it in real time. Prefer a quieter nudge? Use Send notification or Send direct message to the reviewer instead.

Automation 2 — the weekly anomaly digest (optional)

Trigger: Schedule

Add a second automation with a Schedule trigger — for example, every Friday at 4:00 PM.

Find rows: gather the week's flags

Add a Find rows step that returns every expense with Status is Flagged for review that's still open, so the digest reflects what actually needs attention.

AI step: Summarize

Add an AI → Summarize step over the flagged rows to produce a short, readable rundown — how many, the total exposure, and the standouts.

Action: Deliver it

Add a Post channel message action to the finance channel, or a Send or draft email action to your controller. Use draft delivery if you'd rather glance at the wording before it goes out.

Or just ask Copera AI

You don't have to assemble the graph by hand. Open Ask Copera AI and describe it:

"Create an Expenses board with columns for amount, category, vendor, receipt, submitter, date, status, and a flag reason. Then build an automation that when a new expense row is created, checks it against our rules — amount over $500, missing receipt, or a duplicate vendor-and-amount — and also uses AI to judge whether it looks unusual. If anything trips, set its status to 'Flagged for review,' write the reason, assign it to me, and post it in the Finance channel."

Ask Copera AI can create the board and its columns, then plan, draft, validate, and assemble the automation for you. With the default Ask before acting permission mode, it shows a review card for each change before anything is created — so you approve the board setup and the automation before they exist. See What Copera AI Can Do for the full list of what it can build.

Make it a standing teammate

Early access

Standing AI teammates are rolling out gradually. When one is available in your workspace, you can put a named teammate — an "Expense Auditor" — in charge of this review: it watches the Expenses board, flags the anomalies against your rules, writes the reason, and posts the outliers to your finance channel on its own schedule and under its own identity. It's a natural fit for finance oversight, because a teammate can create and update rows and post to channels but can never delete data or send anything outside your workspace. Until it reaches your workspace, the automation above does the same job today. Learn more in AI teammates — and everything in this guide can be built today as an Automation.

Tips

tip

Start with rules, then add the AI. Get the deterministic checks solid first — cap, missing receipt, duplicate. Once your team trusts the flags, add the AI Classify step to catch the subtler outliers. Rules give you certainty; the AI gives you coverage.

tip

Set a spend cap on the flagger. Because the AI step runs on every new expense, give the automation a per-automation spend cap so a heavy expense week can never run past a budget you choose. Check the usage dashboard to see where credits go.

tip

Keep the human approval. Flagged is not rejected — it's "a person should look." Let the automation surface and explain; let a reviewer approve or reject. That's the safest way to move fast without rubber-stamping a mistake.

tip

Tune the threshold to your reality. A $500 cap that's right for a startup is noise for an enterprise. Start a little tight, watch the Anomalies view for a couple of weeks, and adjust the numbers in the condition until the flags are almost all worth reviewing.

Frequently Asked Questions

Can Copera automatically flag unusual expenses?

Yes. A Row created automation checks each new expense against your rules — an amount over your cap, a missing receipt, an out-of-policy category — and runs an AI Classify step for the borderline cases. Anything unusual gets its status set to Flagged for review, the reason written to the row, a reviewer assigned, and a message posted to your finance channel. A person still makes the final call.

How does Copera detect duplicate expense claims?

Add a Find rows step that searches the Expenses table for an existing row with the same vendor, amount, and date. If it finds a match, a condition routes the new expense down the possible duplicate path and flags it before it can be reimbursed twice.

Does flagging an expense reject it automatically?

No. Flagging only marks the row and alerts a reviewer — it never approves or rejects on its own. The automation surfaces the outliers so a human can decide.

Does the AI need to be trained on our spending history?

No. The AI Classify step reasons over each expense's own details against the rules you set. There's no model training on your workspace data, and Copera picks the right approach automatically — you don't have to choose or configure a model.

What if our expenses live in a spreadsheet or an external tool?

Bring them onto an Expenses board: connect Google Sheets to read rows in, receive them through an inbound webhook from your card or accounting tool, or import them. Once each expense is a row, the same row created automation flags anomalies no matter where it came from. See Connectors.