We can't count how many times stupid decisions have led to our bank account balance being dangerously low. We wanted to find a number saying how much money I should spend, not just how much money I currently have. The main goal is to help students manage their spending.
What it does
It's an iOS app that allows one to monitor how their current spending activity compares to their all-time average spending activity. The user's balance fluctuation (depending on how far the month has progressed) is modelled for all past months, as well as the current one. The two are displayed on the same graph, thus allowing the user to control his/her spending. The "virtual" available balance displayed is also multiplied by a certain amount to allow for a current saving goal to be achieved (eg. 10% savings would reduce your "virtual" available balance by 10%).
How we built it
Using Starling's Developer tools (specifically the Node.js SDK) we fetch all the transactions of a specific account and calculate the balance from the first transaction to the last transaction of the previous month. After that, we can split these balances depending on the day (1-31) that the transaction was created. Averaging all the values for each day allows us to model the spending behaviour of the user (and how this changes as the month progresses). What we end up with is a simple array of 31 numbers which is the average balance the user usually has during that day of the month. Doing the same process for the balance per day for the current month allows us to trace the modelled spending behaviour versus time as well as the current spending behaviour versus time. The difference between the two shows exactly how much more/less money the user's spent this month up till now compared to previous months. The data processing was done using Node.JS and the application itself was made using Swift.
Challenges we ran into
We did everything in about an hour.
What's next for Ghost of Spending's Past
We really wanted to implement actual transaction blocking depending on our "virtual" balance. The idea is to ask the user with a push notification whether they really need to use their real balance.