Here’s my breakdown of automating the tax reporting of my Airbnb.
Every month I was pulling rental data out of PDF receipts and re-entering it into my lodge tax software. It sounds straightforward but it was actually quite time consuming.
The PDF I was provided would give me start dates, end dates, gross rent, rental platform (Airbnb, VRBO, Booking, etc.) and pet deposits for each guest that stayed at my property.
The lodge tax software I use requires the total number of days the property was rented under each platform, as well as the total revenue per platform. Since the PDF doesn’t provide those totals, you have to manually go through each listing and count the number of days each guest stayed per platform, then do the same for total revenue.
Enter Claude
I initially started by using Claude Cowork to automate the process and it worked okay but I knew it could be better. After the first month I rebuilt the process using Claude Code and took advantage of the new Routines feature.
How it works under the hood
Claude Code reads new receipt emails from my Gmail, downloads the PDF attachment, extracts the booking data (check-in dates, nights, revenue, and platform), and emails me a clean summary with the exact totals I need to type into my lodge tax software.
The pivot that made it work
Getting there took a few pivots. My first attempt ran the pipeline entirely in the cloud, but Claude’s cloud environment hit connectivity issues talking to Google’s Gmail API. The workaround was a hybrid: use Claude’s native Gmail integration for searching and reading emails, and fall back to Python for parts that required real file manipulation (downloading the PDF binary and parsing it). Splitting the work that way turned a dead end into a working product.
The whole thing runs automatically on the first nine days of every month — no laptop required, no login, nothing to remember. When the email hits my inbox I just copy the numbers over. I intend on automating the final data entry as well but want to confirm accurate results for a couple months first.
Tech stack
- Claude Code — AI dev environment used to write and iterate on the pipeline
- Claude Code Routines — Cloud scheduler that runs the automation monthly
- Claude Gmail Connector (MCP) — Native integration for searching, reading, and sending emails
- Python 3.12 — Language for the PDF download and extraction scripts
- pdfplumber — Library for extracting text and structured data from PDFs
- Google Gmail API — Downloads PDF attachments the MCP connector couldn’t access directly
- OAuth 2.0 — Authentication for Gmail API access
- GitHub — Source code hosting; the Routine clones the repo on each run
- pytest — Test framework for verifying pipeline behavior