Snap receipts, auto-extract the fields that make a record hold up, and export evidence-grade PDF reports — all stored in your Google account, behind your Google sign-in.
Stored only in this browser (localStorage). Once saved, this page — and its home-screen icon — opens your tracker directly.
Where do I find my Web app URL?
In your Apps Script project: Deploy → Manage deployments, pick the active web-app deployment, and copy the Web app URL. It ends in /exec. Opening the project from your Apps Script project list is the quickest way there.
Update the code
Copy the block below — this page always serves the latest version.
Select everything in Code.gs and paste the block below over it. That single paste is the whole app.
2 Deploy it privately
Deploy → New deployment, type Web app.
Execute as: Me, Who has access: Only myself (both are the defaults). This is what makes it private — Google requires your sign-in and refuses every other account.
Deploy, authorize the permissions, and copy the Web app URL (ends in /exec).
3 First run
Paste the URL into Link a deployment above and save — that opens the app.
The spreadsheet and Drive folders are created on first load.
In the app’s Settings: add your household members, and paste an OpenAI API key if you want receipts read automatically.
How it works
Private by construction. The app is an Apps Script you deploy in your own account, restricted to “Only myself.” Records live in your Drive; nothing is stored on anyone else’s server. Expenses index into a Google Sheet, receipts file into date-organized Drive folders.
AI reading is the one thing that leaves your account. With it on, attached receipts go to the OpenAI API to be read — and they contain health information. It fills in date, provider, description, HSA eligible amount and person, and splits mixed receipts so a pharmacy trip counts the medicine and not the snacks. Switch it off in Settings and type everything by hand instead.
It checks two things per record. Proof of payment, and a document describing what was provided (a card slip reading “CVS $47.32” proves a purchase, not a medical one). Gaps are flagged in red but never block you.
Audit-ready exports. Filter by person, status or date and generate a PDF with the summary, totals and every receipt, cross-referenced by page — plus a link that re-opens the same selection to mark it reimbursed once the claim is paid.
Updates come from this page. The app has no update channel of its own: it is your script, running as you, so nothing here can reach it. This page hands its version over when it opens the app, and the app tells you when it is behind.