Project Overview: finances


I decided to keep finances as a plain-text, hledger-first system and evolve it through additive workflows rather than structural rewrites. The current direction is clear: preserve reliable books across personal and business accounts, then layer better decision support (deduction review, housing scenarios, API exploration) on top of that foundation.

What We Built

  • A working finance operations repo centered on hledger journals, import pipelines, categorization, and reporting.
  • A practical command surface built around make workflows plus focused utilities in bin/ (validation, duplicate detection, recurring analysis, categorization review).
  • An integrated personal + business accounting model, with explicit separation conventions documented in AGENTS.md (for example expenses:business:* and tracked personal-to-business transfers).
  • Decision-support artifacts alongside accounting data, including MONEY_CONTEXT.md and housing scenario worksheets (mortgage-vs-sell-worksheet.html, rental-keep-worksheet.html).

Why We Built It

  • The primary need was operational clarity: fast imports, fast categorization, and trustworthy balances without introducing heavy infrastructure.
  • Recent work confirms the priority shifted from just bookkeeping to better decisions under real constraints:
    • “Add money context and housing decision worksheets” (3f57cb2)
    • “Add 2026 personal imports and categorization updates” (dacd2b2)
    • “add advanced hledger workflows and planning templates” (a12a1b9)
  • Session themes reinforce that shift: deduction strategy for 2025, keep-vs-sell housing evaluation, and pulling quick reports from fresh data.
  • Keeping everything in plain text with CI-friendly validation supports auditability, repeatability, and low-friction agent/human collaboration.

How It Works

  • Source-of-truth data lives in journal files; imports convert bank exports (CSV/QIF/OFX) into hledger-compatible entries using bank-specific rules.
  • Day-to-day operation is command-driven: import new data, review unknowns, run categorization, validate, then generate balances/reports.
  • The repository structure separates concerns cleanly:
    • bin/ for operational scripts
    • rules/ for import/parsing logic
    • journals/ for accounting truth
    • reports/ for generated outputs
  • Current emphasis is incremental improvement, not redesign: improve categorization quality, maintain separation hygiene, and extend planning/reporting workflows as new decisions come up.