Hledger Documentation Says "Build Your Own Budget Reports"—Is This Empowering or Gatekeeping?

hledger Documentation Says “Build Your Own Budget Reports”—Is This Empowering or Gatekeeping?

I’ve been wrestling with this question as I transition more of my small business clients to plain text accounting. The hledger documentation is thorough and technically excellent, but I’m noticing a pattern that concerns me from an accessibility standpoint.

The Core Philosophy Question

hledger’s approach emphasizes flexibility over convenience—you build custom reports tailored to your exact needs rather than accepting vendor assumptions. As a CPA, I appreciate this deeply. Every client has unique reporting requirements, and the ability to script custom solutions is invaluable.

But here’s what happened last month: A potential client (small nonprofit, $300K budget) asked about my services. When I explained that I use plain text accounting with custom reporting scripts, they responded: “That sounds very technical. What if something happens to you? Can anyone else maintain this?”

Is “Build Your Own” Accessible to Professional Practices?

From my perspective as someone managing multiple client books:

Where it works brilliantly:

  • Custom grant reports with specific funder requirements
  • Multi-dimensional analysis (program × grant × time period)
  • Automated reconciliation workflows
  • Version-controlled audit trails

Where it creates barriers:

  • Training staff on scripting (my junior bookkeeper knows QuickBooks, not bash)
  • Client comfort level (they want to see dashboards, not terminal output)
  • Business continuity (if I’m unavailable, can someone else access the reports?)
  • Professional credibility (explaining “I write Python scripts” sounds less established than “I use QuickBooks”)

The Comparison That Keeps Coming Up

One of my tech-savvy clients compared this to software development. They said: “In our company, we have power users who write SQL queries, and business users who click buttons in Tableau. Both access the same data, just different interfaces.”

That resonated with me. Maybe the question isn’t “should hledger be easier?” but rather “should we build layered interfaces?”

Four Possible Directions

(A) Preserve Technical Focus — Plain text accounting is inherently a tool for technically-minded practitioners. That’s our niche, and we should embrace it.

(B) Create Standardized Templates — Develop well-documented starter kits for common scenarios (freelancer, small business, nonprofit) that practitioners can customize incrementally.

(C) Build Progressive Interfaces — Develop tools like Fava plugins that generate queries from form inputs, while still allowing direct scripting for power users.

(D) Accept Limited Adoption — Acknowledge that plain text accounting serves a specific market (technical users, specialized bookkeepers) and won’t replace mainstream tools.

What I’m Currently Doing

I’ve adopted a hybrid approach:

  • Backend: Beancount with custom Python scripts for all the heavy lifting
  • Client-Facing: Fava dashboard for basic browsing, automated PDF reports for monthly statements
  • My Workflow: Terminal and scripts for daily work

This works, but it requires maintaining two interfaces. I’m essentially building the “wizard layer” myself for each client.

The Professional Development Question

Here’s what worries me: I want to hire help. But training someone on plain text accounting requires:

  1. Basic bookkeeping knowledge (standard)
  2. Command-line comfort (barrier)
  3. Understanding of scripting/automation (significant barrier)

Versus QuickBooks where I need:

  1. Basic bookkeeping knowledge
  2. Point-and-click UI skills

The talent pool for the first option is much smaller and more expensive.

What Would Help?

If I could wave a magic wand:

  • Documented workflows for common professional scenarios with working examples
  • Report libraries that bookkeepers can download and adapt (like Tableau workbooks)
  • Better bridge tools between command-line power and client-friendly interfaces
  • Professional certifications or training that give clients confidence in the approach

The Real Question

I think @helpful_veteran (who I’ve seen help so many people on this forum) asks an important question: Are we designing for the right user?

  • If we’re designing for technical enthusiasts and specialized professionals → current approach works
  • If we’re designing to replace mainstream accounting software → we have accessibility gaps
  • If we’re designing for something in between → we need clearer positioning and better tooling

What’s your experience? For those using plain text accounting professionally, how do you handle the accessibility question with clients and staff? For those teaching beginners, where do people struggle most?

I’m genuinely curious whether this is a tooling problem, a documentation problem, or a positioning problem.

As someone who literally just went through this transition (2 months into Beancount after 3 years of spreadsheets), I have FEELINGS about this.

I Am Your Sister The Teacher

Not literally, but I’m the person @helpful_veteran is worried about. I’m a DevOps engineer, so I’m technically capable, but accounting is completely foreign to me. And you know what? The scripting wasn’t the hard part. The learning curve was actually the BEST part.

Why “Build Your Own” Made Me Understand Finance

Here’s what happened: In spreadsheets, I had a “Monthly Budget” tab with formulas I copy-pasted from a template. Did I understand what they did? Nope. Did I understand what “Assets = Liabilities + Equity” meant? Nope.

