DashForge
← All work

Shared households & trips

Kitty

Eleven expenses, four people, two transfers.

Shared expenses for a group, with settlement that reduces the tangle to the fewest payments that clear it. Money is integer cents throughout, the arithmetic is checked rather than trusted, and somebody can settle up from a link without making an account.

CloudPremadeLive demo
Settling up
Fewest transfers

reduced from the full tangle

Money
Integer cents

two invariants asserted, never floats

The hold-out
No account

settles from a link

What was going wrong

A group trip's costs end up in a chat thread, a note on somebody's phone and three different memories. The person who paid for the villa is out four hundred pounds and does not want to be the one to bring it up, and the settling-up conversation is six payments long because nobody worked out that most of them cancel.

What we built

Make the maths the product and make it visibly correct. Every amount is integer cents from the moment it is typed. Balances are computed and checked, then reduced to the minimum set of transfers, and both the tangle and the reduction are shown — seeing four people collapse to two payments is the moment the thing lands. Anyone can be paid out or settle up from a link, because the hold-out in every group is the reason these apps get abandoned.

What it looks like

Every screen shown on a desktop and on a phone, because half of these are used standing up.

A group, settled

Balances, then the reduction beneath them. The point is watching the second list be shorter than everyone expected.

/groups/[id]

/groups/[id]

Desktop capture

1440 × 900

9:41

Mobile capture

390 × 844

Adding an expense

Who paid, who it is for, how it splits, and the receipt. The decimal becomes cents once, at this boundary.

/groups/[id]/add

/groups/[id]/add

Desktop capture

1440 × 900

9:41

Mobile capture

390 × 844

The settle link

What one person owes, what it is made of, and a button. No sign-in, because the hold-out is the whole problem.

/j/[slug]

/j/[slug]

Desktop capture

1440 × 900

9:41

Mobile capture

390 × 844

History and duplicates

Every edit kept as a revision, and the likely duplicate presented as a question with both entries intact.

/groups/[id]/history

/groups/[id]/history

Desktop capture

1440 × 900

9:41

Mobile capture

390 × 844

What it does

Who reaches for it, and when

Four people back from Lisbon

Eleven expenses, every share exactly equal, and two payments instead of the six everyone assumed.

A shared house on the 1st

Standing costs split, and one person who paid the internet reimbursed without a conversation.

The friend who owes £14

Opens a link, sees the figure and what it is made of, and marks it paid. No sign-up, no app.

What makes this one different

  1. The arithmetic is asserted, not assumed

    Splits must sum exactly to their expense and a group's balances must sum to exactly zero. Both are checked at runtime, and the screen shows an error rather than a wrong number. A rounding bug that loses a penny destroys trust in the whole thing.

  2. The remainder goes somewhere you can point at

    Three people splitting a tenner is 333 / 333 / 334, and the app can say which. Nothing is silently dropped, and no money is ever a floating-point number.

  3. The settlement freezes when it is proposed

    Once people are paying, the list must not move because a late expense appeared. It is a document from a moment, not a live recalculation.

  4. It records payments; it does not move money

    Mark-as-paid only, and the copy says so. A button that looks like it moves money and does not is worse than no button. Duplicates are a question for the same reason — the app cannot know which entry is real, so it never merges one.

Built with

What each piece is doing here — the people who read this section are usually the ones who would have to maintain it after us.

Want something like Kitty?

It does not have to be your industry — the underlying problem is nearly always the same. Tell us how the work moves through your business and we will tell you what it would take.

Every project is quoted on its own. Turnaround starts at two weeks.