Hacker News new | comments | ask | show | jobs | submit login
Plainbudget: Minimalist Plain Text Budgeting (galvez.github.io)
128 points by jgalvez 8 months ago | hide | past | web | favorite | 78 comments

If you haven’t checked out YNAB.com, it’s my go-to for budgeting. I find it useful because it has auto-import like mint, but with flexible categories.

There’s no way I’m going to enter in every transaction (not to mention the dozen automatic subscriptions). To me, automatic import is a must. From there, it does a fantastic job of helping me plan for next month and track spending across time.

After 2 years, I have a clear sense of how much we spend on car repairs, vacation, Christmas, etc.

Anyway, I’m not affiliated with them, I just enjoy the tool.

I just realized something sad: the reason I never went through using any of ledger-cli, YNAB and Mint etc is that I never really made enough money that it got so complicated it wouldn't fit a single file (lol)

You really don't need a lot of money to use something like YNAB. I have been using YNAB for nearly 5 years now, and it has in fact made me feel a lot richer! It puts you in full control over the money you actually have, and gets you into the habit of saving for the expenses you will have before they are actually due. That way spending the money doesn't feel like a burden and has no noticeable impact on your ability to pay for other things. Highly recommend checking it out irrespective of how much money you are making!

You have to start somewhere, right? :D Also, these tools are not for managing your multi-millions. They are for making you aware about your spendings and earnings, so you can plan better. The numbers are not important. The percentages are, though. (Disclaimer, I am not using any of these tools in their full potential, but I'm trying. I have used ledger mostly, and now I am trying out ynab. I want me to get better with money management.)

Yeah, once you hit the multi-millions money management means a completely different thing!

HA! Well your budgeting tool is nevertheless quite minimal and beautiful. Thx for sharing. ;)

Create the habit of using powerful tools while it's easy! That way, you won't fail to do so later on when you have more money.

Living a life aiming for this simplicity seems like a worthwhile endeavor.

While YNAB is great, it's a shame they moved to a subscription based service.

I mostly agree, except that bank connection is a moving target and they pay a vendor to supply the connection logic.

Is it ridiculous that I have to pay money every month just to get my transactions in a useful format? Yes. But that isn't their fault, in my opinion.

They charge $7/mo and Netflix charges $11, while I personally get way more value from my $7 going to YNAB. :)

In Europe there will soon be a law called PSD2 which results in banks being obligated to provide an Api to access your bank account from external apps etc.

So no more paying for access to your own data...


Is it only Banks and not Payment processors? I mean knowing my banks money incoming and outgoing is kind of not much use. Since they don't ( or do they in EU ?) have any record of my Visa Credit / Debit Card spending data.

It is one reason I wish tools like Apple Pay should allow / had the option to retain those data for me personally only. And have the financials will work out all on my Phone and no where else. How much did I brought these and that, per month.

Very interesting! The PSD2 directive has come into force on 13 January 2018, and Italy should have already passed a law last year, but I still know nothing about API possibilities.

Yea, in the Netherlands it was delayed to spring 2018 (which would be now.) But it's not active here yet either.

I read somewhere that they suspect banks are deliberately delaying this because payment data is worth a LOT of money. And banks will loose the "monopoly" on this data. There have already been raids here to investigate whether they are deliberately delaying.

Also, for example, PSD2 means external apps can make payments (if you permit), so basically your bank software can become 100% superfluous. So banks are afraid customers might "loose touch" with their brand.

+1 Bank connections are absolutely a moving target. They are also human beings who have ongoing needs to survive and feed their own families, while dealing with customers who expect ongoing additional bug fixes and features to keep appearing in the product.

Of course they still charge the subscription in the uk where they don’t have automatic import with any bank I’ve tried, which is pretty crap. I really need to switch back to ynab4 or something else I guess.

I can't even use the bank connections, so they aren't important to me.

I'm sticking with the classic version.

The x costs $y, and a costs $b, argument doesn't scale at all.

Who are they paying, out of curiosity?

Plaid[1] is only company I know of offering this sort of API. Maybe there are others, I wasn't able to find any from a quick google search. You can actually get a dev account (free with up to 100 bank accounts) and pull your own transaction data with it. I've been meaning to write a little tool to import from them into GnuCash.

[1] https://plaid.com/

I happen to have been looking around at this earlier today.

I found an open source project named Firefly III[1], that uses an API called Spectre[2]. Same deal, free for a certain number of bank accounts, but looks like you need to contact them to set up your API access. Incidentally, I recently saw an iOS app that had been using the Spectre API as well.

