As college students, we constantly face the dreaded task of buying groceries for our apartment, paying the full tab at a restaurant, or being the only person with cash at that one boba place. We felt that splitting the bill between multiple people in these scenarios was always a hassle. The process of reaching out to everyone and calculating how much to Venmo individuals was often time consuming, inefficient, and just plain confusing. We knew there had to be a better solution.
What it does
Introducing Split, an application that parses receipts the right way.
You just finished an exhausting four-hour-long grocery haul at Safeway for your apartment mates. Once you've paid at the counter, you realize the blow your wallet has taken and immediately pull out your phone to Venmo request your friends. But you slowly come to see all of the steps that the process would require:
- Manually reading through the cryptic abbreviations and numbers to get a list of items per person
- Determining if any overlaps exist for shared items (cheaper overall code)
- Having to remember the dimes and cents of every person's cost and sending a Venmo request in time
- ...and if in the craziness of carrying 5 grocery bags back from Safeway you lost your receipt, how are you supposed to do any of this...?
Split makes life much simpler. Just take a picture of your receipt through the app and Split will automatically parse it and transform single buttons for each item on the receipt. For each Venmo username a user adds, the user can use these price buttons to select the items that their friend should split the cost of. Once all receipt items have been shared and split however you'd like, the app will then generate individual Venmo charges tailored to each person's share of the bill. ~Magic!~
How we built it
We wanted something quick and easy for the user so we built an iOS app. The user can take a picture within the app that would get posted and hosted on imgur using an HTTP POST request to their API. We used the image's imgur URL in Microsoft's handy Computer Vision API to parse the text and their relative positions from the receipt images. From here, we did a couple lil' math calculations, figured out which data was relevant (which were prices), and transformed those into buttons in the app overlayed on the prices on the receipt image. After that, it was all fun iOS segues, view controllers, and logic. Yay!
Challenges we ran into
Swift has been making tons of updates recently and as a result, a lot of code was breaking. Figuring out all the new functions and method calls was a bit of a hassle, but the worst was when none of our pods would install because they didn't support Swift 3. As a result, we had to create our own workarounds for things that are typically very easily done with Cocoapods (hacky code for life <3)
Accomplishments that we're proud of
Learned how to do API calls (lots of HTTP requests in our app!), how to work with the Microsoft Computer Vision API, and surviving all of the looooonnnng lines for food.
What we learned
iOS and Swift 3, Microsoft Computer Vision API, imgur API, HTTP requests, how to sleep on a table.
What's next for Split
In today's society, receipts have yet to be standardized. They still remain chaotic and thus it's very hard for a receipt parser to be commercialized as a global product. In the future, if receipts can be formatted uniformly or sent electronically, receipt parsing can be more accurate and efficient. Right now, Split requires a picture of a receipt and a connection to Venmo for transactions. Reducing this to one app, which could be done if Venmo had an open API, would make this process even smoother.
We're looking forward to the future of standardized receipts, and Split is our step towards a solution for college kids like us everywhere.