πŸ“’

Statement Filer

Credit card statements β†’ categorized workbook β†’ Google Drive

Drive not connected
πŸ“„

Drop your statement PDFs here

One card at a time. Amex, CIBC and Rogers supported today.

Post this quarter to Wave

Each category posts as one withdrawal on your shareholder loan account, with the expense account as its line item β€” the same shape as the Home Office entries already in your ledger. Personal spending is never posted.

Held in memory for this tab only β€” never saved to disk, never put in a URL. It grants full access to your books, so it is dropped the moment you close this page. Create one under Wave β†’ Settings β†’ API, or revoke it there.

Not connected

Apply your review decisions

Open the workbook this app filed into Drive, fill in the COMMENTS column on the Review sheet with the category you want, save it, then load it back here. The app recodes those rows, rebuilds the summary and redraws every highlighted statement.

You need the same statement PDFs loaded on the Process tab first, so the highlighted files can be redrawn. If you've just done a run in this session, they're already loaded.

What's already filed

Look at a quarter without touching it. Shows which statements it covers, the category split, and anything still sitting on the Review sheet waiting for a decision from you β€” plus a link straight to the workbook in Drive.

Connect Google Drive to browse what's filed.

Your rules

This is the brain of the app: which merchant maps to which category, the out-of-GTA meals rule, which merchants always go to Review. Edit it here, or download it and commit it to your repo so it travels with the app.

Your merchant list is kept out of GitHub. The repo is public, so the copy of rules.json there ships with an empty merchant map. Use Import a rules file to load my-rules.json β€” it's stored in this browser and never uploaded. Do that once per browser you use.

One-time setup

  1. Put this folder in a GitHub repo. Create a repo called statement-filer, upload every file from this folder, then go to Settings β†’ Pages and set the source to Deploy from a branch β†’ main β†’ / (root). A minute later your app is live at https://<your-username>.github.io/statement-filer/.
  2. Make a Google OAuth Client ID so the app can write to your Drive. Go to console.cloud.google.com β†’ create a project β†’ APIs & Services β†’ enable the Google Drive API β†’ Credentials β†’ Create credentials β†’ OAuth client ID β†’ application type Web application. Under Authorized JavaScript origins add https://<your-username>.github.io. Copy the Client ID.
  3. Paste the Client ID into the app using the βš™ button, top right. It's stored in your browser only β€” it is not a password and it is safe to keep in a public repo, but the app doesn't put it there for you.
  4. Publish the consent screen or add yourself as a test user. While the app is in "Testing" mode, only accounts listed under Audience β†’ Test users can sign in. Add your own Gmail address there.

What it does with your Drive

The app asks for permission to see and manage your Drive files. It needs the broad scope because it has to find your existing Annual Audit … Sep folder β€” an app-only scope cannot see folders it didn't create. It only ever writes inside Annual Audit … Sep / Credit Card Statements /. Your statements are read inside your own browser tab and go straight to your Drive; there is no server in the middle, and nothing is stored anywhere else.

Where files land

Annual Audit 2026 Sep
└── Credit Card Statements
    └── Amex
        β”œβ”€β”€ (one untouched copy of each statement)
        └── Q3 2026
            β”œβ”€β”€ Q3 2026 Amex Transactions.xlsx
            β”œβ”€β”€ Abridged Statements/
            β”‚   └── (transaction pages only)
            └── Expenses Summary/
                β”œβ”€β”€ Amex Q3 2026 Meals.pdf
                β”œβ”€β”€ Amex Q3 2026 Business Travel.pdf
                └── … one per category

Settings