A weekly Claude task that reads receipt emails, maintains my ledger, and flags duplicate subscriptions and price changes
I set up a weekly scheduled task in Claude that runs every Monday morning without any input from me. It reads my receipt emails, maintains a running expense ledger, and flags duplicate subscriptions and price changes. To make it work, I created a Gmail label called Receipts and added filters so vendor receipt emails are labeled automatically. These include emails from Stripe, the App Store, PayPal, and anything containing “receipt” or “invoice” from my vendors. I then connected Gmail to Claude so it can search and read that label. The task extracts each receipt’s vendor, date, amount, and billing cycle. It uses Gmail message IDs to deduplicate entries, appends new rows to the ledger, and creates the ledger on the first run. Each week, it gives me a short digest with new charges, my current monthly burn, and any flags. I read the digest and cancel whatever it flags. Because the ledger carries Gmail message IDs forward, every future run deduplicates itself. Step-by-step: 1. I created a Gmail label called Receipts. 2. I added filters so vendor receipt emails receive the label automatically, including emails from Stripe, the App Store, PayPal, and emails containing “receipt” or “invoice” from my vendors. 3. I connected Gmail to Claude so it could search and read the Receipts label. 4. I created a weekly scheduled task in Claude that runs every Monday morning with this prompt: `Search label:Receipts newer_than:8d. For each receipt, extract vendor, date, amount, and billing cycle. Dedupe by Gmail message id so nothing gets counted twice. Append the new rows to my running expense ledger (create the ledger on the first run). Then recompute my confirmed monthly recurring total and flag: any new vendor this week, any price change for an existing vendor, any possible duplicate subscription, and any charge tied to a project I have paused. Write me a short digest: new charges, current monthly burn, flags.` 5. When the task runs, I read the digest and cancel whatever it flags. 6. I keep the Gmail message IDs in the ledger so future runs can deduplicate themselves.
0 comments