Inspiration

Living as international students sharing apartments with new people, we constantly needed to split bills—from grocery shopping to UberEats and everything in between. While the market offers splitting apps, they require manual entry and calculations, which was tedious and time-consuming. We thought, why should we sit down and calculate each share? Let the computer handle it! This led us to create a bill-splitting app powered by OCR (Optical Character Recognition) technology. With just an image of the bill and a few clicks, the app simplifies, accelerates, and automates the process of splitting expenses.

What it does

SettleUp is a mobile webapp that allows users to:

  1. Capture an image of a bill, which the app parses into items using OCR technology.

  2. Assign items to group members through an intuitive flashcard-like interface.

  3. Automatically calculate the shares for each group member based on assigned items.

  4. Store all group transactions and balances in a centralized database for easy settlement at any time.

  5. Use voice recognition to effortlessly select group members for splitting items, making the process faster and more interactive.

How we built it

We began by meticulously planning the app’s structure and features. We outlined how it should function and its key user flows.

  • Frontend: Mubeen led the creation of the frontend using React to design an intuitive and seamless user interface.

  • Backend: Swagat focused on building the backend server using Python and integrating APIs for OCR and database management.

  • Database: After deliberating between Firebase and Supabase, we chose Supabase due to its SQL structure, which suited our app's complex requirements.

  • We utilized OpenAI's API for robust OCR functionality and spent long hours perfecting prompts to ensure the system works smoothly with bills of various formats.

Over 40 hours, we worked tirelessly, often through the night, to build this full-stack web app and ensure it was fully functional.

Challenges we ran into

  1. Choosing a Database: We debated between Firebase and Supabase but settled on Supabase for its SQL compatibility, which was crucial for handling our relational data.

  2. Parsing Images into Flashcards: Transforming OCR-parsed data into a user-friendly flashcard interface required thoughtful design and engineering.

  3. Prompt Engineering: Tuning the OCR system to accurately parse bills of different formats required extensive testing and optimization.

  4. Database Management: Designing a relational database schema to track groups, users, expenses, and settlements posed some initial hurdles.

Accomplishments that we're proud of

  1. Developing our first full-stack web application in just 40 hours.

  2. Building the first bill-splitting app that integrates OCR technology to automate bill parsing and sharing.

  3. Creating a scalable and user-friendly interface that works seamlessly with various types of bills.

  4. Successfully managing a complex database structure to store and retrieve transaction data efficiently.

What we learned

  1. How to integrate APIs effectively to simplify backend logic and enhance app functionality.

  2. The importance of collaborative teamwork in a high-pressure environment, dividing tasks to optimize efficiency.

  3. Database design for real-world applications, ensuring scalability and robustness.

  4. The nuances of OCR technology and prompt engineering to handle diverse real-life scenarios.

What's next for SettleUp - Split. Share. Settle.

  1. Machine Learning Integration: Develop a model that learns group dynamics and suggests automatic splits based on past data.

  2. Quirky Notifications: Add fun, personalized reminders for pending settlements to improve user engagement.

  3. Spending Karma and Profiles: Introduce "Karma Scores" and spending personalities to gamify the user experience and foster accountability.

  4. Global Compatibility: Add currency conversion for international groups.

  5. Mobile App: Build a mobile version of SettleUp to make it even more accessible.

Built With

Share this project:

Updates