Skip to content
← All work
IOU review screen — a £66 food bill split four ways with service charge

IOU

Group-trip expenses and rounds, settled without the spreadsheet.

Year
2025
Role
Design and engineering
Stack
TypeScript · Expo · Express · Supabase

The problem

Splitting costs on a group trip is a solved problem that keeps being solved badly. Most tools handle the arithmetic and ignore the social part: nobody wants to be the person chasing four friends for £11.

The approach

A shared ledger for trips and rounds, with the settlement maths done continuously rather than at the end.

What was hard

Offline and concurrent edits. Two people adding expenses on bad signal in the same pub is the normal case, not the edge case.

What I'd change

Rounds as a first-class object is the decision I am least sure about. It models the social reality well and it doubles the surface area of everything that touches the ledger — settlement, permissions, the edit paths. If I rebuilt it I would start with expenses that can be grouped and see whether rounds ever needed to be their own thing, rather than assuming they did.

The offline story is the part that would keep me up. Two people adding expenses on bad signal in the same pub is the normal case, and last-write-wins is only adequate because the amounts are small enough that nobody audits. That is a reason it has not bitten, not a reason it is correct.

The stated problem was social rather than arithmetic, and I did not really solve the social half. The app makes the maths continuous and unambiguous, which removes the argument about how much — but somebody still has to be the one who asks. Making settlement feel like something the group does, rather than something one person chases, is the actual product problem and it is still open.