Back in 2014, while taking a break between roles I began building a web-application to display your financial transactions and allow you to group and categorise them. I find it much easier to learn technologies while using them for a specific purpose so this project became a great place to test those out. The app had a near-total re-write during 2016 to move it to the latest best practices and became a full installable web-app.
I never did a write up of the project, it mainly lived on my CV, so now seems as good a time as any!
Aside from being a bit of a playground, there were two key aims for the application:
- Privacy
- Useful insights and visualisations
Privacy
As some random person on the internet, there is no reason for anyone to trust the application. As such, the data imported to the app never leaves the device. There is no analytics. The only data source is the CSV files a user can download from their bank, importing them in this way means we never need to know the user’s login or account information.
The app utilises the Stanford Javascript Crypto Library (SJCL) with IndexedDB to store the information encrypted on the user’s device. This gives the user full control over the storage of their data. If the use the ‘Clear’ option in the app, it’s gone for good.
Useful insights and visualisations
Online banking isn’t generally known as being deeply informative, and back in 2014 the few challenger banks were not data-led, there was no Monzo for example. I was interested in the data I could draw from my accounts and that drove all the insights I developed.
In the beginning, this was basic totals, sub-totals and categorisations. The next step was showing a single view of multiple accounts, both current accounts, savings accounts and credit cards. Then adding comparisons between time periods.
Finally, I looked into how other people had taken this further with their own data and added a couple of those:
- Outliers, unusual items. Outliers are defined as being one and a half times the interquartile range away from the median.
- It can be important to measure to what extent your non-discretionary expenses are within your means. A value of 1.0 means all your income is needed these expenses; a value of 2.0 or higher means that you could cut your income in half and still be able to make those payments.