Statement Converter
PDF Bank Statement to QFX Converter
Uploads a PDF bank or credit card statement and converts it to a QFX file using Gemini AI, enabling frictionless import into YNAB, Quicken, or QuickBooks.
01 — The Problem
Importing bank transactions into budgeting software (YNAB, Quicken, QuickBooks) requires either manual entry of every transaction or fighting with QFX/OFX file formats that are poorly documented and inconsistently implemented by banks. Most people resort to manual entry because the alternative is a frustrating integration fight with a format their bank doesn't support cleanly.
02 — What the AI Does
Drags-and-drops a PDF bank statement as input. Gemini 2.5 Flash extracts all transaction data (date, description, amount, category where available). The system generates a QFX file — Quicken Financial Exchange format — that is directly importable into YNAB and similar tools. Supports credit card statements from multiple issuers. Handles batch processing of multiple statements. Built on: Node.js + Vite + Google Gemini 2.5 Flash.
03 — Design Decisions
QFX as the output format, not CSV or OFX
YNAB specifically supports QFX imports. OFX support in YNAB is inconsistent. QFX is the format that "just works" for YNAB's import flow. **[Creator: add rationale]** for whether there was a deliberate reason QFX was chosen over OFX, or whether this was a pragmatic "it works for YNAB" choice.
Gemini 2.5 Flash for transaction extraction
At the time of building, Gemini 2.5 Flash offered strong reasoning capabilities at low cost. Transaction extraction from PDFs is a structured extraction task (not generation) — the model must read tabular data accurately.
The quality of extraction depends on the PDF's format. Some banks produce clean PDFs with readable text; others produce scanned images or malformed tables that Gemini can't reliably parse.
Batch processing of multiple statements
Budgeting usually involves multiple accounts (checking, savings, credit cards). Processing them one at a time creates friction. Batch upload handles the full financial picture in one operation.
Batch processing multiplies API costs. A 10-page statement is one API call; 10 statements is 10 calls. For a personal tool this is fine; for a shared or commercial product the cost model changes.
04 — Tradeoffs & Limits
- **PDF parsing quality is the critical variable.** Gemini can't read scanned PDFs (no OCR layer unless explicitly added). Bank statements that are image-based PDFs will produce garbage. Most bank PDFs are text-based, but not all. - **QFX format has bank-specific variations.** Some banks' QFX files are rejected by YNAB due to non-standard field values. The converter generates a valid QFX structure, but YNAB may still reject specific banks' files. - **No category mapping.** The converter extracts transactions as-is. It doesn't map transactions to YNAB categories — that step still requires manual assignment or rules setup within YNAB. - **No recurring transaction detection.** A human reviewing the output can see recurring charges; the tool doesn't flag them.
05 — Key Insight
PDF-to-structured-data conversion is a task where model capability has rapidly surpassed the quality of legacy parsing tools. The bottleneck isn't extracting the data anymore — it's generating the right output format for each target application. Format compatibility is the new frontier of these tools.