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
makeworkflows plus focused utilities inbin/(validation, duplicate detection, recurring analysis, categorization review). - An integrated personal + business accounting model, with explicit separation conventions documented in
AGENTS.md(for exampleexpenses:business:*and tracked personal-to-business transfers). - Decision-support artifacts alongside accounting data, including
MONEY_CONTEXT.mdand 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)
- “Add money context and housing decision worksheets” (
- 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 scriptsrules/for import/parsing logicjournals/for accounting truthreports/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.