[1] https://firefly-iii.org/ [2] https://www.saltedge.com/products/spectre

I believe Yodlee also offers this type of API.


I understand why they did it, but I am not at all a fan of it either. Still using YNAB4 (classic), and will continue using it until it stops working.

Personally I don't transaction import capabilities (nor could I have used it to be honest as they don't have support for German banks). Tracking my expenses as I make them is half the benefit of YNAB for me. Makes me acutely aware of how much I am spending and how much money I have left.

I can't use the import capabilities, as they don't support the banks I use (I'm not American). I'm using YNAB4 too, and will never go to the subscription.

Same with TextExpander and other apps, I'll give up on them once they stop working—or even before that happens.

I've seen alternative that tries to stay free (https://www.everypocket.com/), but as I have no personal experience with YNAB, I can't tell how different it is or how many functions are missing. I still use Excel sheet

I really like the budgeting approach in YNAB, but the software could do with some more reporting capabilities, as well as being able to track investments and so on.

I've never found the 'perfect' piece of personal finance software that works for me. Some people say MS Money Sunset is the one true way but it sounds like a pain to get working on OSX.

Could never get on with the double entry approach in ledger or GNU cash, the workflow/approach just doesn't feel intuitive to me and I struggle with it.

Completely agree. Reporting in YNAB is a weakness, and investment tracking is downright silly.

I have to manually go in and update my balance for investments once/month or so. They're set up to "track", but functionally do not.

Really great project! Good work. Love seeing Nuxt in the wild too.

Reminds me of Numi[0], a really beautiful text calculator I've been using on MacOS for a few years now.

[0] http://numi.io/

Woah, loved that app :) Lots of cool stuff that can be incorporated into Plainbudget's "sheet syntax" over time. Thanks for sharing.

I have a hard time believing that any technological solution can really help with budgeting. At the end of the day, it's about choosing how you want to spend your money.

Either you know where your money is going or you don't. If you don't, then maybe a few months of tracking expenses will tell you, but once you do, it then becomes about the internal struggle of telling yourself not to spend money you really shouldn't be spending, and this battle can't be fought with an app.

Maybe if you made a ton of money and it didn't make personal sense to track it all. I can see maybe a personal accounting app that involved actual people logging into your bank accounts and actually looking at what you're spending maybe being a thing, but that's called hiring an accountant and has been a thing for centuries.

Difficult to see this problem yielding to any kind of tech solution. I say this as somebody who maintained his own expense tracking app for months before dumping it. Nowadays I just look at my bank statements if I'm confused. Doesn't take long to find out what I need to know.

I'd be curious if insight helps in self control, but I don't think manual entry is the right way to go either. However, I do think that in an age of data vacuuming people do need some kind of automated solution that isn't present on the market.

For me, none of these budgeting tools attempt to answer the one question I think is the most common amongst people: "Do I have enough budget remaining in this month to afford this purchase?"

That's harder than it seems. For example, if you're debating a purchase on the 10th of the month, there are a bunch of bills and other purchases you're going to make the rest of the month (groceries, eating out, etc.) so you don't really know how much is remaining that you have to spend.

I use a Google Sheet that has taken me years to iterate, which knows the current date, tells me what expenses I'm going to incur over the rest of the month, along with a column of estimated numbers I guess at (cost of groceries, eating out, etc. for the rest of the month) and then tells me what my true remaining balance is.

The best thing I ever did was open a second checking account and have my income split. All the money for my bills goes into one account and the money I spend on everything else goes in another account. I can now look at my "spending" account and easily guage if I can buy that shiny object. My bills get paid on time without ever thinking about them.

I do exactly the same thing.

Of course you should also have a third account for savings. :)

The other option is doing the same with credit cards, though you'd have to work backwards with credit cards. Basically, have a groceries credit card, a dining out credit card, etc. If you look at the balance you can see you have $200 in dining purchases this month and you budget is $250, so you have another night out budgeted for the month.

