第4話
Chapter 4: officeHours
“Receipts, Reviewed”
AI bookkeeping for solo therapists in Ontario. The AI reads the receipts and the therapist decides.
BRYAN
A shoebox of receipts at tax time
The problem
A solo therapist
Solo therapists in Ontario keep their own books. Receipts and supplier invoices pile up, and the accountant needs them sorted.
How it works
Step 1: Upload
Drop in receipts and supplier invoices. Uploads are resumable, duplicates are caught, and HEIC photos are converted.
Step 2: Read
Claude Sonnet 5 runs a fixed three-step pipeline: classify, extract, categorize. Every call is forced through a single strict tool.
Step 3: Approve
The therapist reviews and approves every transaction, then exports a two-sheet Excel workbook for their accountant.
Behind the ink
How it's built, and how the AI is kept honest.
A human approves everything
Auto-approve is hard-coded off on the server. Every value is re-validated in code, and every user or AI change goes to an audit log.
Data minimization
Raw model responses are never stored, and no client-identifying data is collected. Data and backups stay in Canada (ca-central-1).
Locked down
Row-Level Security on every user-owned row and file, 60-second download links, and staged account deletion. Tenant isolation is proven by automated pgTAP tests.
Less clicking, faster CI
Receipts from the same supplier are grouped, so in a scripted test 40 receipts needed only 14 confirmations. Running tests in parallel cut median CI time by 34%, from 13m45s to 9m04s.
Built withNext.js · TypeScript (strict) · Supabase · Claude Sonnet 5 · Vitest · pgTAP · Playwright · GitHub Actions