Turn a Folder of Receipts into an Expense Report with Claude Cowork
claude cowork ai agents automation tutorial anthropic

Turn a Folder of Receipts into an Expense Report with Claude Cowork

D. Rout

D. Rout

August 2, 2026 8 min read

On this page

Most receipt-to-expense-report workflows still involve you: opening each photo, typing numbers into a spreadsheet, guessing at categories, and hoping the totals reconcile. Claude Cowork is Anthropic's agentic workspace inside Claude Desktop, web, and mobile — it brings the same file-reading, multi-step planning that powers Claude Code to ordinary knowledge work, without a terminal in sight. In this tutorial we'll point Cowork at a folder of messy receipts and have it produce a clean, validated expense report.

You'll work through the full loop: granting folder access, writing a task prompt precise enough to get consistent output, choosing a permission mode, and validating what Cowork hands back with a small Node script. Everything here mirrors the companion repo, claude-cowork-expense-report-demo, so you can clone it and follow along receipt-for-receipt.

Prerequisites

  • A paid Claude plan — Cowork is available on Pro, Max, Team, or Enterprise.
  • Claude Desktop installed and signed in (macOS or Windows), or the Cowork mode on claude.ai / Claude mobile.
  • Node.js 18+ installed locally, for running the validation script.
  • Git, for cloning the companion repo.
  • Basic comfort reading a CSV — you'll be checking Cowork's math, not writing any yourself.

Step 1: Clone the companion repo

Everything you need — sample receipts, the exact prompt, and a validator — lives in one repo.

git clone https://github.com/deepakrout/claude-cowork-expense-report-demo.git
cd claude-cowork-expense-report-demo

The receipts folder has four plain-text receipts standing in for photos: a rideshare, a two-night hotel stay with a resort fee, a client lunch with an auto-gratuity, and an office supply run. Each one uses a different date format on purpose — that inconsistency is exactly the kind of thing Cowork needs to normalize.

receipts/
├── receipt-001.txt   # CityHop Rides — 07/22/2026
├── receipt-002.txt   # Harborview Suites — 2026-07-22 to 2026-07-24
├── receipt-003.txt   # The Copper Skillet — 23 Jul 2026
└── receipt-004.txt   # Cascade Office Depot — 07/25/2026

Step 2: Install the validator's dependencies

The repo includes a small Node script that checks Cowork's output for missing columns, bad date formats, and totals that don't add up. It has no external dependencies, but npm install keeps the workflow consistent if you extend it later.

cd scripts
npm install
cd ..

Step 3: Start a Cowork session and grant folder access

  1. Open Claude on the web, in Claude Desktop, or in the mobile app.
  2. In the message box, switch from "Chat" to "Cowork."
  3. When prompted, grant Cowork access to the claude-cowork-expense-report-demo folder on your machine (desktop) or upload the folder's contents (web/mobile).

Cowork can only read and write inside folders you explicitly connect — it won't go wandering through the rest of your filesystem. On desktop this happens through the Claude Desktop app even though the session itself runs remotely on Anthropic's servers.

Step 4: Choose a permission mode

Before running the task, decide how much Cowork checks in with you. This matters more than it sounds like — it changes both the pace of the session and how much of your usage it consumes. See the reference table below for the three modes; for this tutorial, "Manually approve" is the safest starting point since you're new to the tool and working with (fake, but realistic) financial data.

Step 5: Paste in the task prompt

The prompt is the part most people under-invest in. A vague ask like "make an expense report from these receipts" will produce different column orders and date formats every time you run it. This prompt fixes both:

Look at every receipt in the receipts/ folder. For each one, extract the
vendor, date, category (travel, lodging, meals, or supplies), subtotal,
tax, tip/gratuity if present, and total.

Then build expense-report.csv in the root of this folder with one row
per receipt and these columns, in this order:
Date, Vendor, Category, Subtotal, Tax, Tip, Total, Notes

