Back to the notebook

Product / 2 min read

Building FinanceGuy for students

I started FinanceGuy because I wanted a finance app that could help before I made a bad spending decision, not just show me a chart about it afterwards.

FinanceGuy article cover

The problem I actually cared about

Most finance apps are very good at telling you what already happened.

You spent this much on food. This much on subscriptions. This much last month.

That information is useful, but it always felt slightly late to me. My actual problem was usually happening before the transaction. I would know I was spending too much, buy something anyway, and then look at the chart afterwards.

FinanceGuy came from wondering whether software could intervene earlier in that loop.

It became a much bigger software project

The original idea was mostly about spending predictions and interventions.

Then I actually started building it.

Suddenly I needed authentication, transaction storage, a database schema, mobile screens, importing data, analytics, model inputs, error handling, and a dozen small things that had nothing to do with the original ML idea.

That was probably good for me. It forced me to stop thinking of the project as "an ML app" and start thinking of it as a piece of software that happened to use ML.

Personalisation is harder than prediction

One of the more interesting problems is that people's spending behaviour is completely different.

A purchase that is unusual for one person might be completely normal for someone else. That means a generic model score is only so useful.

A system like this needs some idea of the individual using it, while still dealing with the fact that new users do not have much history yet.

That led me into things like user-level calibration and fallback behaviour for cold starts. It also made the product problem much more interesting than just asking whether I could train a better model.

What I'm still figuring out

The main question I still care about is whether an intervention can actually be useful without becoming annoying.

A system that warns you about everything is useless. A system that waits until it is completely certain probably arrives too late.

Finding that balance is much more of a product problem than a model problem.

FinanceGuy is still one of the projects where I have the most unfinished ideas, but it has already taught me a lot about what happens when ML has to live inside a real application.

View the project

This note covers the project as described in my portfolio. The linked source and demo are the best places to look at the implementation.

Another noteBank prediction: looking past accuracy