Sign up for our newsletter

Join 190,034 others learning AI for Finance for Free

    Join the Newsletter

    Subscribe to get our latest content by email.
      We won't send you spam. Unsubscribe at any time.

      I blew our receipts process and unpaid staff hunted me down (avoid this)

      5 levels of AI

      David is super passionate about AI, and has been leading all of their product development for Expensify’s AI features.

      When David and I spoke in July, he separated AI intelligence from expertise and said, “Putting a general model on your expense reports is like putting someone with three PhDs on your tax return”. It will be reasonable. But it will probably be wrong.

      What you pay for when you choose a specific tool is the domain expertise built into it.

      Plus, the test of it is whether the software surfaces something you never thought to ask for before.

      His five levels of AI automation – loosely borrowed from the Society of Automotive Engineers (SAE) levels for self-driving cars – are like this:

      1. Standalone. You upload a file into AI and get an answer. Powerful, but closed in one jar.
      2. Connected. You connect to your systems to AI through MCP (Model Context Protocol) instead of uploading data manually (but still doesn’t do the work)
      3. It talks to your team. The AI reacts to events and engages with other people while you watch. You stop being the middleman.
      4. It runs the process. Recurring, in the background, monitoring and reacting to what it finds, then reporting back.
      5. The dream. You hold out a high-level outcome, and it works out the rest. David and I both agree that this level is still not here yet.

      And this is how we broke down our masterclass.

      4 levels per use case.


      Agent 1 – Feed management

      Levels 1 and 2, me, in Claude.

      I wanted a quick read on the week's corporate card spend before close. Six steps, and you can do the same one straight away.

      “I want a quick read on this week's corporate card spend before I close it out. I have attached our card feed. Categorize the transactions and give me an HTML dashboard with the total and the split by category.”

      Tips:

      1. Upload the statement exactly as the bank gives it to you. AI will do the cleaning / formatting. NOTE – before you do this with real data: I was on Claude Team. Only Claude Teams and Enterprise are SOC 2 Type 2 compliant. Pro and Max are not.
      2. Ask for the categorization in the same prompt. Don't categorize in one go and analyse in the next. It's one instruction.
      3. Say the words "HTML dashboard." Ask for an HTML dashboard and you get something you can filter and click into. Don't ask, and you get a wall of text.
      4. Check the total before you read anything else. Mine came back at $6,500 against a $6,500 statement. If that number is wrong, this needs to be solved first.

      Level 2 removes the file handling entirely.

      “I want a quick read on this week's corporate card spend before I close it out. Pull the transactions from the Corporate Card Feed sheet in my Google Drive. Categorize the transactions and give me an HTML dashboard with the total and the split by category.”

      Tips:

      1. Connect Claude to Google Drive once. You do this a single time, not per report.
      2. Keep the exact same prompt and add one line. Tell it the file is in Google Drive. That's the only change.

      And if you're on Copilot, ChatGPT, or Gemini instead, all of this works there too.

      Whatever your tool, success is three things: how you prompt, which model you pick inside the tool, and whether you know which functionality to use.

      But look at what I still did myself: I found the data, and I brought it in. That's the limit of a Swiss-knife tool, and you still can't click a cardholder to drill down into the data.

      Levels 3 and 4, David, in Expensify.

      David imported company cards straight from the bank feed (demoed live from Bank of America) or a commercial feed from Visa or Mastercard or thousands of other banks.

      Then, cardholders get invited by email: his demo employee Bob had one historical purchase from Delta Airlines. Bob sees his own feed, and as he swipes, new transactions appear in real time.

      Then David stopped doing it manually and created an agent called FeedMaster with one instruction in plain English: monitor the card feed and assign out any unassigned cards you find.

      By the time he opened the chat, FeedMaster had already assigned every card and reported back what it did.

      When it can't resolve something itself, it tells you rather than failing in the background. That, for David, is Level 3 to Level 4. An agent should take work off your plate, not just hand you data to show someone else.

      → Watch David build FeedMaster live, from bank feed to assigned cards here (skip to 9:37)


      Agent 2 – Receipt Matching

      Levels 1 and 2, me.

      “Now let's tie the receipts to the spend. I have attached them. Match each receipt to its card charge, add the matches to the dashboard, and show me which charges still have no receipt.”

      Tips:

      1. Don't open a new chat. Stay in the conversation that already has your card data.
      2. Upload the receipts as one batch.
      3. Ask it to match each receipt to its transaction and tell you what doesn't match. You're not asking for a match rate, you're asking for the exceptions.
      4. Read only the exceptions. In what I showed 12 of 15 matched. There were 3 charges with no receipt. That's the only thing a person needs to review. And nobody opened a single receipt to get it.

      For Level 2, swap step 2: point Claude at the Google Drive folder instead of uploading.

      “Now let's tie the receipts to the spend. Read the receipts from the July Card Receipts folder in my Google Drive. Match each receipt to its card charge, add the matches to the dashboard, and show me which charges still have no receipt.”

      And then make the real change, which isn't technical – tell your team to save receipts in that one folder, so nobody has to go hunting for them again.

      As I said in the session. This is fine for a small amount of receipts and lines, but at real volume, you cannot do it with Claude alone. Always think about the right tool for the job. And on top, transpose the idea: sales orders, production orders, inventory, compensation. Any pile of documents you match against a list can follow the same process.

      Levels 3 and 4, David.

      Expensify has an agent-rule layer where you write the rule in plain language on top of the standard merchant rules. He typed two: 1. Ask for an itemized receipt on all meal expenses 2. If the upload isn't itemized, ask for attendees on all meal expenses.

      Then he added it as an always-on agent called RuleBot, sitting in the workspace as an admin with a view over everything.

      What was super cool is RuleBot spotted Bob's meal purchase and told Bob directly that it needs attendees. Bob adds them. RuleBot works out the price per attendee, then asks for the itemized receipt. Bob uploads it, and it reconciles automatically. Then RuleBot reads the line items, sees that the food actually ordered doesn't support the number of people Bob claimed, and asks him to explain!

      Padding the attendee count is a classic expense fraud. If your cap is $50 a head, you say ten more people showed up, and the expense passes.

      “Nagging employees is the worst part of the job." So hand it to something that doesn't care and gets it done.

      → Watch RuleBot catch the attendee padding, automatically here (skip to 18:44)


      Agent 3 – Exceptions

      Levels 1 and 2, me.

      “I need to chase what's missing before the close. On the dashboard, highlight the charges that still have no receipt, and add a button next to each person that shows a short email asking them to send me their receipt, so I can copy and paste it.”

      Super important to know the limit here.

      1. Ask for the drafts. Tell Claude which receipts are missing before close and ask it to draft the chase emails. Mine drafted three, and they were good.
      2. Then copy, open your mailbox, and send. Notice how manual that still is. Is it really such a time saver? Not really.
      3. At Level 2, connect Gmail and ask it to draft in there. Same prompt, just without the copy/paste.
      4. Click through and send yourself. Claude can only draft in Gmail, never send. I think that limit is correct rather than annoying. You still want a human controlling what goes out.

      This is fine for 3 emails. But not fine for 100 a day, clicking 100 times. That's where generic AI tools hit their limit.

      “I need to chase what's missing before the close. On the dashboard, highlight the charges that still have no receipt, and add a button next to each person that opens a short email draft directly in Gmail asking them to send me their receipt, ready to go. I still want to review and hit send myself.”

      Where Level 2 (connecting to Gmail/Outlook) does earn its keep is chasing bigger values like project milestones instead: there you're chasing $50K or $100K, not $5, and you have two or three e-mails to send, not a hundred.

      Levels 3 and 4, David.

      Every chat in Expensify also goes out as an email, so an employee never has to log into the app. Bob replied to the agent by email, and it processed the reply exactly as if he'd typed it in-app, adding the attendee for him.

      Then David built an analysis agent live, from one line “Please analyze my expenses.” Followed by, “Create insightful charts by merchant, submitter, and category.”

      Back came top merchants, a leaderboard of who spends the most, and spend by category. With multiple periods of data, the same agent runs flux analysis month on month, quarter on quarter, and this quarter against the same quarter last year.

      Then he scheduled it. Every day at 9am, the report re-runs and gets sent to the team's inbox.

      This is the jump from Level 2 to Level 4: you stop asking for a report, and start just… receiving one.

      → Watch David schedule a daily 9am spend report in one sentence here (skip to 29:03)


      The One Thing to Remember

      In David’s words. The point of AI isn't to replace you, it's to "replace the worst parts of your day" – so you never experience a day like I did.

      On top, It's no longer just about humans reviewing data against a ‘dumb rules’ engine. An agent can now ask the clarifying questions you would have asked, before you need to step in.

      Example: your top employee spends $1,000 at a club in Vegas. Is this theft, or client entertainment in the most conference-heavy city in the world?

      The amount alone can't tell you. So review the figures, challenge them, and keep that valuable judgement under you.

      Best,

      Your AI Finance Expert,

      – Nicolas

      P.S. – You can watch the full on-demand recording of David and I going head-to-head here.

      P.P.S. – Want to see the Claude side built live? Here are the dashboard prompts in action → Use Claude to Build Insane Finance Dashboards (+ Prompts)

      video preview

      Share this:

      Join our newsletter

      Smarter Work, Weekly. AI workflows + finance insights.

        Other posts you might be interested in:

        Your team is delivering 10x more inaccurate work with AI (here’s the fix)

        Tell me, do you spend a lot of time reviewing the work of your team,…

        Your data has 3 problems and AI is making all of them worse (fix inside)

        My friend Christian Martinez had a mess. Three Excel tabs. Billing transactions on one. GL…

        You’re wasting 70 days of strategic data (here’s how to get it back)

        What if I told you you’re saying goodbye to 70 full working days of important…