When I started with Beancount, I HAD to understand account structure to write even basic queries. I HAD to understand double-entry bookkeeping to balance my transactions.

The friction forced me to learn. And now I actually understand my finances instead of just looking at pretty charts.

The Git Analogy

This reminds me of the git learning curve debate. People used to say git was “too complicated” and demanded simpler version control. But git’s complexity comes from its power.

Same with plain text accounting:

  • Easy: Click “Spending Report” button (like SourceTree’s GUI)
  • Powerful: Write custom BQL query (like git command line)

And just like with git, once you understand the underlying concepts, the “hard” way becomes faster and more flexible.

But Here’s Where I Partially Agree with Fred

The daily checking problem is real. I don’t want to write a query every time I wonder “Can I afford this dinner?”

My current solution: I have 5 “saved queries” in a bash script:

#!/bin/bash
echo "Net Worth:"
bean-query ledger.beancount "SELECT sum(convert(value(position), 'USD')) WHERE account ~ 'Assets'"

echo "\nMonthly Spending:"
bean-query ledger.beancount "SELECT account, sum(position) WHERE ..."

It’s not YNAB 2-click simple, but it’s a one-liner in my terminal: ./finances.sh

My Vote: (B) Templates + (C) Progressive Complexity

Give me:

  1. Working examples I can copy (personal finance starter kit)
  2. Gradual customization (change categories first, then learn query syntax)
  3. Commented scripts that explain what each line does

The hledger scripting docs are great for reference, but they’re not great for learning. Show me a working budget report script with comments like:

# This line filters to current month's expenses
hledger balance ^expenses -b thismonth -e nextmonth

# This compares to budgeted amounts defined in budget.journal
hledger balance --budget ^expenses

The Gatekeeping Question

I actually DON’T think “build your own” is gatekeeping. Here’s why:

Gatekeeping would be: “You must have a CS degree to use this.”
High learning curve is: “You must invest time to learn this powerful tool.”

Those are different! Gatekeeping excludes people based on who they are. Learning curves exclude people based on time/effort investment.

Where I Think We Could Improve

Not: Dumb down the tools
Instead: Better learning resources

  • Video walkthroughs: Show someone building a budget report from scratch, explaining each step
  • Interactive tutorials: Type queries in a sandbox, see results immediately
  • Example repos: GitHub repos with complete example ledgers + reports for common use cases

I found the full-fledged-hledger tutorial super helpful, but only AFTER I understood basics. We need more “Day 1” resources.

Hot Take

If someone genuinely just wants to click buttons and see charts, they SHOULD use YNAB. That’s what it’s designed for!

Plain text accounting is for people who want:

  • Full control over their data
  • Custom analysis capabilities
  • Version control
  • Automation possibilities

If you don’t want those things, use a different tool. That’s okay! Not every tool is for everyone.


TL;DR: The learning curve is a feature, not a bug. But we can provide better onramps (templates, tutorials, examples) without sacrificing power.

This hits home. I’m 3 years into my FIRE journey with Beancount, and I think about this trade-off constantly.

The FIRE Perspective: I Need Both Power AND Speed

Here’s my honest take: I want the flexibility of plain text accounting, but I also want to check my savings rate in 30 seconds from my phone while waiting for coffee.

I can’t do that right now. I need to:

  1. SSH into my laptop
  2. Pull latest from Git
  3. Run a BQL query
  4. Parse the output mentally

Meanwhile, my friends using Empower or Origin just open their app and see their net worth instantly.

Where “Build Your Own” Works for FIRE

For annual portfolio rebalancing? Custom reports are ESSENTIAL. I need to see:

  • Asset allocation across 8 accounts
  • Tax-loss harvesting opportunities
  • Roth conversion ladder calculations
  • Geographic diversification breakdown

No commercial tool gives me this level of control. I built a Python script that generates exactly what I need. That took 40 hours to build, but now it runs in 5 seconds.

Where “Build Your Own” Fails for FIRE

For daily spending awareness? I just want to know: “Did I exceed my $500 restaurant budget this month?” I shouldn’t need to write a script for this.

YNAB shows this in 2 clicks. That simplicity drives behavioral change. When I see red numbers, I adjust spending immediately. With Beancount, by the time I write the query, I’ve forgotten why I cared.

My Controversial Take: Tools Should Diverge, Not Converge

Maybe hledger and Beancount should lean INTO being technical tools, and we need a DIFFERENT tool for the “I just want a budget” crowd.

Option B (templates) feels like a band-aid. Even with starter kits, you’re still expecting non-technical users to:

  • Use command line
  • Understand plain text accounting concepts
  • Modify scripts they don’t fully understand

Option C (wizard layer) is interesting, but then you’re basically rebuilding YNAB with extra steps.

What I Actually Want

A hybrid stack:

  • Beancount for the source of truth (full control, version history, custom analysis)
  • Simple dashboard for daily checks (spending by category, budget status, net worth trend)
  • Automated sync between them (no manual export/import)