I've had a Simple account for a few years, I use it for my non-bill, smaller expenses (dinners, lunches, groceries; I don't use it for things like new tires on my car). A nice thing with it is "goals". I set up a goal for June Dinners. I set aside $200 for it. But I have it fill out the goal over the course of the month. So on the 1st I have $7 (keep the math simple, I'm rounding) on Day 1. On Day 2 I have $14, etc. Now it's Saturday, 2 June, I have $14 I can spend on dinner out with friends. That means water, inexpensive entree, and no alcohol or dessert. If I saved it up for another week I'd have about $63 available. I like this method of "accumulating" money across the month (or months, for some expenses).

Prior to that there was an app called "Level", that did the same sort of thing across all your accounts. However it consistently failed to connect to my primary bank so it wasn't that useful.

That's actually my most common use. If my organization is a mess in a given week, I just open a new sheet and go:

    + 100 Wallet
    + 800 Account
    + 50 Piggybank
    - 100 Some urgent expense
    - 150 Another urgent expense
And then I figure it out. It's the fastest way for me to get these calculations done.

>That's actually my most common use. [...], I just open a new sheet

I think this answer explaining your most common usage actually explains better what you've built and its (unstated) philosophy. What you've created is a "scratchpad for arithmetic" that parses the numbers in plain text.[1] (Or stated another way, a "freeform spreadsheet" without the row col gridlines.) You then choose to call that functionality "budgeting".

My lightbulb moment: This is why non-existent datetime data isn't "missing" in your tool because "math scratchpads" don't need dates. I also see why you see your tool as "simpler" than the other text-based accounting tool "ledger-cli". ledger-cli is definitely not a math scratchpad; it's based on transactions of debits/credits which is overkill for a scratchpad.

I understand it better now. If you want to call your text parser math scratchpad -- a "budgeting" tool, I won't quibble with that. However, a lot of other people think of "budgeting" as money planning with a time horizon beyond the boundaries of a scratchpad. My earlier comments were based on that wider expectation of "budgeting". I'm not saying a budget tool has to be as feature-heavy as Quicken or Mint but many people would need something with slightly more functionality than a math scratchpad.

[1] Your parsexxx() functions are not specific to the domain of money budgeting but for any numbers with text labels to be added/subtracted/multiplied: https://github.com/galvez/plainbudget/blob/master/src/pages/...

Thing is, the way I put this parser together, it should be quite easy to add group variables (linking to results from another group by preceding with $ or something) and some forecasting functionality using standard date formats (I myself use "= XXX Month YEAR").

This was an amazing thread that gave me lots of ideas. I plan on keeping this codebase moving forward with them.

Buxfer (https://www.buxfer.com) lets you do this to a certain extent. Transactions are auto-synced, then you can add/identify your recurring bills and your budget will tell you what's left after taking into account any bills or future-dated transactions you may have entered.

Disclosure: I am the founder.

When I click on your link it just asks me to log in? Is there some marketing material or a video to watch?

The desktop version has more marketing material. The mobile interface is more of a companion to the desktop. I know that's laughable in today's mobile-first world, but (a) our target audience is "power users" who are desktop heavy, and (b) we generally suck at marketing.

We also have a live demo at https://www.buxfer.com/demo (or click "Live demo" on the desktop/mobile website)

Please feel free to contact me at shashank@buxfer.com and I will be happy to assist you with any specific questions, in case the marketing material is not sufficient.

I currently use my spreadsheet and then just need an app to categorize the transactions and sum them up for me. I used to use Penny, until they got bought and are shutting down. Now I use NerdWallet's new spending tracking feature.

Ledger has support for dealing with expected expenses:


My approach for this using double entry accounting is to create "accounts" for future purchases, and transfer money from my free assets to those accounts at the start of each month.

But yeah, getting to an optimal daily budget is tricky. You can use a multiplier for things you know you'll spend with every day:

    = Budget
    - 10 Coffee shop x 30

If you have to ask that question then you are living on the razor's edge, and therefore the answer is "no".

Depends on how you budget. If the amount you are calculating on the 10th is the amount you have left after fully funding your retirement accounts and setting aside some long term savings, you aren't on the razors edge, you are just checking to see if the purchase fits into your short term discretionary budget.

What complete and utter nonsense.

Most people have money allocated for specific categories when they budget, that doesn't mean they are living on the razors edge if they simply wanna know how much more they can spend while still adhering to their predefined budget!

A lot of people (including me) have savings as one or more line items on their budget.

My budget is super duper simple:

1) Put the bills money direct deposited into in one account - that is money for mortgage, streaming services, taxes, insurance, water, and electricity.

2) Put a predefined savings amount direct deposited into savings and investment accounts. This includes 401k deductions.

3) Put the remaining money into a third account and spend it all however I want. I'm on budget as long as I don't spend more than what's in this account.

This is nice, but for budgets to be effective, they need to be across multiple time periods.

Budgeting is like an optimization/monitoring problem with 2 objectives:

