So Mint has won the TechCrunch40 award. It’s good to see the world of personal finance software being shaken up again by companies like Mint and Wesabe – it could certainly do with it.
I’ve ranted before (many times, in fact) about how badly business accounting software sucks. I doubt it will surprise anyone if I say that I think that personal finance software is universally terrible too.
Whilst companies like Mint and Wesabe show a lot of promise, and are challenging some of the core assumptions of entrenched software like Microsoft Money and Quicken, I’m not going to hold my breath for them to become particularly useful to me any time soon.
I’m far from the ‘average customer’ for this sort of software, and some of the things I see as absolute requirements are going to be way down the priority list for many other people, but I’ve far too many other things to be expending my efforts on right now to build this myself, so I’m going to throw out my wishlist in the hope that someone, somewhere, might listen.
Firstly, all financial software I’ve seen gets one core fundamental thing completely back to front. They’re all account based. Before I can tell it that I spent some money I have to tell it what bank account or credit card or whatever I used. This is incredibly silly. The primary thing I’m interested in recording and tracking is my overall spending and financial status, not my individual account details – I can already get that information online for each of my accounts. Aggregating the data into one place is mildly useful, but isn’t even particularly important to me, never mind the key focus. I spend money. That that money happens to come from bank account A or B, or credit card X, Y, or Z is secondary at best. Sometimes it comes from several of them, like when I had to buy a replacement laptop recently and the price was higher than my daily limit on one of my bank cards so I had to split it over two. Most software makes me artificially split that into two transactions. It’s not. Deal with it.
This is partially related to the fact that I buy lots of things with cash. Most software lets you run a ‘cash’ account, but they don’t really take it seriously. For me it’s the default position. If I bought something, assume I paid cash. Let me say that actually I put it on a credit or debit card as an optional extra field. The new wave of tools are even worse at this than old ones, as they assume that most of my data entry can be eliminated by importing bank and credit card statements. Whilst that feature is quite nice, it’s only going to get a tiny percentage of the transactions I want to record. And even the ones it does get won’t be as detailed as I want. Because the other overarching difference between me and most users is the level to which I’m anal about data entry. My financial software needs to let me revel in that. I don’t just want to record that I spent €22.19 on groceries at the supermarket. I want line entries for each item. I want to know how much I spent on milk last year.
Trying to eliminate the need for data entry by fetching all my records directly from my bank isn’t going to work for me. I’d rather you put much more effort into making my data entry really fast. You already know from previous transactions that when I say I was shopping at Rimi and bought milk that it cost 9.50 EEK. Auto-completing ‘milk’ as I type it is useful, but you should also be guessing the amount I spent too. If you get it wrong it won’t slow me down from having to type it anyway, but when you get it right it speeds me up. It will also have the useful side-effect of letting me notice much quicker when they put their prices up!
Next: multiple currencies. Most financial software is written by people in the USA, and it shows. At worst it assumes everything is in US$. At best dealing with multiple currencies is usually an add-on, and quite a clumsy one at that. So far this year I’ve bought things in about ten different currencies. My primary bank account is multi-currency. I can have cash in it in about 25 different currencies simultaneously and transfer between them at will. I’ve yet to find any personal finance software that copes with this.
And, again, I shouldn’t have to select a currency before entering something, or, worse, set up a different account for each currency I use: ‘cash (GBP)’, ‘cash (Euro)’, etc. Let me set a default currency that, when I don’t give any more information, will be assumed, and then let me just type €20 or 20 EUR to override it. And by ‘or’ I mean my choice, not yours. Needless to say all the reporting should be able to cope with this. Please don’t tell me that last month I spent 38EEK + €4.20 + £1.19 on milk. Instead give me a proper total in any (i.e. all) of the currencies that I use.
And of course there are language issues too. When I’m entering my grocery shopping in whichever strange country I’m currently spending time, sometimes I can’t remember what one of the things I bought was. That’s OK. Let me enter “päeval seemned” now, and later, let me change it. But it’s important that it remembers, so that the next time I forget it automatically changes it again for me.
Or, alternatively, just let me emulate this myself through a hierarchy of categories. Then I can just put ‘Млеко’ in category ‘milk’ and have everything work itself out. But please don’t restrict me to some arbitrary number of categories for no reason. Or, worse, make me type the entire tree every time. Just let me type ‘Млеко’ and have it autofill the whole way up through milk -> drinks -> groceries, or whatever I’ve set up. In fact, if you implement this right I’ll be able to get even more anal and record the brand of milk too and have it cascade up. And, of course, I should be able to analyse the spending at any level of this tree, with drill down and roll up, over any time period of my choosing. That should go without saying, but you’d be surprised how bad most financial software is at letting you do things that should be obvious.
Being able to add comments to any transaction is fairly standard. Less common is per-line-item comments. What I really want is even fancier still: I want to be able to specify data fields that apply on a per item basis depending on what that item is. So when I buy Fanta at the supermarket I want to be able to say whether it was 1 litre, or 1.5, or 2 or whatever — in a way that lets me later query just how much of the stuff I drink a month. Or the average price I paid per litre. (Did I mention before that I want my financial software to let me be really anal? I mean this much more than you probably imagine!) When I buy books I want fields to magically appear for the author and title, for each book.
Similarly, when I buy dinner at a restaurant, it should prompt me to fill in the tip given. And let me get reports later on which restaurants I tip highest at. And of course it should cope with the scenario where I pay for the bill on my credit card and my dinner companion(s) gives me cash. And with me then marking my share of that bill as been a work related expense, and let me balance that off later against a particular repayment. With reports in the meantime of all my unclaimed and unpaid expenses, of course.
And, whilst we’re on balancing things off, don’t assume that all transactions happen instantaneously. Most systems aren’t as great as the Estonian ones. When I pay off a UK credit card from a UK bank account the money leaves my account on one date, and usually doesn’t reach my credit card until 3 or 4 days later. Yes, I want that to just be entered as one transaction, but I’d like it to be able to have different dates at each end, please. And the same for fees. Transferring money between different bank accounts in different countries often incurs fees at each end. I want to enter all that as one transaction, and just have the right thing happen. But that’s close to impossible in the account-based systems I’ve already ranted here about.
Lastly, my perennial bugbear of corporate accounting applies here too. I want to be able to apply a useful lifespan to certain things I buy. Unlike corporate software, in personal finance this shouldn’t be a default position. I don’t want to depreciate my carton of milk over three days, or assign a daily value to it. I’m not quite that anal yet. But I do want to say that the DVD player I bought lasted for 18 months. Or that my new phone should last me at least 12 months before I upgrade. (And of course correct this later when I don’t actually replace it for 15 months.) Then I can have the normal reports on both a purely cash in/out basis, and also something closer to a company’s P&L that pretends I paid for the DVD player at £5 a month rather than all up front. Done properly that gives a much better picture of my real spending, rather than having everything appear to fluctuate wildly every month based on a variety of non-recurring purchases.
Very little of this should be difficult. There aren’t really any complex algorithms here, and even the tricky UI issues (changing input fields based on other ones) are commonplace in major Ajax toolkits these days. It’s all just a Small Matter of Programming. Any takers?
Update 25/9: Yesterday I bought a bus ticket in София for €10 + 5lv (to clear out my Bulgarian currency before leaving). I know of no personal finance software that will allow me to enter that transaction.
Update 2009: More on this.