Inspiration
The day before the hackathon, our team went out to eat, and we realized it was inconvenient to split the bill. Everyone had different items, quantities, and prices, and it took far too long to calculate what each person owed. When brainstorming project ideas, this recurring hassle popped up, and we thought: why even deal with this process? That's when the idea for Splitr was born- a simple tool to take the stress out of bill-splitting forever.
What it does
Splitr is a receipt/bill splitting app that allows users to upload or take a picture of their bill. It uses OCR (Optical Character Recognition) to extract item names and prices from the image. From there, users can assign items to group members, and Splitr automatically calculates what each person owes, even handling tax and tip distribution fairly. No more mental math, awkward Venmo requests, or arguing over who got what.
How we built it
We built Splitr using a React Native framework in combination with Expo Go to test any deployed changes to our app. This way, we could simultaneously develop and test without having to run into any headaches from the testing process alone. By using Firebase authentication, we made user creation a lot easier than having to fully log in with, for example, your Gmail, by just using your phone number. This also set up the future where we would store processed bills into user history. We used Google Vision API to read the image which would then be parsed into a JSON by MistralAI. This was fed into our Python scripts in our backend, which is then converted into functional components in our app.
Challenges we ran into
OCR accuracy: Sometimes our model struggled with messy receipts as well as quantifying items on the bill. We had to experiment with image pre-processing and prompting to get better results.
Parsing structure: Even with the text extracted, formatting it into usable item-name/price pairs was tough due to inconsistent receipt layouts, and communicating from the image to the backend to our app was difficult.
Time constraints: We wanted to polish our user accounts and link phone numbers to receipt history saving, but ran out of time.
Accomplishments that we're proud of
-Getting OCR working reliably enough to extract useful information from real-world receipts, despite it being our first time working with vision detection models and AI in general.
-Creating a smooth user flow from image upload to item assignment and final bill summary.
-Building a fully functional viable product in a short timeframe that solves a real and relatable problem
What we learned
-How to integrate OCR to communicate with open cred AI models and feed this information to our app.
-The importance of UI/UX in making even a utility app feel seamless and friendly.
-How to work as a team to iterate quickly, delegate tasks, and make decisions under pressure.
-The importance of having a clean and navigatable code-base to prevent any headaches.
-We should really learn Docker (our lives would be a LOT easier...)
What's next for Splitr
-Improve OCR accuracy by fine-tuning prompts, incorporating better image pre-processing, and possibly training custom models to handle diverse receipt layouts.
-Implement receipt editing, allowing users to easily fix OCR misreads before splitting, making the process even more accurate.
-Save user receipt history by fully integrating Firebase Firestore, so users can view past bills and track group expenses over time.
-Add payment integrations like Venmo or Cash App to allow users to settle their shares directly from the app or by scanning a QR code.
-Support advanced splitting options, such as percentage-based or shared item division for things like appetizers or group drinks.
-Polish the design, ensuring accessibility and responsiveness across a wider range of devices.
Built With
- expo-go
- fastapi
- firebase
- google-vision
- mistral-ai
- node.js
- ocr
- python
- react
- react-native
- tsx
- typescript
Log in or sign up for Devpost to join the conversation.