Inspiration
Whether it's eating out with friends or shopping together with others, splitting the bill at the end of a trip is always a complex process of figuring out which expenses correlate with which person. This issue is magnified even further after other considerations like sharing items, adding tax and tip, and certain people not wanting to pitch in on various items. We created this app to simplify and automate the process of splitting bills between multiple people so users can enjoy spending and paying their group expenses without worrying about having unfair charges.
What it does
Resweet scans any receipt from restaurants, grocery stores, etc., and accurately splits the total cost of the receipt to each member of the party. The process for using the application goes as follows: The primary user initially takes a picture of the receipt and then passes his or her phone around to each member of the party to input their name, Venmo username, and applicable items to pay for. The application then splits the cost of every item based on the inputted data and splits taxes and tips accordingly by respective weight. Finally, the application shows a summary page of all total charges and allows the primary user to charge each member of the group on Venmo instantaneously.
How we built it
We built the application by splitting up development into multiple sections: scanning the receipt through CV image processing, data storage and calculation, mobile payment processing, and front-end development including form templates and logo design. Each team member worked on separate parts of the project and some pieces of the puzzle naturally moved quicker than others. The user interface served as the core of the application as we connected back-end processes to the ReactJS environment once they were completed. For instance, once the receipt scanning portion was completed, we connected the data collected including items, cost, tax, and tip to the existing "Food" and "People" objects developed for our front end that stored cost, count, name, Venmo username, and foods selected. Each back-end process funneled in data that we would then share through our front-end and store for future use.
Challenges we ran into
One of the primary challenges we faced was the shutdown of Venmo's API which made the integration of a mobile payment system more difficult. We ended up being able to use Venmo's Payment Link to generate charges and payments between users with different recipients, notes, and amounts. Another issue we faced was the pre-processing of the camera scanning system because each receipt had different layouts and text qualities; thus, some scans of receipts would not correctly register the prices of certain items. We ended up implementing a combination of CV techniques including binarization, normalization, and skeletonization to generate more accurate scans of the receipts. Lastly, we faced user interface challenges of creating a web application that was simultaneously mobile-friendly. This challenge required the usage of ReactJS to build visual and simple-to-use interfaces.
Accomplishments that we're proud of
The aspects of this project that we are particularly proud of are 1. The ease-of-use/applicability of the application and 2. The start-to-finish process of the website that traverses 3 distinct pages. After completing the project, each member of our team felt that the end product was something we would actually use in our day-to-day lives when needing to split costs. We took into account our own problems when brainstorming ideas and ended up delivering on a lot of the initial features and designs we thought of. The application also has a multitude of moving parts that were successfully brought together and integrated including the scanning, cost calculation, and mobile payment features -- another fact that we are proud of.
What we learned
Some of the things we learned in this project included utilizing ReactJS for web development in a mobile setting and creating visually pleasing designs for our scanning, input, and summary pages. We also learned about the difficulty that comes with computer vision and machine learning models since there are so many factors to consider and predictions can easily have no statistical significance if the data is not carefully aggregated. Even seemingly perfect models can produce incorrect results due to variance.
What's next for Resweet
- Adding receipt storage so users can easily track their historical spending and split receipts.
- Implementing different payment portals including Zelle, CashApp, and PayPal.
- Incorporating a friends feature on the application so users can easily find and split reoccurring bills with the same people.
Built With
- cv
- firebase
- github
- javascript
- materials-ui
- mindee
- node.js
- optical-character-recognition
- react
- rest-api
- venmo-payment-link
Log in or sign up for Devpost to join the conversation.