Review every Brex card and close the ones nobody uses

By General Input

One screen showing every company card, who holds it, and when it was last used, so dormant cards and cards held by people who left get closed.

Integrations

  • Brex
  • BambooHR
  • Slack

Type

App

Categories

  • Finance
  • Operations

I want an access review app for our company cards, so dormant and orphaned Brex cards stop quietly sitting open. This is a surface my team opens for a periodic review pass, not an automation that runs on a schedule. The point is that a reviewer works down a list of cards, decides what to do with each one, and has that decision stick, so the next review starts where the last one finished.

The main view is a table of every company card. Each row shows the card name and its last four digits, the person who holds it, their department, the card status, the monthly limit and the date of the most recent transaction on that card. Build the list with Brex List cards, and use Brex Get card for the full spend controls when a row is opened. Resolve the cardholder with Brex List users and the department name with Brex List departments. Pull the person level monthly cap with Brex Get user card limit, which also returns how much of that limit is still available. Work out the last transaction date with Brex List primary card transactions: page back far enough to cover at least the last one hundred and twenty days, group the settled transactions by card, and take the newest one for each. A card with nothing in that window should read as no spend on record rather than showing an empty cell.

The HR side comes from BambooHR. Load Get Employee Directory and match directory entries to Brex users on work email, lower cased and trimmed on both sides. For each matched person, call BambooHR Get Employee to read employment status, termination date, department and supervisor email. A cardholder whose BambooHR record shows them as terminated or otherwise no longer active is the highest risk case in the whole table. Please bake in that a Brex user with no matching BambooHR record at all gets its own flagged for follow up status and is never silently treated as active, because that gap is usually a contractor, a shared card or a stale email address rather than a clean bill of health.

Sort the table so risk floats to the top. Cards belonging to departed people pin above everything else, then cards with no BambooHR match, then cards with no spend in ninety days, then everything else. Give the reviewer quick filters for cards with no spend in the last ninety days, cards whose holder is no longer active in BambooHR, cards with no HR match, and cards already handled in this pass, plus a search box for cardholder name or email and a filter by department.

Opening a row shows the card detail with its recent transactions, the holder's HR record and the available actions. Locking is the default and the most prominent action, because Brex Lock card is reversible, and the app should also offer Brex Unlock card to undo it. Terminating uses Brex Terminate card and is permanent, so put it behind a secondary destructive button that requires the reviewer to type the cardholder name or the card's last four digits to confirm, with copy that says plainly that termination cannot be undone. Never display or fetch full card numbers anywhere in this app. An access review does not need the PAN.

A reviewer can also trim exposure instead of closing anything. Brex Update card changes that one card's name and spend controls, while Brex Set user card limit changes the person's overall monthly cap across their cards. Make it obvious in the UI which of the two a given control is about to change, since they have very different blast radiuses.

From the same row the reviewer can message the holder's manager. Take the supervisor email off the BambooHR record, find the matching Slack account with Slack List Users by comparing profile email, open the direct message with Slack Open a Conversation and send it with Slack Send a Message. Pre-fill the text with the card, the holder, how long it has been idle and what the reviewer is proposing, and let the reviewer edit it before sending. Messages go out as the signed in reviewer, so the manager gets a note from a colleague rather than from a bot.

Every decision is recorded in the app: which card, what was done (locked, unlocked, terminated, limit reduced, manager messaged, or deliberately left as is), a short note, who made the call and when. Show that history on the row and use it to drive a reviewed or not reviewed state, so a pass can be picked up half way through and the following review starts from where this one ended. Put a summary strip across the top with how many cards are open, how many are flagged, and how many have been reviewed in the current pass.

Cache the Brex and BambooHR reads for the session behind a manual refresh button. Pulling every card, user and transaction is the slow part, and a reviewer will be working the same list for a while.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes