I run two companies and use one credit card for everything — business expenses for both companies and personal spending. Every month, I have to go through the statement, split every transaction into the right bucket, find receipts for every business expense, and organize them into Google Drive folders for accounting. It takes hours. It's mind-numbing. And I kept putting it off. So I built a tool to handle it.

The Problem

Here's what my monthly routine looked like before: download the credit card PDF, open a Google Sheet, manually type in every transaction, decide whether each one belongs to Company A (Income in Click), Company B (Siam Delicious), or personal. Then hunt through two different Gmail accounts for receipt emails, download the PDFs, rename them, and drag them into the right Google Drive folder — one subfolder per month, per company.

For 50-70 transactions a month, this easily took 3-4 hours. Half of that was just finding and filing receipts.

What I Built

I built a web app called Accy. It's a purpose-built tool that does exactly what I need and nothing more.

The core flow is simple: I upload my bank's PDF statement, and the app parses every transaction automatically. It reads the merchant name, the date, the amount — everything extracted from the PDF right in the browser using PDF.js.

Then the categorization engine kicks in. It checks each merchant against a set of rules: Runware goes to INC, Big C goes to personal, Hetzner goes to INC. First time it sees a new merchant, it highlights it in orange and I pick the category once. From that point on, it remembers. Every month, more transactions are auto-categorized from the start.

The Receipt Problem

Sorting transactions was only half the battle. The other half was receipts. Every business expense needs a receipt for accounting.

The good news: most of my SaaS subscriptions send receipts by email with PDF attachments. Runware, Anthropic, Hetzner, AWS, Kie.ai — they all email invoices with PDFs attached.

So I built a daily receipt scanner. Every night at midnight, a cron job scans all three of my Gmail accounts for receipt emails. It identifies which service sent the email, downloads any PDF attachments, and uploads them to the correct monthly subfolder in Google Drive. The folder structure is created automatically — INC Account > 2026 > 3 MAR 2026.

When I open Accy, each transaction has a green or red dot. Green means the receipt is already in Drive. Red means I need to find it manually. For services that don't email PDFs — like Facebook Ads, Google Cloud, Adobe — I know exactly which ones to go hunt down. No more guessing what's missing.

The Smart Parts

A few things make this actually pleasant to use:

  • Filter dropdown — select any merchant to see all their transactions for the month, with a total at the bottom. Instantly see "I spent 19,000 on Runware this month."
  • Export to Google Sheets — one click creates a formatted spreadsheet in the right Drive folder. No more copy-pasting into Google Sheets manually.
  • Month-to-month history — all data stored in a database, organized by month. I can look back at any previous month.
  • Rules engine — categories improve over time. The more months I process, the fewer unknown merchants appear.
  • Duplicate prevention — the receipt scanner checks if a file already exists before uploading. Run it twice, nothing breaks.

The Tech Stack

Everything runs on my existing server — the same one that hosts all my other tools. No extra cost.

  • FastAPI + SQLite (WAL mode) backend
  • PDF.js for parsing bank statements client-side
  • Google APIs — Gmail for scanning receipts, Drive for uploading, Sheets for export
  • OAuth2 with three Gmail accounts connected
  • Single HTML file frontend with a spreadsheet-like dark UI
  • System cron for the daily midnight receipt scan

What I Learned

The biggest lesson: not every API does what you expect. I tried to pull invoice PDFs from both Facebook's Marketing API and Google Cloud's Billing API. Neither has an endpoint for downloading actual invoice documents. You can see spend data, but not download receipts. Some things still require manual work.

But that's fine. The tool doesn't need to be perfect — it just needs to reduce 3-4 hours to 15 minutes. And it does. The receipts that come by email (about 60% of business expenses) are handled automatically. The rest, I can see exactly what's missing and go get it. (I later took this same approach and built a tool that matches my credit card reward points to nearby restaurants — another personal problem solved with a quick build.)

This is what building with AI actually looks like in practice. Not replacing everything. Not a magic button. Just eliminating the work that nobody wants to do, one boring task at a time.

Everyone has their version of "sort through credit card bills for three hours." Whatever your boring recurring task is, a Jarvis agent can probably build a tool to eliminate it — the same way Tim built this one for me. Describe the problem, let the agent build the solution, and never do that task manually again.

— Pond