Snap receipts, auto-extract the IRS substantiation fields, and export evidence-grade PDF reports — all stored in your Google account, behind your Google sign-in.
Tip: use “Add to Home Screen” on this page — the icon will launch straight into your tracker.
How it works
Private by construction. The app runs as a Google Apps Script you deploy in your own account, restricted to “Only myself.” Google enforces sign-in; no one else can even load the page. Nothing is stored on any third-party server.
Your data, in your Drive. Expenses index into a Google Sheet; receipt photos and PDFs are filed in date-organized Drive folders with permanent links.
AI-read receipts. Attach photos/PDFs of the receipts for one healthcare event; OpenAI (gpt-5.6-luna) fills in the date of service, provider, description, amount paid, person, and proof-of-payment — anything missing is flagged in red until you fix it (IRS substantiation requires all of it).
IRS-ready exports. Filter items (e.g. unreimbursed, by person, by date range) and generate a PDF containing the summary, totals, and every receipt — with exact page cross-references and a link to re-open the same selection and mark it reimbursed after your claim is paid.
Set up (one time, ~2 minutes)
1 Create the project & paste the code (one copy-paste)
Name the project HSA Tracker (click “Untitled project”).
Copy the block below, select everything in the editor's Code.gs, and paste over it. That single paste is the entire app — no other files to create.
2 Deploy — private to you
Click Deploy → New deployment.
Type: Web app.
Execute as: Me and Who has access: Only myself (both are the defaults) — this is what makes the app private. Google requires your sign-in and refuses every other account.
Click Deploy, authorize the permissions (Drive, Sheets, external requests — all used only by your own script), and copy the Web app URL (ends in /exec).
3 First run
Open the Web app URL. The spreadsheet and Drive folders are created automatically on first load.
Go to Settings in the app: paste your OpenAI API key (it is validated, stored in the script's own properties, and never sent to the browser) and add your household members.
4 Link it here
Paste your Web app URL so this page (and its home-screen icon) opens your tracker directly:
Stored only in this browser (localStorage).
Updating the app later
Copy the block from step 1 again (this page always serves the latest version) and paste over Code.gs.
Deploy → Manage deployments → edit (pencil) → Version: New version → Deploy.
Updating the existing deployment keeps your URL. Do not create a new deployment for updates — that mints a different URL.
Set up back when this page listed 7 files? Just paste the new block over Code.gs — the old HTML files (Index, styles.css, util.js, app.js, export.js) are no longer used and can be deleted.