End-to-end product design for a shared expense tracking app built around the social dynamics of money between people who know each other.
My roommate had covered groceries for the third week in a row. I knew I owed her money. She knew I owed her money. Neither of us said anything about it for two weeks — because bringing it up felt weird.
That's when I started asking around. Turns out, basically everyone I know has a version of this story. Someone floats dinner, someone forgets to e-transfer back, someone quietly writes off $30 because asking feels worse than losing the money. The apps that exist to fix this — Splitwise, Tricount, and others — mostly just track the problem. They don't make it any less uncomfortable. I wanted to design something that did.
Splitting a bill is a social moment, not a financial transaction. An app that treats it like a spreadsheet will always feel wrong — no matter how accurate the math is.
My hunch was that the problem was social, not technical. But a hunch isn't a design decision. So I spent two weeks talking to people and digging into what already existed.
People sharing apartments in Toronto and Vancouver, ages 22–29. Biggest stress: recurring bills and tracking groceries.
Friends who organize group getaways and end up putting everything on their card.
Split dinners and nights out. Biggest stress: asking for money back without it being weird.
5 of 7 people said they'd quietly write off amounts under $20 rather than bring it up. The discomfort of the conversation was the actual problem — not the missing cash.
6 of 7 people planned to log expenses "later" and often forgot. Diary study confirmed: same-day entries were twice as accurate as ones logged the next morning.
Most people open these apps to check their balance — not to add things. But every app buries the balance inside a group screen. People had to do mental math just to answer "am I in the red?"
Multiple people described Splitwise reminders as "cold" or "aggressive." One said it made her feel like a debt collector every time she hit send.
After my interviews I grouped what I'd heard into three patterns — not by age or job, but by how each person experiences the problem. Every detail comes directly from conversations.
"Someone has to keep track, so I do. But I hate that it makes me look petty when I bring it up."
Shares a 3-bed in Toronto. Covers rent up front and chases her roommates for their share. Works in marketing.
"I always end up putting $3,000 on my credit card for the group trip and then spending the next month figuring out who owes what."
Plans 2–3 trips a year for groups of 4–8 people. Uses spreadsheets to track.
"I know I probably owe people money but I have no idea how much or to who. It just hangs over me."
Freelance illustrator in Calgary, variable income. Usually the one being reminded — and hates it.
I went through each app methodically — using Nielsen's usability heuristics as a checklist — and read through hundreds of Canadian App Store reviews. The pattern was consistent across all of them.
| App | Quick Add | Receipt Scan | Gentle Reminders | Balance at a Glance | Offline Mode | Social Tone |
|---|---|---|---|---|---|---|
| Splitwise | △ Partial | ✓ | ✗ | △ Partial | ✗ | Transactional |
| Tricount | ✓ | ✗ | ✗ | ✓ | ✓ | Neutral |
| Settle Up | △ Partial | ✗ | ✗ | ✓ | ✗ | Transactional |
| Interac e-Transfer | ✓ | ✗ | ✗ | ✗ | ✗ | Neutral |
| Divvy ✦ | ✓ Target | ✓ Target | ✓ Target | ✓ Target | ✓ Target | Relational |
No app does all three things well: log quickly, show your balance immediately, and communicate warmly. That's the gap Divvy is designed to fill — practical enough to replace a spreadsheet, warm enough that sending a reminder doesn't ruin your day.
Logging an expense should take under 10 seconds. If it takes longer, people won't bother — and the whole thing falls apart.
Your total balance — across every group — should be visible the moment you open the app. No hunting, no mental math.
Every message, reminder, and notification should sound like a friend checking in — not a billing department following up.
Here's what I noticed: everyone opens these apps to check how much they're owed — not to add a new expense. But every app is built as if adding things is the main event. The home screen is always a list of recent transactions. Your balance is buried inside a group. You have to tap three times just to answer "am I in the red right now?"
So I flipped it. Status first, entry second.
Putting the balance front and centre means the most common thing someone wants to know takes zero taps instead of three. The "Add expense" button floats at the bottom — but it's not the loudest thing on the screen.
Every design decision had to pass three tests: does it make logging faster, does it make the balance clearer, and does it make the whole thing feel less awkward? Here are the five that changed the product the most.
Showing a feed of recent transactions on the home screen — the way Splitwise does it. The problem: you still have to do the mental math yourself. Opening the app doesn't actually answer your question.
One big number at the top: what you're owed (or what you owe) across everything. Your groups sit underneath. No math required. Every person I talked to said the first thing they wanted to know was simply "am I up or down?"
The standard manual form — amount, name, category, who to split with. It works, but it takes 6–8 taps and over 30 seconds. The diary study was clear: 6 of 7 people planned to fill it in "later" and often never did.
Point your camera at the receipt. The amount, merchant name, and date fill in automatically. Then pick who to split with and you're done. Manual entry is still there — but it's the backup, not the default.
Nielsen Norman Group data shows cutting a form from 6 fields down to 2 increases completion rates by 120%. Receipt scanning removes the most tedious fields at the moment motivation is highest — at the table, before everyone forgets the total.
Standard push notifications — "Priya, you owe Jamie $44.50. Please send an e-transfer." Direct, yes. But multiple people described this as the reason they'd muted or deleted Splitwise entirely.
Reminders framed around wrapping something up — not collecting a debt. The system sends them, not you. A "friendly reminder" mode uses casual, warmer language and gives the other person a snooze option so they don't feel cornered.
Behavioural research by Sunstein and Thaler shows framing a request changes whether people follow through. A 2022 Stripe study found positive framing led to 2.3× higher same-day payment completion.
4 of 5 participants in usability testing said the Divvy-style reminder felt noticeably less uncomfortable — and they were more likely to act on it the same day.
Showing every individual expense as its own debt. After a ski weekend with six people and twelve shared costs, you'd be looking at a screen full of individual line items.
Divvy automatically figures out the fewest number of e-transfers needed to clear everyone's balance. You just see "send $32 to Sam" and you're done. The math happens in the background — you never see it.
In a 6-person group with 20 shared expenses, you'd normally need up to 30 individual payments. With simplification, that drops to 5 at most — an 83% reduction. Fewer steps means people actually follow through.
Showing all four split options — equal, custom, by percentage, by item — upfront every time. This sounds thorough but slows everything down. Standing outside a restaurant at 10pm, you don't want to pick from a menu.
Equal split is the default — from the diary study, it's what people wanted about 90% of the time anyway. One tap opens a sheet with other options. The complexity is there when you need it. It stays out of the way when you don't.
Sheena Iyengar's research on choice shows more options often leads to worse decisions and lower satisfaction. Getting the default right means most people never have to make a choice at all.
I ran two rounds of testing on a Figma prototype — 5 people per round, the standard recommended by Nielsen and Landauer for surfacing the majority of usability problems. The first round broke things in ways I hadn't expected. The second round confirmed what I fixed actually worked.
5 per round, different people each time so nobody had seen the design before
Think-aloud: participants talked through what they were doing and why as they went
Up from 68% average in Round 1 after IA and labelling fixes
"Excellent" range. Industry avg for finance apps: 72
Because this was a self-initiated concept project, I didn't have production data to pull from. Instead, I measured what I could actually observe: how people performed on tasks, what score they gave the app, and whether the specific things I'd designed for — speed, clarity, and tone — held up under real use.
The biggest shift for me was realizing I was designing a social experience that happened to involve money — not a financial tool that happened to involve friends. Once I framed it that way, every decision became easier. Does this make the conversation between two people better or worse? That was the test.
Equal split as default, camera-first as default, automatic simplification as default — getting these right meant most people never had to make a choice at all. Research by Johnson & Goldstein shows 80–90% of users stick with whatever the default is. Choosing the right default is designing for nearly your entire user base.
I went into this thinking about screens and flows. I came out thinking a lot more about copy. The reminder notification test was the clearest example: the same information, framed differently, produced completely different emotional reactions.
The diary study showed a delay of even a few hours made entries less accurate and less likely to happen at all. The receipt scan wasn't a feature added for fun — it was the answer to a real behavioural problem. The window where people are motivated to log something is very short. You have to design for that window.
I'd want to look more carefully at multi-currency — people on group trips to the US or Europe mentioned this a lot, and the current "auto-convert at time of entry" approach worked but didn't feel quite right to everyone. I'd also want to prototype a group budget feature — a way to set a spending cap for a trip upfront so nobody gets surprised at the end.