Show HN: Lunch Money, a personal budgeting tool with multi-currency support
lunchmoney.cc
lunchmoney.cc
I am a one-person team and this project has allowed me to harness and grow from my few years of experience working as a software engineer. I was also able to flex my design muscles a little bit, while learning some marketing along the way.
Stack:
* Node.js w/ Typescript backend
* React + Semantic UI w/ Typescript frontend
* Bull for Redis queues
* Postgresql for database
* (soon) Flutter for mobile app
Lunch Money is a personal budgeting tool with native multi-currency support. This 100% grew out of a need to expand and improve the spreadsheet we had been using for about 1.5 years prior to starting development on this. My main goal was multi-currency support but also to rethink certain aspects of budgeting. Check out the website for more details & screenshots!
If this looks interesting, I encourage you to try it out, especially if the multi-currency aspect is useful to you. Thank you and open to any feedback.
Side story: I started this project while living abroad in Fukuoka, Japan for a few months. I did a whole write up on that journey here: https://lunchbag.ca/lunch-money
I'm a die-hard YNAB person and evangelist. The being said, I have bank accounts in two currencies and it's REALLY tough to balance that. Would you say there's a fit between the YNAB philosophy and the flow you created?
I like the simplicity of everydollar, but I want some of the features you’ve built (like average for a category - so obvious and simple, but SO useful!)
How does this tool work in contrast to an envelope system?
The envelope system is pretty strict and while there are some good points about it such as encouraging discipline and planning, Lunch Money way is more about course correction. Instead of focusing on setting the amount of money in your envelope for this month and cutting yourself off when you've depleted it, go through a mental exercise of predicting how much you'll be spending. Then, reassess how you did and adjust accordingly for the next budget period. The overarching goal is to get better at predicting your spending next month, rather than constraining yourself to adhere to your budget this month and I hope the tools we offer, such as the average, help to facilitate this.
Financial data is generally viewed as highly private. What measures have you taken to ensure that the data that I enter to the service won't get exposed?
> this project has allowed me to harness and grow from my few years of experience working as a software engineer.
However, I may be way in over my head now at this point to tackle this on my own. If there are any Flutter devs out there interested in helping out, feel free to shoot me an email at jen@lunchbag.dev
I liked your project, the interface is clean, responsive and fast. If I may, I would like to give you my list of the most useful features :
- Self-hosted: Although, I used online apps in the past, this is now an _absolute_ requirement. I'm never, ever, going back to linking my bank accounts to a SAS app. I would be, of-course, happy to pay a premium for this (and for the Kubernetes templates).
- Transaction imports: OFX, QIF, CSV, XLSX...
- Regex category matching: For automatically matching transactions to the correct category
- Subset selection on reports: Ignoring specific accounts, categories or tagged operations from specific reports reports
- Multi-currency: I tried apps where the only currency available was USD, they did not stick around
- Exports: transactions and reports
- Rewrites: Rewriting transaction labels automatically (following user-defined rules)
- Sanity checks: Travel expenses + Reimbursements must equal zero. If not, Amex messed up again and I should know about it
Hope this helps!
Going through statements monthly/weekly and assigning the correct categories retroactively is just too hard.
Data entry through the day is way too cumbersome to me.
Am I alone on this?
Now, I put together some JS to create custom import helpers that adapts to different bank formats. Unsurprisingly, banks doesn't seem to want to converge/adopt a standard on transaction exports still (like a simple standard on the CSV will do), despite all the hype about open banking and such. Step by step?
I have some libraries that I reuse to create these custom helpers documented here:
https://docs.prudent.me/docs/dev/creating_ext
This works with the wrapper that I created as well :)
As I go about normalizing that in my life, I started writing GUIs to make interaction easier and import helpers to make imports easy. Sometime ago, I packaged all of that into a desktop/laptop app: https://prudent.me
Long term I'm looking for something self-hosted too, but I think we're a very small subset of users.
> - Self-hosted: Although, I used online apps in the past, this is now an _absolute_ requirement.
Based on the rest of your post, your feature requirement list matching my own, as well as the privacy aspect, how do you reconcile the forced cloud-sync aspect of Banktivity? There doesn't appear to be an option to use anything except that which results in them getting an (encrypted) copy of your accounts.
Or am I failing to see that they actually support (at the very least) iCloud or custom storage providers (e.g. self-hosted NextCloud)?
I'm backing up the file using an encrypted git repository to a local NAS.
- YNAB 4: Wonderful tool ! Simple, efficient, and locally available ! I was not a big fan of their budgeting strategies/options (especially when you go over the allocated envelopes) and I wanted more reports.
- YNAB 5: The interface was nice, but it was not self-hosted. It has the same negative points as YNAB 4. So I decided I won't pay for it.
- GNUCash: I don't remember testing it for a long time. It was self-hosted, and the reason I'm not using it today is probably personal taste.
- Ledger: Amazing. The CLI interface was too arcane for me.
And now, the bad experiences:
- Mint: Kept trying to sell me stuff. Not self-hosted. My financial institution was not available for linking, and I think they were using my transaction information to train their ML models on category assignments. Their automatic categorization was - of course - shitty.
- Buxfer: It started well, but then quickly degraded. I linked only one of the financial institution I use. They were accessing my personal account automatically without my approval (I had connection alerts in my bank's interface, and they were popping everyday at midnight). They kept accessing my bank account, even when I disabled the sync and deleted the bank account from the interface. Their automatic category assignment was - again - shitty (spoiler alert: IT'S ALWAYS SHITTY), but they offered rule-based category assignment ! Their account reconciliation was not accounting-ly correct (they changed the balance without adding a rectification transaction, so sum(transactions) == account_balance, would be false >< ). And finally : "Can I exclude certain transactions/accounts/tags from my Reports and Budgets?" "Buxfer does not support excluding transactions or accounts from Reports/Budgets. Excluding data can sometimes cause confusion and not lead you to see a complete view of your finances. (https://www.buxfer.com/help/reports)". Well, not-excluding my travel expenses from reports give me a completely inaccurate view of my finances and leads to even more confusion. Bonus : they were unresponsive to support and feature requests and I was on the PRO plan before they introduced the PRIME one.
Generally, online services are very bad at automatic category assignment. You will absolutely be exposed if they don't maintain a high-level security practice. They can be acquired by bigger companies, they can be terminated because they lacked funds. They will do "UI improvements" when you don't want that and they will clusterfuck a perfectly working version once in a while. They can also keep your data hostage, remove the "export" button, "reorganize" their pricing every 2 years and more.
The next level things that powered me up are:
- relay + graphql : map queries/mutations and object types to typescript. I have a workflow at the moment where python + graphene typings "bubble up" to typescript types via schema.graphql
- React.FC + hooks : makes it that much easier to grok a component in a large codebase.
- prettier : automatic code formatting on save, configuration works project-wide so all team members commit organized code
- DefinitelyTyped being reliable when it comes to releasing packages has helped a lot
I don't even use the autocompletion / go to definition that editors also usually bundle, but it's there, especially with VSCode. When the pieces don't fit, tslint catches it initially, if not that tsc.
Also, despite only using TS less than a year, the typing errors have been getting more friendly in the past few TS releases.
I've been a paying YNAB customer for over a year, so I assume I'm your target market. I haven't felt a particular need for multi-currency support. What would you say the advantage is over YNAB aside from multi-currency support?
If it helps I can tell you what I really like about YNAB:
- The mobile app is very easy and intuitive for entering transactions as they occur. It prefills fields based on my location so that I often only have to enter the amount.
- Cloud sync and multi-device support means it is easy to share a budget with my wife.
- Because all accounts, loans and recurring transactions are in there the reporting feature gives me a complete overview of our financial situation, past, present and future.
- The YNAB community was very helpful when getting started, because in the beginning it can be tricky to understand how to fit edge cases into the transaction history (like loans and credit cards).
As an aside: I don't use any transaction import features. I tried it out and found it disconnected me from my spending. Within the YNAB community it is considered best practice to not import transactions automatically. For that reason you may want to choose to not offer those features, as there is a good case to be made people shouldn't use them and they are likely to drain a huge amount of your time.
We started off with not importing transactions, but ultimately integrating with Plaid was useful for us to get our first 50 or so users off the ground and running right away.
Thanks for the kind words and for taking the time to write feedback.
If you would like a budgeting solution that is thoughtfully designed and encourages building good habits rather than setting spending constraints, I would encourage you to give Lunch Money a try. I would also encourage you to give the other apps a whirl, since our methods are all different. I hope you find a budgeting solution that works for you!
Is there a way to delete my account, can't find it?
The one thing I really dislike is the way transactions are brought into the system. I get that it's preferable to outsource that to entities that specialize in it, like Yodlee/Plaid/whatever, but when I get to that IFRAME asking me to enter my banking credentials... sorry, I just can't bring myself to do it.
I understand banks are probably unbelievably slow to support standard authorization schemes like OAuth, but of all the credentials for me to get sloppy with, my bank credentials are pretty much at the top of "no way" list.
Any chance as an interim you could support manually importing CSV?
(And yes, beware of the non-paying "customers" that like to suggest the _one_feature_ they need...)
I haven't seen my bank's original app for years now.
The real business opportunity here is to get acquired by a bank that does not have one of these solutions.
Please don't take this personally, but reading through your blog post, you mentioned that you had limited DevOps experience that makes me a bit scared that regular security updates and security practices may not be something that you were thinking about when the app was being developed.
I'm going to signup and play with it regardless, but it would be really difficult to put my actual financial data in the app.
Question: Is security of user data something you have thought of? Do you plan to hire someone that is security minded if the app does well?
The DevOps stuff in my blog post was more referring to stuff like CI, deploy infrastructure, and other behind-the-scene workflows. I've previously worked for 3.5 years mostly as a back-end software engineer at Twitter and was the founding engineer of a YC Fellowship &500-backed pet health start-up handling thousands of pet medical records, so I've gained a lot of experience when it comes to keep things secure.
All that being said, security and user data is really important and not something I take lightly at all. I hear this feedback a lot and am continuously thinking of ways to put my user's minds at ease. If you have any ideas or want to talk about it more, I'm always open to chatting.
1) My driver's license costs $150 to renew once every 5 years - I don't want to split that into 60 monthly allocations of $2.50 and end up having over $100 sitting in my account for an expense that's still not due for over a year. I just want a tool that knows what expenses are coming up over the next 3/6/12 months and let me know if it thinks I'm going to overdraw my account. $150 is actually really easy to scrape together when you have 6 months notice that you're going to be short.
2) I spend $100 on public transport every 2nd Thursday because I get paid every 2nd Thursday. That means either $200/month or $300/month depending how many Thursdays fall inside the calendar month, and whether they're actually the Thursdays that I get paid on. Having a monthly budget that allocates $217/month on public transport (because that's the monthly average) makes me set aside $17 most months unnecessarily, or possibly leave me short $83 and unable to get to work if I spend the remainder.
We have gotten feature requests for custom budgeting periods to align with payment schedules which sounds like it might fit your second use case.
Thanks for sharing your interesting and unique use cases. I hope you find a budgeting solution that works for you, whether that's Lunch Money or a homegrown spreadsheet!
If you could also add a "Simulate spending X {currency} on YYYY-MM-DD" type functionality for forecasting, that would be huge. This was something I miss from one of the old Microsoft Money desktop apps, and being able to see how making a purchase at a point in time will affect you 1 week, 1 month, 1 quarter down the road etc. is a powerful deterrent to impulse buying.
edit: clarity. ish.
Upcoming expenses is a great idea, and was an original feature from my own budgeting spreadsheet but has not made it as a feature yet on Lunch Money. Your comment definitely helps boost up its priority :)
1. Mint and others always seem to automatically count transferring money from Chase to an external savings account as spending which drives me insane.
2. Not being able to split transactions (which you solved)
3. Reassign the date of a transaction, or from a technical perspective, create an "effective date" in addition to the true transaction date. I've been back and forth on whether this is actually a good idea or not. But I really want to count my July 5th electrical bill as a June expense, for example.
I have a few questions though.
1. Does this work for everyone around the world?
2. How many ways do you have for sorting through transactions and making sense out of these?
3. My bank statements are a huge mess and I'd love a way I could aggregate all of my spend across multiple banks and cards. Sometimes, I send money to a friend only to get it back after a few days (or months, even). Would be great if you could link 2 transactions together like this as well.
1. Right now I'm using Plaid to connect to bank accounts which currently only supports US and Canada-based banks (but even then, some banks are not supported fully). The next plan is to allow people to manually import their bank transactions via CSV, and after that, look into a European-based and/or Asia-based version of Plaid. That being said, anyone can use Lunch Money to add transactions manually in any of the 150+ currencies currently supported.
2. So we do a couple of things under the hood– auto-categorization and picking out your recurring (monthly) expenses. Our auto-categorization gets smarter as you make any fixes (via Category Rules). We also offer a lot of transaction management features such as splitting and grouping which you can use to make sense of your own spending habits.
3. Yes, our latest feature, grouped transactions, exactly fits your use case. You can use grouped transactions to link up credit card payments (i.e. -$200 from your chequing account, +200 to your credit card combines to $0 in your transactions list!) or track friends paying you back (i.e. you picked up the $200 tab for a dinner with 6 friends. You can group together that big transaction plus all your Venmo transactions to reflect how much your share actually was).
Thanks for the questions!
(Obligatory note: the reality is that not all banks are yet ready for PSD2 and opening the APIs for their customer's accounts. But from mid-September, banks that are still dragging their feet will be eligible for fines, which should act as a good motivation.)
Anyway, it looks really amazing what you've done, and I'm really looking forward to services like yours expanding to EU.
--Let me add new categories from the transaction screen. I don't think your default categories are comprehensive enough and I had to add a lot, and it is a pain going back and forth between the two screens.
--More default categories that make sense: rent, cell phone, internet, medical, software subscriptions.
--If I go back 3 months and categorize an old transaction, apply that category to all other matching transactions. I don't want to through every single old transaction and categorize. Alternatively you could use the YNAB method and not even pull in old transactions (or maybe just go back 1 week or something). It feels overwhelming to log in and see data that is wrong due to miscategorizations and then realize I need to back through hundreds of old transactions and fix the category.
Overall I think you have a great product! I am definitely interested in continuing to use it, I like the UI and it feels so much faster and more responsive than YNAB (their ui is extremely slow). With any of these tools there is always time/cost associated with a user's onboarding and making that as seamless as possible will get people hooked and make switching costs high.
Good luck!
I've given up on every single household budgeting / tracking solution due to the huge volume of Amazon orders our family places across regular Amazon, Amazon Fresh, Prime Now, etc.
As a result I wind up with a budget that looks like "50% Amazon" and then everything else.
What I'd really like to know is categorically where is that money to Amazon going as a category.
1) You should be defining a strict CSP and a few other headers given that this deals with financial information: https://securityheaders.com/?q=https%3A%2F%2Flunchmoney.cc&f...
2) When trying to give provider info, I hit an error both times (with different financial providers) on the Plain screens.
However, are you allowed to read in Credit Card "Recent Spends" (which I've always assumed is some Credit Card Dark Design stuff)?
Mint worked out well for awhile. I feel like it was a decent substitute for "writing every transaction in a notebook for a week" to help you find that gym membership you've been meaning to cancel or realize how your occasional lattes add up. It also helped with categories for previous months and "am I making more than I'm spending" which helped me get out of debt.
More recently I tried YNAB, which seems like it does those things well but also help with future month categories (basically a digital version of the envelope method) and help set aside money for specific goals. But after trying it a few times it never quite clicked and I never seemed to keep up with it.
These all seem to fill different needs but it's not obvious until you start putting data into them. I check out new apps all the time and they often fall into the same, few well developed category, but it takes up a lot of time to suss out (and it's a bit scary handing over credentials when you're evaluating)
also nice - the ability for a partner/spouse to collaborate on the same budget which is also a nice plus Lunch Money has if there is an "last edited" feature and collaboration as a 1st-class thing (YNAB is stubborn on this point)
To your point about collaboration, we track who did what, but we don't go as far as having a complete edit history. It seems like a good idea though, I'll add that to our backlog. Thanks for the feedback!
I understand your target audience is not YNAB per se, but b/c of that very fierce loyalty you could draw some currently paying customers like myself. :)
I ask this in a genuine way but I'll try to play around with Lunch Money.
From your landing page, these features all exist in YNAB: * being able to review transactions that need to be categorized, splitting transactions * adding projected monthly expenses that haven't been charged yet * warnings for an account not importing correctly * allowing you to choose between what you spent last month vs budgeted last month vs spent on average
What does seem unique is better visualization on anticipation of spending and spending habits, which is definitely nice!
Though I think what you mean is perhaps the "feel" of budgeting vs the exact features. At the end of the day, YNAB just forces you to categorize vs envelope method technically.
- A subcategory or tagging system. When viewing the budget, I could just filter those items. This would be nice for my side business stuff, so I could have categories like "biz->income" and "biz->hosting", and then just view the "biz" category to see multiple flows. Or more simply, I don't necessarily need subcategories if I could just view multiple budget categories in one view.
- When choosing a category when approving transactions, it would be nice to be able to type to search the category
- Also when approving transactions, when I click on the checkmark, I'd prefer if they either disappeared instantly or just didn't disappear at all. Right now I'm afraid to click multiple items quickly since I might mis-click when it disappears unexpectedly, clicking on the next line. I think it's important to remove all friction from the transaction approval section, since that's the most commonly used part.
- How do I categorize recurring expenses? It doesn't seem like I can. Why not?
- Some way of showing big, unique groups of expenses, such as a wedding, or vacation, or buying a computer. I wouldn't want to factor that into my monthly budget, but I'd like to see the total costs of this years "special expenses". Maybe I could tag transactions as "coast trip" or "gaming pc" or "wedding", and then view all special expenses as their own category?
If I could combine YNAB's budgeting method with your reporting & analysis we'd have a true winner.
In an envelope based system you can only budget dollars you have (that's where the name comes from, you'd literally stuff cash in envelopes). If you overspend from one envelope/category then you have to take from another envelope. It's perfectly fine to do this, but it just makes the sacrifice that much clearer. For example, let's say I splurge on restaurants this month - then I might have to steal from that vacation budget a bit in order to cover it.
The second aspect is building up money for future expenses. I can set up an envelope/category for a vacation in 12 months and throw 30 bucks a month at it. That money accrues each month and unless I steal from that envelope it's assigned to the vacation so I'll have the expense covered when it comes.
That's the gist of it. There is a ton more information online.
* Is each transaction stored in its currency, or is everything converted to a main currency when stored? The latter is lossy and problematic.
* Does the app expect each currency to have a fixed exchange rate? If it does, that's problematic.
* You are asked to select a primary currency when signing up. Can you change the primary currency later? Will any information be lost if you do?
* How do you handle transfers from one bank account in one currency to another bank account in another currency? Will it handle an exchange rate that is different from the one the app might be expecting?
* How does budgeting work in multiple currencies, how are fluctuating exchange rates used?
I'll definitely be trying this out regardless of whether I get an answer here, I am really excited about the potential. :)
1. Every transaction is stored in its original currency. The conversion to your primary currency happens on demand.
2. We fetch daily currency rates so it should more-or-less accurately reflect the market. We have gotten feature requests for exposing this and allowing manual override of currency rates. If this would be important to you, feel free to let us know and it'll get bumped up on the priority list!
3. You can feel free to change your primary currency at any time and as often as you want in the Settings tab. There is no risk as it will have no permanent effect on your transactions!
4. Bank transactions show up in the currency that the bank account is set to so if you transferred -US$100 to +CA$133 to a CAD bank account, it will show up as two transactions in their respective currencies. However, to your point, in the totals, the currency rate might fluctuate a bit and it might add -US$100 and +CA$133 up with a few cents discrepancy. This could be solvable if we allow manual override of currency rates.
5. When it comes to multi-currency monthly budgeting, we use the currency rate from the first of the month to normalize everything to your primary currency. You can set a budget in any currency. For example, you can budget 10000yen for restaurants, and in your budget summary, you will see US$93 expected spending.
Hope this makes sense and feel free to reach back out with any more questions.
Why should I use a service hosted by someone else for something this important? Not only will I (besides losing money) have to worry about not being able to access my data, but especially about somebody else accessing it.
* CLI tools with some wonky syntax
* You don't need X because there is a random github repo that solves your problem! (To be fair, this is within the hacker ethos/mindset)
* Assumption that folks can dip into savings or whatnot if they are over that month
* Assumption that folks _have a net worth_
* Assumption that it's easy to just "tighten up" if you're spending too much
This probably works great for a high earner with extra money laying around and a decent net worth. This would be terrible advice for someone who actually needs to follow a budget. A huge percentage of people are living month to month and don't have the option to loosen up or reactively tighten up after a month of too many expenses.
Some folks don't need a personal budget. That is the minority. Those folks can use wonky CLI utils to keep track of their life.
In that same vein, why even bother? Just add up your net worth and if it's lower than you want, just "tighten up"...
Terrible advice IMO.
> When you feel comfortable with your number you can loosen up a bit.
I don't feel inclined to try this method. You've basically described how every highschooler manages their wallet. The system falls apart (or turns into a budget) the moment you have a single problem to solve.
Example. I have $10,000 in my checking account and a $15,000 car loan, so my net worth is -$5,000. Either I don't buy groceries this month, or I admit that I need to know more than my net worth to make financial decisions.
- Does this have an option to manually add entries?
- Does this have an option to input one currency, but have it easily convert to another currency?
So far I have used Toshl app on and off to monitor my monthly spend, which has excellent manual entry with multi-currency, etc.
Some of my bills, such as my mortgage, show up twice a month. Do you plan to support recurring transactions that are something else than monthly or yearly?
I may have missed it in the pre-signup screens, but how much do you intend to charge?
To get users started with a budget, perhaps you could assume the average in each category once you have a couple months worth of spending.
Also, I didn't see your answer to the guy's question about the safeguards you take to uphold information security measures. Could you comment on this please?
One question: Does this support saving for future expenses? Say I'm setting aside a sum each month for vehicle maintenance, but of course only spend money on maintenance a few times a year. Can I track that somehow with Lunch Money?
Also wanted to leave my email address in case anyone wants to reach out: jen@lunchbag.dev
I like the graphs, although I am confused by the example where you are under budget, but the line is still red.
Wonderful UI, got setup with zero issues. Thanks for sharing!
There isn't any writeup on the security for how it works other than my privacy policy (https://lunchmoney.cc/privacy) which touches on those points at a high level. We're just getting started and are therefore mostly focused on product validation and market fit so we haven't done any heavy security detailing such as external auditing. All that being said, I get this feedback a lot. Security and user data is really important and not something we take lightly at all and is something we will be continuously thinking about throughout the course of our journey.
If you have any ideas or want to talk about it more, I'm always open to chatting. jen@lunchbag.dev
Edit: I signed up and no UK banks seem to be supported.