Session goal: Run the bill scanner, process new attachments with OCR, and update records.

Progress log:

  • 09:18 — Ran bill-scanner.py --scan: found 2 potential bill/invoice emails (ID=111 Unitywater, ID=110 policy due-soon notice)
  • 09:18 — Ran --process-attachments: 12 files found (0 images, 11 PDFs). PyMuPDF (fitz) was missing from venv.
  • 09:20 — Installed PyMuPDF via uv pip install — OCR pipeline now functional.
  • 09:21 — Re-ran processing: all 11 PDFs converted to images and OCR’d successfully (15 pages total).
  • 09:25 — Reviewed extracted text from all processed files.

Outputs:

FileVendorAmountDue DateBilling PeriodStatus
Unitywater Bill 27 May 2026 (ID=111, ID=825)Unitywater$493.7126 Jun 202624 Feb – 20 May 2026⚠️ Action needed — due in ~24 days
JB-25702383-5008679994-146 (ID=98, ID=99)JB Hi-Fi$360.99N/A (paid)6 May 2026✅ Paid — AirPods Pro 3
PowerCo_Bill_MAR2026 (ID=514×3, ID=55)PowerCo Energy Ltd$136.3630 Apr 202615 Mar – 14 Apr 2026✅ Already past due — likely test data
Invoice (ID=test_421)Superloop$119.005 May 202620 Apr – 19 May 2026⚠️ Past due — NBN Internet 1000/100
What does your water bill pay for (ID=111, ID=825)Unitywater (info)ℹ️ Informational flyer only
  • Email ID=110 (“Policy 77512971 is due soon”) has no attachments — notification only. No bill PDF to process.

PyMuPDF fix: Installed into venv (/opt/hermes/.venv) — this resolves the recurring No module named 'fitz' error. Needs to be baked into the Docker image or cron setup for persistence.

Issues / Questions:

  1. PowerCo bill ($136.36) — confirmed as NZ test/placeholder data per prior sessions (NZ address, not ours). Skip payment action.
  2. Superloop invoice ($119.00, due 5 May) — past due by ~1 month. This is the “test_421” account, which may be a test/dummy account from earlier scanner runs. Needs verification: is this real or test data?
  3. PyMuPDF persistence — package installed into venv but may not survive pod restarts. Consider adding to Dockerfile or initContainer.

Status: done