Inspiration

The inspiration for SmartSplit stemmed from our fascination with the capabilities of Optical Character Recognition (OCR) technology and its potential to simplify everyday tasks. We noticed that splitting bills after group outings was a common pain point—manually calculating each person's share was time-consuming and often led to errors. We thought, what if we could harness OCR to automatically read and process bills? This idea excited us, as it combined cutting-edge technology with a practical solution to a real-world problem. Our goal became clear: create an app that leverages OCR to make expense splitting effortless and accurate.

What We Learned

Throughout the development of SmartSplit, we expanded our knowledge and skills in several key areas:

  • Optical Character Recognition (OCR): Gained in-depth understanding of implementing OCR using Amazon Textract to accurately extract text from images of bills.
  • Natural Language Processing (NLP): Learned how to process and interpret extracted text using ChatGroq to identify transactions and prices.
  • Database Management with MongoDB Atlas: Utilizing MongoDB Atlas provided us with valuable experience in managing a NoSQL database. We learned how to store and retrieve complex, unstructured data efficiently, which was crucial for handling the varied information extracted from bills.
  • Cloud Computing: Acquired experience in deploying serverless functions with AWS Lambda and setting up API Gateway for scalable, efficient backend services.
  • Full-Stack Development: Enhanced our proficiency in building applications with React and TypeScript on the frontend and Node.js on the backend.
  • Authentication Protocols: Implemented secure authentication mechanisms using OAuth via Okta, emphasizing the importance of user data security.
  • Team Collaboration: Strengthened our teamwork and project management skills by coordinating efforts across different aspects of the project under tight deadlines.

How We Built SmartSplit

Frontend Development

We chose React with TypeScript for the frontend to create a responsive and user-friendly interface. TypeScript provided type safety, which helped catch errors early and made the codebase more maintainable. The UI allows users to effortlessly upload photos of their bills and view the split expenses in a clear and organized manner.

Backend Development

Our backend is powered by Node.js, which offers a robust environment for building scalable network applications. We focused on creating efficient APIs to handle user requests and process data securely.

Authentication

To ensure secure user authentication and authorization, we integrated OAuth using Okta. This approach provided a reliable and secure method for users to sign up and log in, protecting sensitive information.

Database Management

We utilized MongoDB Atlas as our database solution due to its flexibility and scalability in handling unstructured data. It allowed us to store user information, transaction details, and other necessary data efficiently.

OCR and Data Processing

The core feature of SmartSplit revolves around processing images of bills to extract and interpret data:

  • Amazon Textract: Employed for its powerful OCR capabilities to extract text from uploaded bill images accurately.
  • ChatGroq Integration: Used to parse the extracted text and identify individual transactions and their corresponding prices.
  • AWS Lambda & API Gateway: Deployed our OCR processing code on AWS Lambda, enabling serverless execution, and used API Gateway to manage API calls securely and efficiently.

Challenges We Faced

Building SmartSplit presented several challenges that we had to overcome:

  • OCR Accuracy: Different bill formats and image qualities affected the accuracy of text extraction. We had to implement image pre-processing techniques and adjust OCR settings to improve results.
  • Data Parsing Complexity: Translating raw text into structured data required advanced NLP techniques. Handling variations in item descriptions and pricing formats was particularly challenging.
  • Integration of Multiple Technologies: Coordinating between the frontend, backend, OCR services, and authentication systems required meticulous planning and testing to ensure seamless interaction.
  • Security Concerns: Implementing robust security measures for user authentication and data storage was paramount. We had to stay updated with best practices to protect user information.
  • Time Constraints: Working within the limited time frame of a hackathon meant making quick decisions on feature prioritization and efficient task delegation among team members.

Conclusion

Our journey with SmartSplit was both challenging and rewarding. We set out to solve a common problem with an innovative solution that leverages advanced technologies. Through collaboration, learning, and perseverance, we developed an app that simplifies the expense-splitting process, making it easier for friends to share costs transparently and fairly. We are proud of what we've accomplished and excited about the potential impact of SmartSplit on how people manage shared expenses.

Built With

Share this project:

Updates