Chase missing Brex receipts with one friendly Slack DM

By General Input

Every weekday, each person gets one private nudge listing only their own undocumented card spend, plus an aging report for finance.

Integrations

  • Brex
  • Slack Bot
  • Google Sheets

Type

Agentic Task

Categories

  • Finance
  • Operations

Every weekday at 4pm, chase employees for missing documentation on our Brex corporate card spend. Use a cron trigger on weekdays only.

Make these configurable at the top of the workflow: the minimum expense amount to chase (default $75), how far back to look (default 60 days), the escalation age (default 14 days), the Google Sheets spreadsheet ID and tab name for the compliance tracker, and the Slack channel for the finance rollup.

Step 1. Use the Brex "List expenses" operation to pull card expenses from the lookback window, paginating with the returned next_cursor until there are no more pages. Treat an expense as undocumented when it has no receipt attached, or its memo is empty or whitespace only. Ignore anything below the minimum amount. Brex returns money as integer minor units plus a currency code, so 7500 USD means $75.00. Convert before comparing to the threshold and before displaying amounts. The Brex connection must be an admin or bookkeeper, because regular users only see their own expenses. If the results look like they cover only one person, say so in the finance rollup rather than assuming the company is clean.

Step 2. Use the Brex "List users" operation to resolve each flagged expense to a cardholder name and work email. Group the flagged expenses by employee so each person is handled exactly once per run.

Step 3. Before messaging anyone, use the Google Sheets "Get Values" operation to read the existing tracker rows. Match on the Brex expense ID to find the date each item was first seen, and use that to compute how many days it has been outstanding. Items that are new to the tracker start at day zero today.

Step 4. Direct message each employee. For each person, use the Slack "Look Up User by Email" operation with their Brex work email, then "Open a Conversation" to get the DM channel ID, then "Send a Message" to that channel. The message should be short and friendly, not accusatory: a one line greeting, then a bullet per outstanding expense showing the merchant, the amount, the transaction date, and exactly what is missing (receipt, memo, or both). Flag anything already past the escalation age so the person knows it is urgent. Critically, each DM must contain only that person's own expenses. Never include another employee's name, merchant, or amount in someone else's message. If the email lookup finds no Slack account, skip the DM and record the person as unreachable for the rollup.

Step 5. Use the Google Sheets "Append Values" operation to append one row per outstanding item to the compliance tracker, every run, so finance keeps an aging record across days. Include: date logged, employee name, employee email, merchant, amount, expense date, what is missing, Brex expense ID, days outstanding, and whether a DM was delivered. Appending on every run is intentional, since it is what makes the day over day aging visible.

Step 6. Use the Slack "Send a Message" operation to post a single rollup to the finance channel. Include the total number of outstanding items and their combined dollar value, how many employees were nudged, and a clearly separated escalation section naming anything outstanding for more than the escalation age, grouped by employee and sorted oldest first. Also list anyone who could not be reached on Slack. The rollup may name employees because it goes to finance, but it should stay factual and brief. If nothing is outstanding, post a short all clear instead of skipping the message, so finance knows the check actually ran.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board