An app for splitting expenses with friends and roommates on the spot, without chasing anyone on WhatsApp. A solo bootcamp project, from zero to prototype.
(01)The problem
Asking friends for money is awkward, so people just let it go.
What hurts
Whoever pays first tracks who owes them on WhatsApp.
They do the math by hand and feel awkward asking, so they often let it go.
Shared households keep a Google Sheet that nobody updates.
The challenge
Design an app from scratch that splits the bill right at the table and turns an awkward moment into something that takes two seconds.
My role
A solo bootcamp project. The whole process was mine, from defining the problem to a clickable prototype in Figma.
(02)Personas
Two people, two different pains.
Valentina, 28, organizes the outings and always pays first. Her pain is social: collecting money without it getting weird.
Carlos, 22, is a student on a tight budget who lives with roommates. His pain is control: every peso counts and nobody updates the Sheet.
I documented their goals, frustrations and comfort with tech, and the product decisions came from there.
(03)Design system
The system came before the screens.
Color tokens (lime primary, violet accent, semantic colors), Inter with a full type scale and an 8px spacing grid.
Components with states: buttons, inputs with errors, badges, toasts, cards and quick-action chips.
(04)Key decisions
Each screen answers a pain from Valentina or Carlos.
Both personas open the app with the same question: who owes me?
Decision
The available balance comes first, with three actions: Send, Request and Split. Recent activity shows who owes you at a glance.
Why
It answers the main question before they have to look for it.
1The splash sets the tone: “Split expenses. No drama.”
2Balance, three actions and recent activity
B · New transaction
Frequent contacts first
Problem
Payments repeat among the same people.
Decision
Chips with frequent contacts sit before the search bar.
Why
Most of the time the person is already there, one tap away, instead of a search.
1Empty state
2Filled in
C · Split expense
The automatic split
Problem
Splitting a bill means a calculator, WhatsApp messages and an awkward follow-up.
Decision
The app divides the total by the number of people as you type, and “Request my share” sends the request right away.
Why
It replaces the calculator, the messages and having to insist.
D · Confirmation and history
A close with no doubts
Problem
After paying, someone in the group still asks whether you paid.
Decision
“Done!” shows the amount, the recipient and the note, plus “Share receipt”. History groups everything by month, with All, Sent, Received and Pending filters.
Why
The receipt reaches the group, and the history is the record the Google Sheet never kept up to date.
1“Done!” with “Share receipt”
2History by month, with filters
(05)Outcome
What I’d validate
Status
Not tested
with users yet. It was a solo academic project, from research to a clickable prototype.
Screens
8
from low to high fidelity, built on my own components.
Order
System first
Tokens and components came before the final screens.
What I’d test first
How long it takes to split a real bill at the table with three friends, and how many people send the request without help.
The math wasn’t the real problem. Asking friends for money was, and the personas changed what the product had to do.
System before screens: building tokens and components first made the final UI consistent and quick to iterate.
Walk the full flow
A clickable Figma prototype with all 8 screens connected.