Ponzi: A Finance App for Your House Apr 23, 2008
There's a few web applications I work on in my spare time. If you read this blog regularly, you've probably heard about some of them: Journey (an online questionnaire app), or ProCon (a convention registration system), for example. There's one I use on a very regular basis that I've never blogged about, though: Ponzi.
The credit for coming up with the idea for this app actually belongs to my former roommate, Ian Adams. We used to use a whiteboard on the fridge for keeping track of intra-house debt, which we called "the debt board." It's the system almost all my friends have been using for some time - basically, it looks something like this:
Nat Ian Vik Nat X 130 Ian X Vik 21 X
So in this debt board, Vik owes me $21, and I owe Ian $130. It's simple, it's effective, and it's an easy system to learn. However, keeping the debt board on the fridge has a few problems:
- There's no audit trail - I might know that I owe Ian $130, but I don't know why, and there's no good way for me to find out. That also means that unless I keep a record somewhere else, I might forget what I already recorded and what I haven't.
- If you're dividing up a bill, you have to do some arithmetic in your head before writing it down. Not incredibly complicated arithmetic, but it can still be a bit of a pain. It's also an order of magnitude more complex when dividing up a grocery bill, where some people might have personal items they don't want to charge the house for.
- It's easy to accidentally brush up against the debt board and erase it while walking by, and we were also constantly losing the whiteboard marker.
So anyway, Ian and I said, we're both technologists. Clearly we can build a better debt board. We got as far as a database design, and then got stuck for awhile on the user interface, and then Vik showed up and informed both of us that we were being stupid geeks and the whiteboard worked fine, which was basically true.
So the project stayed dormant for quite some time, and then eventually Vik and I moved to Somerville with a new bunch of people, and Ian went his separate way. The new apartment had five housemates, not three, and tracking debt became much more complex. We quickly decided we wanted an online system for our finances, and that meant I should finish Ponzi.
And so, we've been using this thing for the past almost-a-year. Here's how it looks:
As you can see, it mimics the "debt board" look, but it gives you a few other nice goodies: you can see your total balance (the sum of all your debts and credits) on the left hand side of the page. Also, you can see your separate balances with each of your housemates under the debt board, and if you settle debts, there's an easy button to click to zero out your balance with them. In addition, Ponzi can track chore assignments on a monthly-rotating basis.
The best part, in my opinion, is the audit trail. If you click "Why?" next to the balance you have with your housemate, Ponzi will bring up this screen:
Basically, it's an accounting-style ledger. You can see what transactions were entered when, and a running balance for the two of you for each one.
The most surprising thing about Ponzi is that thus far, it's actually worked for us. It's easy to enter debts, and the computer handles the math for you. Since everything is actually written down, there's never any question about whether the amount shown is correct - you can actually go back and look for yourself to see why your balance is what it is. This eliminates a lot of the passive-aggression that some houses have surrounding money.
Recently, I added a new feature to Ponzi: multi-house support. That's because a friend of mine asked if he could have a copy of Ponzi for his house. Rather than doing it that way, and having to maintain multiple copies of the app, I just added a feature to support multiple houses. Ponzi now knows who lives in what house, and automatically limits your view to only include your housemates.
Is it perfect? No, of course not. It doesn't have some of the lofty features I'd originally intended:
- PayPal support - instead of mucking around with checks, just settle your debt electronically!
- iCalendar feeds for chores, so you can automatically be reminded of the sweeping, washing, and vacuuming you ought to be doing.
- Hell, the chores feature doesn't even have a web interface for editing it yet - I just go into the database and fiddle the rows around.
But given how half-assed it is, and how little effort I actually put into coding and maintaining it, I'm actually pretty pleased with how it's turned out.