About
Dogfitness Invoice App 2.0

Local web application that automates invoice processing for the Dogfitness business. Scans Gmail for invoices, extracts payment data using Claude AI, lets you review and approve each payment, then generates Fio Bank XML payment orders ready for upload.

Version0.13.0
GitHubondrejuhlir/df-invoices-app
FrameworkFlask 3 · Python 3.9
AI modelClaude Sonnet (claude-sonnet-4-6)
EmailGmail API v1 (OAuth2)
PaymentsFio Bank XML — CZK & EUR
Runs logged0
Trusted suppliers0
Changelog
v0.10.0 2026-05-23
  • New Due Date column: Pending Review and Run Result tables now show the actual Fio Bank payment date (next Friday CZK / next Tuesday EUR) alongside the supplier's original due date
  • 'Due Date' column renamed to 'Original Due Date' on Pending Review and Run Result
v0.9.1 2026-05-23
  • Fix: DRIVE_FOLDER_ID env var now honoured — upload uses the configured folder ID directly instead of always resolving by name
v0.9.0 2026-05-23
  • Drive upload overlay: full-page spinner shown immediately when 'Upload to Drive' is clicked
  • Fix: emails with both WFA and WFB labels now receive only 'Zaplaceno' (not also 'Faktura stažena')
  • Fix: reply-chain threads no longer show a false 'no PDF' warning on Pending Review
v0.8.0 2026-05-22
  • Result page: new 'Invoices Downloaded' stat card for Workflow B runs (hidden when download_count is 0 or absent)
  • Result page: section reorder — Google Drive card moved below Generated Files; Downloaded PDFs moved below Drive
v0.7.1 2026-05-22
  • Fix: 'Open Fio Bank' button now links to https://ib.fio.cz/ib/login (was bare homepage)
  • Fix: IBAN values with spaces (e.g. 'CZ36 5500 ...') are stripped to compact form before storage
v0.7.0 2026-05-22
  • Delete run from History: Delete button on each complete/cancelled run (with confirm dialog)
  • Deletes run JSON + all associated files (PDFs, XML output, Workflow B downloads)
  • Pending Review runs cannot be deleted; suppliers.json is never touched
v0.6.0 2026-05-22
  • Bank account / IBAN fixes on Pending Review (Phase 4a)
  • Extractor prompt improved: Claude now prefers Czech account format for CZK invoices
  • Auto-conversion: Czech IBANs (CZ...) are converted to XXXXXXXXXX/BBBB format automatically
  • Inline editable bank account / IBAN field on Pending Review — edit directly in the table
  • 'Converted from IBAN' note shown when value was auto-converted
  • '⚠ Missing' badge shown when no bank account could be determined
  • Edited values are applied to generated XML; original extracted values preserved for auditability
v0.5.0 2026-05-22
  • Run cancellation: Cancel button on Pending Review marks run as cancelled, redirects to dashboard
  • Cancelled badge on dashboard recent-runs table and History page
  • Dashboard last_run stat cards skip cancelled runs
  • Bug fix: scans with PDF attachments no longer crash with NameError
  • Deferred 'Faktura stažena' label to generate step — cancel never leaves stray Gmail labels
v0.4.0 2026-05-22
  • Google Drive upload: 'Upload to Drive' button on result page uploads all invoice PDFs
  • Creates or reuses a 'DF Invoices' folder in Google Drive
  • Shows folder link and uploaded count after upload; partial failures listed inline
  • Second-upload prevention: button replaced by folder link once uploaded
v0.3.0 2026-05-21
  • Workflow B: opt-in download of invoices labelled 'Faktura ke stažení'
  • Gmail labelling: applies 'Zaplaceno' after payment files are generated
  • Download XML directly from the result page (no more file paths)
  • History page: full list of all past runs with links
  • Suppliers page: view, rename and remove trusted suppliers
v0.2.0 2026-05-21
  • New Run flow: scan Gmail, extract with Claude AI, save run JSON
  • Pending Review page with trust/skip per supplier
  • Result page with totals and file list
  • core/gmail.py, core/extractor.py, core/supplier_db.py
  • Loading overlay with spinner during scan
  • About page, CLAUDE.md, ROADMAP.md, CHANGELOG.md
v0.1.0 2026-05-19
  • Flask skeleton with Google-style sidebar layout
  • Dashboard with stat cards and recent runs table
  • CZK and EUR Fio Bank XML generators
  • CSS design system (no framework)
  • GitHub repository created
Roadmap
  • Foundation
    Dashboard, CSS, sidebar layout
  • Core run flow
    Scan → Extract → Review → Generate
  • Gmail labelling
    Apply 'Zaplaceno' after approval
  • Download XML in browser
    Download button instead of file path
  • History page
    Full list of all past runs
  • Suppliers page
    View, rename, remove trusted suppliers
  • Workflow B
    Download-only invoices (Faktura ke stažení)
  • Payment date fix
    CZK/EUR: use due_date + correct Friday/Tuesday fallback
  • Google Drive upload
    Upload invoice PDFs to Drive after payment files are generated
  • Run cancellation
    Cancel a run at Pending Review; no stray Gmail labels left behind
  • Bank account fixes
    CZK→Czech format + inline edit on Pending Review
  • Delete run
    Delete a complete/cancelled run and all its files from History
  • Manual supplier creation
    Add suppliers manually from the Suppliers page
  • Enhance Pending Review
    Workflow B invoice list + per-invoice exclude toggle
  • Enhance Result page
    Workflow B download table + archived invoice count
  • Async scan
    Progress bar, background thread
  • Error handling
    Per-invoice errors, retry button, auth expiry handling
  • Auto-scheduling
    Run scan automatically every Friday morning
How it works
📧
Scan Gmail
Finds emails labelled "K zaplacení" that aren't yet "Zaplaceno".
🤖
Extract with AI
Claude reads each PDF and returns structured payment data (amount, IBAN, due date…).
👀
Review & approve
You check each invoice. Unknown suppliers are highlighted — trust them once, they're remembered.
💳
Generate & upload
CZK and EUR XML payment orders are generated. Upload them to Fio Bank internet banking.