Building a Better Finance App
![]() |
| A subtle nod to capitalism. |
The next series of posts is likely going to bend toward more technical material, but I'll do my best to keep the non-techie crowd engaged. In addition to the technical details, I want to walk through some of the software design concepts and steps I used to focus on my business decisions for developing this app (if business decision is indeed the right phrase). If, for some reason, you decide that you want to use my solution as your financial app, I'll post a link to install the solution and the formulas needed to generate the appropriate Google Sheet, so you can hum along in no time.
Years ago, before the advent and subsequent demise of Mint, I started writing an app called Slowpoke (the opposite of Quicken, get it? Sigh.) I didn't want to pay a fee to manage my money, and I thought this would be a good side project to learn, at the time, Ruby on Rails (although I think my first iteration may have even been in PHP).
The concept was simple - enter transactions into a website and add some budgeting functionality to bucket those transactions. My first budget coming out of college was literally written on the back of an envelope, and my expense tracking was done on a yellow notepad. I didn't have ready access to Excel, and I had yet to discover the beauty of open source solutions. So anything would've been a step up from my prior art.
While I was designing the app, I encountered a company called Yodlee - a company that served as a secure broker between the consumer and financial data from the consumer's institutions. I believe that Yodlee had a free API to connect consumers to their data (alas, this seems to no longer be the case), but, reasonably, involved a high level of security for each transaction. While I went back and forth on the particulars of the API integration, Mint dropped, and I decided to use that as my solution instead. [Note: My recollection of the period above makes it sound like this all occurred over weeks or months. In actuality, it was years. My first iteration of Slowpoke started a few years before the introduction of the iPhone, so using a PC for everything was still common practice. Funny to think that less than 20 years later this seems like such a quaint notion. Even though half my life occurred before smart phones made the scene, I have a hard time recollecting how any of us communicated before 2010.]
Skipping over the next 20-ish years, Mint met its demise, and I was left with two options - port all of my data over to Credit Karma or find a paid solution. I have a hard time justifying any cost above, say, $5 a year, to handle my financial data. The added value that these services provide isn't something that I'm all that interested in, and, while it's nice to have my data downloaded from my various accounts, it isn't strictly necessary. Yes, it takes a little additional work to login into the various sites, but their interfaces are straightforward enough, and I'm not generating so many transactions in a day that I can't keep up. Plus, it has the benefit of forcing me to pay attention to my financial health with some frequency.
Given all that, I still decided to give Credit Karma a try. As a basic tool, it's ok, but it's not as flexible at managing data or accounts as Mint was, so I ultimately abandoned it as a replacement and decided to use Google Sheets to manage my finances. GSheets has templates for budgets, but I wanted a little bit more control of certain aspects, so I decided to roll my own. Given that it's a spreadsheet, this didn't require a huge initial outlay of time and effort.
I'll go into much more detail in ensuing posts, but here are the basics of my existing set up:
- A budget sheet that has bucketed amounts for specific categories. Additional rows sum up my totals per month per account, so I can track my spending throughout the year. Below the budget fold, I also track the taxes I owe from income and dividends because they aren't automatically withheld and I need to make sure Uncle Sam gets his cut at the appropriate intervals.
- A transactions sheet that tracks the date, description, amount, category, account source, and any notes. The category and account source columns are enumerated and validated. A negative value in the amount column indicates a debit.
- A net worth sheet that tracks the value of my liquid accounts month to month. This sheet also contains my remaining mortgage balance and the estimated worth of my home as a (very) rough average from Zillow, Redfin, and Realtor.com. I also make a (very) rough attempt to track my asset classes allocations across accounts so I can ensure I don't have too much money in stocks when I should have more money invested in stable assets. Historically, I used this sheet for modeling scenarios, so previous iterations were a bit chaotic.
- An annual fees sheet split by month, so I'm not surprised to see, say, my Duolingo subscription renew in June. I also track whether or not the expense is a business write-off. The domain name for chicagobotdog.com, for instance, is a business expense. Thanks for helping me lower my taxes by reading!
- A foreign tax sheet that helps me make heads or tails of the various taxes from my mutual funds come tax time.

Comments
Post a Comment