1. monthly cash flow > 0 (don't ever let your cash situation go negative e.g. credit-card debt)

2. maximize(Year End final balance)

I have a Google Sheets doc that I've used for years where I have inflows and outflows by month, and a year-end balance that is automatically calculated. This lets me see what my projected cash status will be at the end of the year.

At every month, the cash flow (in - out) is calculated -- this prevents me from going underwater at any given period.

Having a dynamically updating spreadsheet helps you to monitor those two objective functions and make course-corrections.

It's simple, it's cloud-based and it's available on all devices.

To do anything more than simple additions and substractions, I found I needed the following information:

* date,

* amount (+/-),

* beneficiary,

* account (N° or establishment),

* a short memo (can help with cross-category expenses, such as moving: requires gas, train tickets, movers, new furniture, selling old furniture),

* and a (sub)category (gas/car, train/trips, "Livret A"/saving, etc.).

Yeah, that's my idea with this issue:


I want to be able to have multiple "sheets" horizontally, one for each month, and then make it possible to calculate a final balance (and perhaps even a graph in the background).

Nevertheless, plainbudget as a CLI tool has worked just as well for me for many years. It does take a bit of manual text wrangling in its current form, but I hope it'll grow now that it's open sourced :)

>, plainbudget as a CLI tool has worked just as well for me for many years. It does take a bit of manual text wrangling in its current form

I looked over your site's examples and the conceptual primitives you have designed ("value groups", "cashflows", "expenses") do not seem to be powerful enough to manage "budgeting". Yes, you're deliberately trying to make it "simple" but text entries without date timestamps metadata for each transaction and without accounts/categories/buckets/tags will impede disciplined budgeting. Your (lack of) metadata primitives is too simple.

Based on your example, each "value group" doesn't seem much more than an isolated group of arithmetic operations which is similar to punching in some calculations on a desktop calculator[1]. E.g. one enters a few calculations which shows up on a paper tape, presses "C" to clear and punches another group of calculations, and presses "C" to clear, etc. Your text system has obvious advantage of "text labels" over the desktop calculator but it doesn't have enough metadata primitives (e.g. timestamps & tags) to produce budget forecasts, goal planning, savings schedules (e.g. college fund, vacation fund, retirement, contingency reserves for house repairs and car repairs, etc).


> Your text system has obvious advantage of "text labels" over the desktop calculator but it doesn't have enough metadata primitives (e.g. timestamps & tags) to produce budget forecasts, goal planning, savings schedule (e.g. college fund, vacation fund, retirement, contingency reserves for house repairs and car repairs, etc).

Yes, it has none of these features. Intentionally. Perhaps due to sheer stubbornness, I have used a collection of manually edited text files for most of these. It just came to a point where having a script to run calculations automatically became essential.

And lately, I've found myself using the script for quick calculations. I wrote the web version as a way to avoid having to create a new text file just for that. But there's definitely a lot of room for improvement.

I actually want to explore creating a plugin API.

>Yes, it has none of these features. Intentionally.

Yes, I can see you designed the omission deliberately but what I don't understand is how to do effective budgeting without a timeline calculation. You need date&time metadata to facilitate planning and planning is budgeting. Budgets based only on arithmetic against snapshots of balances without incorporating a time horizon doesn't seem like "budgeting".

>, I have used a collection of manually edited text files

It looks like making text entries "simple" means shifting the "complexity" to multiple sheets (or multiple text files). The hidden implicit metadata is the filename conventions and organization of text files.

>But there's definitely a lot of room for improvement. I actually want to explore creating a plugin API.

To clarify, I'm not saying your project is missing Javascript code to enable functionality of budget planning. I'm saying the data layer below that -- the text representation -- is missing basic metadata -- which handcuffs what future Javascript can do to generate basic budget reports and budget projections. A plugin API system usually does not create new incompatible data formats because of incomplete metadata in the base file.

> To clarify, I'm not saying your project is missing Javascript code to enable functionality of budget planning. I'm saying the data layer below that -- the text representation -- is missing basic metadata -- which handcuffs what future Javascript can do to generate basic budget reports and budget projections. A plugin API system usually does not create new incompatible data formats because of incomplete metadata in the base file.

Yeah, I myself use a few conventions for dates. I'll probably document and automate those soon.

Could you possibly share it (with demo numbers)? Interested in setting it up for myself.

Sure. Here's a screenshot of a sample I mocked up (with fake numbers and fake categories) https://imgur.com/a/tJUcJE3

