Mobile · Mar 2025 · HackIllinois · team project
FairShare
At HackIllinois I helped build FairShare, which reads a receipt photo and lets friends claim what they ordered.
FairShare media, 7 items. Use the arrow keys to move.
Splitting a dinner check by hand is how someone quietly overpays. At HackIllinois I helped build FairShare so a photo of the receipt becomes a list of items people can claim.
The problem
A total is the worst object to share. It hides who ordered the extra dish and who had water. The argument starts because nobody is looking at the same lines. The person it frustrates is the one who pays the whole bill and then chases the others, and the friend who is pretty sure they are covering someone else’s dessert.
We wanted the photo to become items, and the items to become claims, instead of a single number everyone negotiates. It was worth building because the receipt already has the lines. The missing piece is reading them and letting each person take the ones that are theirs.
How I built it
I built the Expo screens and the Express entry point. The phone is where the photo is taken and where the claims happen. Express is the door the photo goes through. React Native is the app, and react-native-chart-kit is there for the split once the items exist.
gpt-4o reads the photo into line items. A photo is not a table, so the first call has to find the lines. A second call, to gpt-4, runs when those lines do not add up to the printed total. The fallback exists because a pretty list that misses the tax, the tip, or a line is a list people will not pay against.
Firebase holds the accounts and the transactions. A claim that lives only on one phone is not a split the table can see. The demo of the flow is on YouTube.
Challenges and what I learned
The first read is not enough. The fallback is the part I trust, because a list of items can miss the printed total and that mismatch has to be caught before anyone pays. Two model calls is the cost of refusing to show a split that does not reconcile.

Let's talk ↗













