I never expected that tracking my path to FIRE (Financial Independence, Retire Early) would accidentally teach me database skills and help me land a promotion at work. But here we are.
How It Started: Just Another FIRE Tracker
Two years ago, I discovered Beancount on r/personalfinance. I was a financial analyst at a tech startup, obsessively tracking every dollar toward early retirement. I’d been using spreadsheets, but version control geek that I am, the idea of plain text accounting with git history sounded perfect.
I dove in. Started simple: checking accounts, credit cards, basic expense tracking. Fava’s web interface was nice, but I wanted more. Custom reports. Investment lot tracking. Tax optimization analysis. That’s when I discovered BQL—Beancount Query Language.
The Lightbulb Moment
SELECT account, sum(position) WHERE currency = 'USD'
Wait a minute. That syntax looked familiar. SELECT? WHERE?
I’d seen SQL in passing at work but never really learned it. Our data team used BigQuery for business analytics, but I stayed in my Excel lane. But here in Beancount, I was writing queries that looked suspiciously like… database queries?
So I experimented:
SELECT date, narration, account, position
WHERE account ~ 'Assets:Investments:Vanguard'
AND year = 2025
I was filtering transactions, aggregating balances, grouping by time periods. This wasn’t just “querying my finances”—this was database thinking.
Down the Rabbit Hole
I got curious. Really curious. If BQL uses SELECT/FROM/WHERE like SQL, how hard could “real” SQL be?
I spent a weekend learning PostgreSQL basics on DataCamp. The syntax was 90% identical. The concepts—filtering rows, joining tables, aggregating data—were exactly what I’d been doing in Beancount for months.
Then I realized something powerful: Beancount had taught me to think in structured data without me realizing it.
- Accounts = Tables
- Transactions = Records
- Postings = Related data points
- BQL’s two-level filtering (FROM for transactions, WHERE for postings) = SQL JOINs
Every time I wrote a Beancount query to analyze my investment performance or track expense categories, I was practicing data modeling. Every time I structured my chart of accounts, I was designing a database schema.
The Career Impact
At work, I started volunteering for projects that touched our data warehouse. “Hey, I know a bit of SQL now.” (Understatement—I’d been practicing on my finances for months.)
The data team was impressed. “You actually understand JOINs? Most analysts struggle with that.” Well yeah, I’d been joining transaction tables to account metadata in BQL for half a year.
Six months later, a “Senior Financial Analyst - Business Intelligence” role opened up. Responsibilities: SQL, BigQuery, Tableau dashboards, cross-functional data analysis. I applied. I got it. 25% salary increase.
Now I write BigQuery SQL daily for the company, and BQL queries nightly for my FIRE tracking. The skills are identical. The thinking is identical.
What Beancount Taught Me That QuickBooks Never Could
Here’s the thing: most accountants and finance people use software that hides the data model. QuickBooks, Mint, YNAB—they’re all point-and-click interfaces. You filter expenses by clicking dropdown menus. You generate reports by selecting options from a form.
You never learn to think in queries. You never understand that financial data is just structured information that can be sliced, filtered, joined, and aggregated.
Beancount forces you to think differently:
- Want a custom report? Write a query.
- Want to analyze investment performance by tax lot? Write a query.
- Want to track expense trends across multiple dimensions? Write. A. Query.
That mindset—“I need data, so I’ll query for it”—is exactly what data analysts, data engineers, and data scientists do every day. It’s a $100K+ career skill. And Beancount teaches it to you while you track your grocery budget.
The Transferable Skills Are Real
Since transitioning to the BI role, here’s what I use from my Beancount experience constantly:
1. Filtering and Aggregation
Every “GROUP BY account, month” in BQL translated directly to “GROUP BY product_category, month” in BigQuery.
2. Time-Series Analysis
Beancount taught me to think about balances over time, running totals, period comparisons. That’s 80% of business analytics.
3. Data Quality Mindset
Balance assertions in Beancount = data validation checks in SQL. If your books don’t balance, something’s wrong. If your dashboard numbers don’t reconcile, something’s wrong. Same debugging mindset.
4. Structured Thinking
The discipline of double-entry accounting—every transaction has two sides, everything balances—trains you to think in consistent data structures. Critical for database work.
Not Saying BQL = Complete SQL Mastery
Let me be clear: Beancount Query Language is not a full SQL replacement. You won’t learn complex JOINs, window functions, CTEs, or database optimization from BQL alone.
But BQL teaches you the fundamentals:
- How to think in queries instead of spreadsheets
- How to filter and aggregate structured data
- How to model information in tables and relationships
- How to debug data problems systematically
Those fundamentals made learning “real” SQL dramatically easier. I’d estimate BQL gave me a 6-month head start compared to someone learning SQL from scratch.
For Anyone Considering a Data Career
If you’re using Beancount for personal finance and you’ve ever thought “maybe I should learn SQL/data analysis,” you’re already halfway there. You’re practicing every day without realizing it.
Take the next step:
- Compare your BQL queries to equivalent SQL syntax
- Try a free SQL course (DataCamp, Coursera, Khan Academy)
- Look at job postings for “financial analyst” or “data analyst”—notice how many require SQL
The demand for “data-savvy” professionals is exploding in 2026. Accountants who can query databases, analysts who can write SQL, finance people who understand data modeling—we’re in high demand.
And if you’re already writing Beancount queries? You’re further along than you think.
My Actual Numbers
- Beancount experience: 2 years
- Time spent learning BQL: ~20 hours total
- Additional SQL learning: ~30 hours (mostly PostgreSQL fundamentals)
- Salary increase from BI role: +$22K (25%)
- Lines of BQL I’ve written: 500+ (mostly investment analysis)
- Lines of SQL I’ve written at work: 2,000+ (business dashboards, ad-hoc analysis)
The “SQL gap” between accounting and data analytics is real. But plain text accounting bridges it better than any other tool I’ve found.
TL;DR: Beancount Query Language taught me database thinking while tracking my finances. That accidentally prepared me for a data analytics career. If you’re writing BQL queries, you’re learning SQL skills whether you realize it or not. Don’t underestimate how transferable that knowledge is.
Anyone else have a similar experience? Or am I overselling the BQL → SQL → career path connection?