I keep my eyes primarily on the monthly Running Balance line, and specifically, the Year End Target (the rightmost item on that line). Those are the KPIs (key performance indicators) that I monitor.

The calculations are fairly simple. The running balance Total Income - Total Expenses + PrevRunningBal. (PrevRunningBal is 0 and excluded from the formula in the first month).

Once-off Expenses is a category that's expanded out in the bottom so I have a better sense of where I spend chunks of unbudgeted money. It's summed up in the Expense item "Once off Expenses".

I also have a monthly buffer as a safety factor, in case I overspend.

As you can see I don't track expenses at the receipt level (too tedious), just on the gross level (and only if it's above a certain amount -- I don't sweat a $2 pack of gum).

For me this is a good balance between a too-loosy-goosey budget that is useless and a too-detailed-budget that is tedious to keep up.

This is enough to keep me on track for the entire year, and I usually end up with quite a bit of spare change at year end.

I like the idea of a running balance. That's what I want to accomplish by enabling multible tabs/sheets. Lots of good ideas, thanks.

One question - what do you do with the End-of-Month Reconciliation? Is that something you fill in every month?

Yes. If my running balance doesn’t match actual cash in my bank account, I just enter a correction and an in-line comment describing the cause of the discrepancy. However often I find I’m usually in the right ball park (my recurring expense patterns are very regular) so I rarely use that field.

Also I’m rarely off budget by a lot, partly because of the visibility this tool provides. My feedback loops are tighter due to monitoring.

You can also do what-if scenarios pretty easily, e.g. can I afford a vacation in Spain in a particular month without dipping under, how much of a raise do I need to ask for to hit a target, etc. You can play around with timing and amount.

A spreadsheet provides you with all the metaphors you need to do planning and budgeting efficiently. It’s a solved problem. It’s really hard to beat.

Oh this is really nice! Thanks - gives me something to construct tonight :)

Yes I second wanting to see what you've set up. I've used a Google Sheet for the past few years to track my monthly budget but I overwrite most values each start of month so I don't have any historical tracking, which would be really useful.

are you familiar with this project?


Also a fan of ledger. See http://plaintextaccounting.org for some more details on its workflow.

I'm a huge fan of double entry accounting, regardless of vessel (I do it in Google Sheets from time to time), even for the simplest things. Very flexible and powerful, yet safe.

Yup, my intent was to get to a simpler approach.

I really like this approach. Currently I'm using Fava, which has all the power of Beancount and a nice web UI https://beancount.github.io/fava/

Also, Fava adds budgeting to Beancount. Beancount itself doesn't really have the concept, but Fava lets you add budget lines and compare your spending against your budget.

This is what I use to budget. I just create a budget transaction at the start of the month with my plan for the month.

I then run a report showing the difference between each budget account and each corresponding expense account on a monthly basis.

Just learned (and still learning) ledger two days ago. I found it not intuitive but can see the value.

Any good tutorial/guide?


And the links from there are a pretty good start. Start with just basic asset tracking (checking, savings) and liability tracking (debt, CC) and get into the routine of it. Then you can add in your investments and other assets (car, home, stocks, foreign currency holdings, etc.). If you don't care about a slightly inaccurate history, just add the stocks later on at their present value, or go back and find your initial purchase dates and cost basis and let ledger calculate your present gain/loss.

Also in the same vein of plain text (command-line only): GNU `pem` (Personal Expense Manager):


It's a single Perl script. Used this for my monthly expenses before I bought a "smart phone" a few years ago. Since then I use a more crude method -- the 'Keep' utility on Android as an "expense manager". A note with tick boxes, where each tick box denotes an expense entry, later do the math, I know it's super inefficient, but I don't want to install yet another application).

You don't need a budget, you need to feel in control of your finances and knowing your net worth is the way to do it. Knowing that I spent $312.23 on groceries is not.

If/when your net worth is too risky for you get more tight and try to improve it every month. If/when you feel confortable with your number you can loosen up. I started to track it in a spreadsheet every month. I loosen up to every quarter. This is my new religion.

When I change one of the values in the Expense A group, the top expanse A value doesn't change in the top group, which is sort of dissappointing. Is this by design?

    + 1000 Salary
    -  700 Expense A
    -  200 Expense B
    -  100 Expense C
    =    0 

    =  800 Expense A
    -  300 Car payment
    -  150 Plane ticket x 2
    -  200 Utilities bill

That's a planned feature:


I will work on it this week.

For now, only the sums of each group are dynamic.

Feels like a mini calca. Nice, thanks!


Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact