Tuesday, September 15, 2009

Features I'm looking for in a budget management software

So I've been struggling to actually get a clear picture of my budget recently. It's not like I don't have a general picture, but the details and especially the predictions, will sometimes fail me. I've gone through a few experiences with different software, and I'd like to start by recounting them.

My first try was actually using Google Calendar, which isn't a budget software at all, but it at least let me enter all my regular bill reminders with the precision I wanted and needed (every X day, every second friday of the month or the first monday of every 4 months if I wanted it to!). It didn't import any transactions nor tell me what my balance was. Didn't have budget planning either. But it was ok for reminding me what my steady, revolving bills might be and when they came up.

About a year back I discovered CalendarBudget.com , which felt pretty awesome indeed because not only did it look like Google Calendar, it added almost all the features I wanted Calendar to have in the first place! For a while there I really wished Google would buy CalendarBudget and integrate it into their system... Tough luck. CalendarBudget is actually pretty cheap (a few dollars a month) and I still highly recommend it.

I was, however, wanting a solution that offered *more* than just a calendar view, and at the suggestion of a colleague, tried out Quicken 2009 (the offline version). It all went great at first, I entered my transactions, started bashing away entering all my bill reminders, income reminders, etc etc, trying to plan the wedding... Until I realized that Quicken sucks at realizing that this invoice I was expecting and that I mark as "payed" is precisely the same as the transaction downloaded from my bank with the same amount and the same date! I was extremely irked at its failure to recognized this, and the missing feature of actually telling the software that this was what I needed. A simple right-click would have done the trick... But nope, Quicken sucks. After reading a few reviews online about their business practices, I can honestly say I'm never going to use this software again.

I then tried a few solutions online, googling "alternative to quicken" and finding a few. Amongst the plethora of half-witted solutions that only offer bill reminders or entering every single one of your receipts manually, there were a few gems... though they still failed to meet my expectations.

  • Wesabe looked really awesome on the surface, importing my information speedily with the use of a great Firefox plugin that "records" what you do to download your statement, reproducing it on demand. However, you soon realize that it's just a glorified account overview that only excites you with awesome Web2.0 javascript and some pie charts with fancy colors.
  • moneyStrands didn't stand much of a chance, at the level of frustration I was at when I found it... And it failed miserably from whatever standards you see it. Strands offers to connect automatically to your bank account as long as you provide the card number, question/answer security and password... But if I am to believe the forums posts I've seen, I'm not the only one for whom it failed on both the accounts I tried. I may return to explore it and try the manual download option, but my philosophy is, if you can't make it right, don't bother!
  • Buxfer, though it does the importing easily and the categorizing is pretty good, lacks a lot of the features I want, including projections (it has bill reminders, but no more than Google) and accounts other than debit accounts.
I also tried a few other software, including GNUCash and jGnash... But they all seem so... convoluted, hard to grasp, so "if you don't know how to work this product, then tough luck". It may be me, but as a regular user and someone who knows what he wants, I don't want to have to read through the documentation until I've had my initial setup done and I'm ready for some more advanced stuff. A tutorial/setup is mandatory, in my opinion. Quick at least got that, if nothing else.

So, I've decided to make a little list of features that I feel a personal finance management/planning software or web service should have. When I say Personal, I mean for myself and my soon-to-be spouse, who - as most people do - have the following:
One bank account each, a credit card, a personal loan, and RRSPs. We'll soon have a mortgage, so I'm also taking this as granted (because people with houses have even more reasons to want to manage finances). So here are the features I'd like to see, working correctly and all together, in a financial management software. Show me one (that's affordable!), and you get a cookie:

Accounts:
- Support for Chequing/Savings account
- Support for Credit Card accounts
- Support for Line of Credits
- Support for Loans & Investment accounts (RRSP, Mortgage, Etc)
- Ability to set up complete information for all accounts, including interest rates, interest type (revolving, etc), credit limits (have X left on my Visa, Y left on my line of credit).
- "Individual" accounts and "Joint" accounts, separating my budget from my spouse's if I want to. Personal information (city, country, medical info such as having glasses or regular expenses) could be useful, especially in a "multi-user" environment.

Transactions:
- Import standard bank formats (Quicken, Money, CSV, etc) or, even better, just like Wesabe does: Have me log on once, record the motions, and then do it on request, automatically.
- Transaction categories and sub-categories, with rules to sort them automatically.
- Transaction planning, monthly/weekly/bi-weekly/yearly bills with truly complete methods for choosing when the transaction occurs (stuff like "it's going to pass on Friday if the date's a weekend" or "this transaction will be on the First and the Last Wednesday of each month". Yes, we have a transaction like that!)
- Variable amount bills with proper "guessing" of what the next amount should be (average/mean) after a few of them.
- Bayesian detection of "similar" entries (if I enter a planned transaction and download my statement from the bank that shows that transaction as passed, don't put it twice like Quicken does!). Using amount and +- days, with "unsure" one shown in an easy to manage list with drop-down ordered by possible percentage of transaction match.
- Creating automatic transaction planning from past transaction (Right-Click, "This is a recurring transaction")
- "Merging" or "Overwriting" transactions that may have passed that filter (or as an alternative) with drag&drop detection.
- "IOUs", a feature that I've seen in one of the online interfaces (one that was lacking features I think) is a nice addition. No interests, just reminders of what people owe you and what you owe them. Linked to transactions of course.

Budget Planning
- Fancy-Smanshy pie-charts and graphs to show which areas are spent in the most.
- "Wallets" or "Envelopes", one of the favored (and traditional) methods of budgeting.
- "Scenarios" - didn't see this anywhere but I'd definitely buy a product that did this: Create a "copy" of the whole database and let me play with it as I wish. Create a fictional mortgage with payments here and there, change my income, win the lottery, etc. Then, clear the whole thing and return to the current reality. This would help people with "what if" scenarios... I lose my job, or we buy a house, a new car, get a kid or a dog... Anything.
- Reports: All the information you need is in the database, so it's relatively trivial to show it in a report (spendings by time, categories, in/out graphs, etc).

Interface/Visual
- A complete, easy to use initial setup screen with steps for each of the necessary information to get you started: Accounts, Recurring Transactions, Credits, Loans, Personal Information.
- You can't get anywhere without using something like a jQuery UI framework that just works well. Base your interface on Google, Wesabe, Windows 7 (awesome!) if you have to, but make it look good.
- Spend that few extra hours/days/weeks tweaking performances so that it's not only fancy, it's also blazing fast.
- Drag & Drop interface, click&change, right-click menus, whatever it takes to make the job easier and the interface intuitive.
- Autocomplete - a must whenever it's fit to use.

Things that I don't need (and that I'm sure, most people won't need either):
- Support for multiple currency: If you're dealing with multiple currencies, you need more than a "personal" budget software. You're out of scope, buddy.
- Stock Prices, Exchange Rate, PortFolio: See above. Out of scope of a personal software for the masses.
- Cheque Writing or automatic bill payment: I don't think I'm really as lazy as to want my software to pay my bills for me. It's not a good way to teach people how to manage their money.
- Tax Filing/Tax Return: There are plenty of software for this, out of scope again.
- "Payees" are overrated. I'm not a business, I don't pay people, I pay bills. Don't give me payees crap.


So.... After all of this, who's up for the challenge? If you have more ideas and features you'd like to see in a personal finance management software, post in the comments!

Edit:
In the end, I went back to CalendarBudget.com because, even though it also lacks some of the features, it has the ones that just make me like it! I strongly suggest trying it out.

Thursday, September 10, 2009

CSV2MDB in VBScript

Thought I would share the following VBScript, which can be used to automate the transfer of a CSV to an MDB database automatically (columns need to be hardcoded however).

It might not be of any use to much people, but it's out there now :)

'Option Explicit
Dim strConnection, conn, strConnection2, conn2, objResultsCSV, objResultSQL, strSQL
'
' Open connection to the CSV
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\;Extended Properties=""text;HDR=YES;FMT=CSVDelimited"""
Set conn = CreateObject("ADODB.Connection")
conn.Open strConnection
'
' Do Query on the CSV
Set objResultsCSV = CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM test.csv"
objResultsCSV.open strSQL, conn, 3,3
'
' Open connection to the MDB
strConnection2 = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\data\Test.mdb;UID=admin;PWD=;"
Set conn2 = CreateObject("ADODB.Connection")
conn2.Open strConnection2
'
' Loop through each line of the CSV
Do Until objResultsCSV.EOF
' Insert SQL
strSQL = "INSERT INTO example (Column1, Column2, Column3, Column4) VALUES ('" & objResultsCSV(0) & "','" & objResultsCSV(1) & "','" & objResultsCSV(2) & "','" & objResultsCSV(3) & "');"
conn2.execute strSQL
objResultsCSV.MoveNext
Loop
'
'Close Connections
objResultsCSV.Close
Set objResultsCSV = Nothing
conn.Close
Set conn = Nothing
conn2.Close
Set conn2 = Nothing