Foundation Complete

/images/file_00000000c43c71fdb27d38f13fc1072f.png

In the last update, I described plim as a finacial rendering engine with a built-in time machine. What I meant was that it doesn’t just store a ledger of what your finances look like today - it keeps a record of everything that has happened, and when, so it can start from the beginning and replay those changes to compute what your finances looked like at any point in time.

Well that engine is done now, so let’s take a look.

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

I call it the timeline replay engine, and it seems pretty solid. And the key to that stability is a decision I made quite early. See, a system that has to replay every transaction you’ve ever made over the last 15 years would be doomed to lose track of something sooner or later. Maybe you were sick for a month in 2020 and don’t have great records from that time, or maybe you spent six months of 2023 on vacation in Peru and were not paying attention to your bills.

Regardless of the cause, we can’t have gaps like that haunting your finances forever, so plim employs a rigid monthly lock-box strategy. Everything needed to compute a picture of your finances for any specific month lives in a directory dedicated to that month. This way, plim doesn’t need to replay 12 years of data and smooth out all the bumps and gaps - it just needs to run the playbook for that month. A mess that happened in May of 2017 stays in May of 2017.

To do this, we require 6 files in each month:

  • the carry file summarizes your status from last month and carries it forward to be the start of this month

  • the buckets file describes all the budget buckets you are managing this month

  • your shunts file captures all the decisions you’ve made about moving funds around between buckets

  • the keepers file describes which tallykeepers you are pulling data from this month, such as bank accounts, credit cards, etc

  • you’ll have a few tally files, which are the CSV files you’ve downloaded from your bank this month. These are considered the source of truth and plim never changes anything in them.

  • lastly, we have the leaks file, which records where you decided to target each line of the tally files - which buckets are filled or drained by each transaction

From these files, plim can create a complete picture of your incomes and outflows at any point in time, mapped against your expectations at that time, so you can see exactly what happened and how it affects your budget.

That replay engine handles expenses, income, withdrawals, deposits, charges, refunds. You can change your mind six times about which bucket the lawn mower repair goes in, add new tallysheets, pay bills, add new buckets in the middle of the month, correct your carry file from last month because a bill came in late, split charges between multiple buckets. It’s pretty complete.

But an engine isn’t much use without a steering wheel, so that’s where I’m heading next - the user commands. And the trickiest one of the bunch is coming first: how to add a new tallykeeper to your life.

Once that one’s working, all the other commands are pretty easy.