Normalize every date to YYYY-MM-DD format, even though the receipts use
different formats. Add a final TOTAL row summing the Total column. In
the Notes column, flag anything unusual — for example the hotel's
resort fee, or the client lunch's business purpose.

When you're done, also create expense-report-summary.md with a
two-sentence summary of total spend by category.

Paste this into the Cowork message box and let it run. You'll see Cowork open each receipt, reason about which category it belongs to, and write both output files. If you're in "Manually approve" mode, you'll get a permission prompt before it writes anything — approve it once you've reviewed the plan.

Step 6: Review what Cowork produced

Open expense-report.csv in the repo root. It should look close to sample-output/expense-report-sample.csv, which is included as a reference for what a correct run looks like:

Date,Vendor,Category,Subtotal,Tax,Tip,Total,Notes
2026-07-22,CityHop Rides,travel,38.40,0.00,6.00,44.40,Airport transfer
2026-07-22,Harborview Suites,lodging,393.00,41.58,0.00,434.58,Includes $15 resort fee in subtotal
2026-07-23,The Copper Skillet,meals,86.50,7.79,17.30,111.59,Client lunch - Acme Corp deal review
2026-07-25,Cascade Office Depot,supplies,94.96,8.07,0.00,103.03,USB-C dock and cables
TOTAL,,,,,,,693.60,

Notice the hotel row: Cowork has to decide whether the resort fee belongs in the subtotal or gets its own line. Either is defensible, but it's the kind of judgment call worth spot-checking rather than trusting blindly.

Step 7: Validate the output automatically

Rather than eyeballing every row, run the validator against whatever Cowork produced:

node scripts/validate-expense-report.js ./expense-report.csv

It checks three things: that the header row matches the expected columns exactly, that every date matches YYYY-MM-DD, and that Subtotal + Tax + Tip equals Total on every row (with the same check rolled up against the final TOTAL row). A clean run looks like this:

Checked 4 row(s).
Computed total: $693.60

Expense report looks good.

If something's off — say Cowork left a date as 07/22/2026 instead of normalizing it — the script will tell you exactly which line and why, so you can go back to the Cowork session and ask it to fix that one row rather than starting over.

Step 8: Turn it into a recurring task (optional)

If you actually process expenses on a schedule, type /schedule in the same Cowork task to turn this into a recurring job — point it at your real receipts folder (a Downloads subfolder works well) and have it run weekly. Scheduled tasks run remotely, so they don't need your laptop open or the desktop app running.

Reference: Cowork's permission modes

Mode What it does Best for
Manually approve Claude pauses before every action and waits for you to click Allow or Deny. First run-throughs, sensitive data, anything with real financial or messaging consequences.
Automatically approve (Auto) Claude keeps working without stopping, but every action still gets reviewed for safety (data exfiltration, prompt injection) before it executes. Consumes more usage than the other modes because of that extra checking. Repeated tasks you've already vetted once, where you still want a safety net.
Skip all approvals (Skip) Claude doesn't pause and nothing checks its actions automatically. Only when you fully trust every connector, file, and app involved — not recommended for a first run.

What's next

  • Swap in Google Drive: connect the Google Drive connector and have Cowork pull receipts directly from a shared "Expenses" folder instead of a local one.
  • Hand off to Claude for Excel: once Cowork produces the CSV, open it with Claude for Excel to add pivot tables or a monthly rollup without leaving the spreadsheet.
  • Add an approval chain: extend the prompt to flag any single expense over a threshold (say $200) for manual review before it's included in the total.
  • Combine with Claude in Chrome: for real receipts sitting in Gmail as PDF attachments, pair Cowork with Claude in Chrome so it can pull attachments directly instead of you exporting them first.

Further reading

Everything in this walkthrough — the sample receipts, the exact prompt, and the validation script — is in the claude-cowork-expense-report-demo repo. Clone it, point Cowork at your own messy receipts folder, and adapt the prompt for whatever recurring paperwork is eating your afternoons.

Share

Comments (0)

Join the conversation

Sign in to leave a comment on this post.

No comments yet. to be the first!