US-4.1implemented Run the full pipeline end-to-end
As a user who has configured accounts, defined categories, labelled receipts, and matched them to CSV transactions I want run `./start.sh` and have the entire pipeline execute: validate config, preprocess CSVs, run hledger-flow import, consolidate journals, and generate plots so that I get a complete `all-years.journal` and financial visualisations with a single command.
Demo video coming soon

DAG Diagram

Configuration Receipt Labelling Account Configuration EUR cash wallet — no CSV import EUR physical wallet Triodos checking account — imports from CSV Triodos checking (EUR CSV) Directory Paths Standard directory layout: import/{holder}/{bank}/{type}/{year}/ Default dir paths Filename Convention Standard filename conventions for CSV, rules, and journal files Default filenames Categorisation Config Standard categorisation settings from config.yaml Default categorisation Matching Algo Config Standard matching algorithm settings from config.yaml Default matching algo Categories groceries:{ekoplaza,supermarket}, repairs:{bike}, withdrawl:{euro:{pound}} basic categories Matching Parameters days:2, amount_range:0, days_month_swap:true default (±2d, exact) Starting Journal Opening balance: Assets:Triodos:Checking 1000 EUR 2024: 1000 EUR Bank CSV Transactions Debit card purchase at Ekoplaza, exact date match Triodos -42.17 EUR 2025-01-15 Ekoplaza Receipt Images Ekoplaza receipt, paid by card example_card.jpg No label exists yet No receipt label JSON exists yet for the example_card receipt example_card (no label) Label receipt in TUI Label ekoplaza card receipt via TUI based on image TUI label ekoplaza_card Receipt label output JSON triodos account, 2025-01-15, groceries:ekoplaza example_card EUR 42.17 card Matching Outcome Exact date+amount, no TUI needed AUTO-LINK 1 match found Journal Output Debit groceries:ekoplaza, credit triodos checking Expenses:Groceries:Ekoplaza 42.17 EUR Visualisation Interactive Plotly Sankey of all flows Sankey Diagram Interactive Plotly Treemap of spending Treemap Plot
Current layer:

Matching Flow

The matching algorithm tries to find a CSV transaction for each receipt. Retry outcomes loop back for another attempt; terminal outcomes end the flow.

Try to match retry outcomes (loop back) terminal outcomes (flow ends) WIDEN DATE WIDEN AMOUNT SWAP DD/MM CORRECT RECEIPT TOO MANY (15+) AUTO-LINK CURRENCY CONVERT CURRENCY + FEE DISAMBIGUATE SKIP (cash) BLOCKED (dup) ASSET CONVERT CLASSIFY (CSV)