Countless visions ran through our heads. Projects were shot down. Terrible ideas were laughed out. UBER FOR LAMPS, TINDER FOR RIDESHARES. We were honestly slumped until we recalled that Tuesday evening.
Just another Tuesday Evening. Dinner was with the #squad once again. We had our delicious meal at the great Raising Cane's, all of us getting our share of Chicken Tenders, Texas Toast, and french fries. But most importantly, we got the sauce, the best sauce in all the land. However, we were getting to that time again where we finished our food and had to decide how much to Venmo Sandy, who offered to pay for this one, but we couldn't let that happen. Not this time. But none of us wanted to pay everything, so we just decided to pay for whatever we ate. The annoying thing was that we shared a lot of dishes and some of us got individual dishes. We couldn't just calculate who owed what because that was annoying. We thought to ourselves, "If only there was a way that we could just take a picture of this receipt and just enter who paid for what and figure out how much who owed what, this outing would just be a little better." Boom, that's when Rec-eipt was born.
We wanted to create an app that made going out to eat easier for people like us. By being able to scan a receipt and instantly spit out the amount that everyone owes, it can make sure that people are paid back in a timely and orderly fashion.
What it does
Scan a receipt, enter who ate what. Boom. You know now who owes what.
How we built it
Backend was primarily Python. We used GCP's Vision Cloud API to process the image and get the text from the receipt and then we had to parse the JSON response in order to figure out what items matched what price. We then had to use HTML and PHP and Flask to build the frontend. You first take a picture, we process the image, then spit out each item that was on the receipt. You then enter who pays for what and then boom, you got the total price that each person has to pay.
Challenges we ran into
It was very difficult parsing the JSON response because it would return each individual word. Also, orders were made up of multiple words and we had to properly combine words based on their position. Then, we had to match that with the price. The hardest part though was the frontend. None of us really knew HTML or Flask, so we had to learn them from scratch. It was a pain switching from frontend to backend--we had to use the frontend to upload the image, then convert that to a dictionary, then use that dictionary to have the user write who paid for what, and then use that to output the final response.
Accomplishments that we're proud of
Learning how to make the frontend and backend work together. Learning a little more about GCP. Pulling an all nighter the last night to finish. Working together as a team. Making proper use of version control. Having a great time at a great hackathon.
What we learned
We learned a lot about the GCP OCR API. Each of us worked with a language/framework/API that we were not familiar with. Hackathons are tiring. CSS is slightly different for Flask. We also learned about how worth it version control was since it made our lives a lot easier for just a little bit more work.
What's next for Rec-eipt
Going mobile, being able to directly take a photo instead of having to upload a picture to a web app. Making the interface better so the user doesn't have to look at plain font. Potentially using React for front end instead of PHP/HTML/CSS.