Basically, I want Empower’s UX reading my Beancount ledger. Is that too much to ask? :sweat_smile:

The Real Accessibility Gap: Mobile

Forget “2 clicks vs 4 hours.” The real gatekeeping is: I can’t check my finances from my phone without a laptop.

That’s not a power-user vs beginner issue. That’s a “plain text accounting doesn’t have mobile apps” issue.


TL;DR: I think we should embrace (A) for power users like me who need custom reports, but acknowledge that plain text accounting will remain niche until someone builds better daily-use interfaces. Templates help, but they don’t solve the fundamental “I’m at the grocery store and want to check my budget” problem.

Really interesting discussion. I’m coming at this from a different angle—I’m a professional bookkeeper who uses Beancount for 20+ small business clients.

The Professional Client-Facing Perspective

Here’s the reality: My clients don’t care about my tech stack. They care about getting clear financial reports.

When I tell a client “I use Beancount for your books,” their eyes glaze over. When I show them a clean PDF profit & loss statement, they’re happy.

Where “Build Your Own” Is Essential Professionally

For client work, canned reports are NEVER enough. Each client needs:

  • Custom categories that match their business (e.g., food truck needs “Commissary Fees” category that doesn’t exist in QuickBooks defaults)
  • Funder-specific formats (grants require specific line items)
  • Multi-dimensional reporting (show revenue by product AND location AND time period)

QuickBooks gives you maybe 10 standard report templates. Then you export to Excel anyway to customize. With Beancount, I skip the middleman and generate exactly what the client needs via Python scripts.

This is where “build your own” is empowering, not gatekeeping.

But Here’s the Perception Problem

When I first started pitching Beancount to clients (after years of QuickBooks), I made a mistake. I said:

“I use a command-line accounting system with Python scripts for custom reports.”

Clients heard: “This is complicated and technical. What if you get hit by a bus?”

Now I say:

“I use a specialized system that gives us better audit trails and custom reports. You’ll receive the same monthly reports, just more accurate and tailored to your needs.”

Clients hear: “Professional and customized service.”

The GUI vs CLI Question Is About Client Comfort

@finance_fred is right about the mobile gap, but from a different angle. It’s not that I personally need to check finances from my phone. It’s that clients PERCEIVE command-line interfaces as “technical/scary” and web dashboards as “professional/trustworthy.”

When I show a client Fava (beautiful web dashboard), they’re comfortable. When I accidentally let them see my terminal with bean-query commands, they get nervous.

My Workflow: CLI for Me, GUI for Them

I actually use a hybrid approach:

For myself (daily work):

  • Command-line importers (faster)
  • Custom Python scripts (automation)
  • Terminal-based workflows (I’m fast here)

For clients (monthly reports):

  • Fava dashboard (they can log in and browse)
  • Automated PDF reports (generated from scripts, but they just see clean PDFs)
  • Custom visualizations (generated via Python, exported as images)

Why This Matters for Accessibility

I think @helpful_veteran’s question is really: “Should we design Beancount for bookkeepers or for end-users?”

Because here’s the thing: professional bookkeepers CAN learn scripting. I did. It took 6 months to get comfortable, but now I’m way more efficient than I was with QuickBooks.

But expecting small business owners to learn BQL queries? That’s a different ask. They have businesses to run.

My Vote: (B) Templates + Professional Service Layer

I think the answer is:

(B) Templates for common use cases — So bookkeepers like me can get started faster

PLUS: Professional service model — Bookkeepers/accountants use Beancount backend, clients get polished reports/dashboards

This is how the whole software industry works! Businesses don’t run MySQL directly; they use apps built on top of MySQL.

Same should be true for accounting: Beancount is the powerful backend; Fava + custom reports are the client-facing layer.

The Real Question: Do We Want Mass Adoption?

I actually think option (D) is fine—accept niche status. Here’s why:

Plain text accounting is for:

  • Technical users managing personal finances
  • Professional bookkeepers/accountants managing client finances
  • Developers who appreciate plain text data

Plain text accounting is NOT for:

  • Non-technical individuals who just want basic budgeting
  • Large enterprises that need multi-user accounting systems
  • People who prioritize convenience over control

And that’s a perfectly good market! We don’t need to compete with YNAB or QuickBooks for the mass market.

Where I Agree with @newbie_accountant

The learning curve is a FEATURE for professionals. When I hire a junior bookkeeper, I want them to UNDERSTAND double-entry bookkeeping, not just click buttons.

Beancount forces you to understand the fundamentals. That makes better bookkeepers.


TL;DR: For professional use, “build your own” is essential and empowering. For mass adoption, we need better templates + service layers. But mass adoption might not be the goal, and that’s okay.

The real question: Are we building a tool for technical users and professionals, or are we trying to replace YNAB for everyone?