Inspiration

Most of us are upperclassmen living with roommates, and splitting groceries was usually a mess. Someone would screenshot a receipt, we’d do the math in our heads, and then there’d be an awkward “hey, you still owe me” text a week later. We wanted an app that handled all of that.

What it does

groSharey lets a group split costs and tells everyone what they owe. The main flow:

  1. Make a shared list. Start a group with your roommates and add what everyone needs. Each item remembers who asked for it.
  2. Scan the receipt. Take a photo and groSharey reads each item, discount, and tax marker. Pick your group, and AI assigns every item to whoever wanted it and crosses it off the list.
  3. Settle up. Everyone sees what they owe and can pay through Venmo or PayPal. You can nudge people who forget, and your roommate confirms once they’ve been paid.

You can also make groups and save shopping lists for regular trips!

How we built it

The app is built with React and TypeScript on Expo, so one codebase runs on iOS, Android, and the web. The backend is a Flask API in Python with MongoDB for storage, deployed on Vercel. Receipt scanning uses the Gemini API to pull items, discounts, and tax out of the photo, and ElevenLabs powers a voice control feature of the entire web app. We built the pieces separately first (website wireframe, receipt scanning, payments and notifications), then combined them and spent the last stretch on design and extra features.

Challenges we ran into

Gemini sometimes didn’t have capacity to handle our scan requests. We added a fallback that drops to another model when the first one fails, so scanning still works. The other big issue was design. We spent a long time on the look and feel and on making everything easy to read.

Accomplishments that we’re proud of

  • Getting receipt scanning to work
  • An interface that’s easy to pick up
  • Accessibility features
  • The logo and background design

What we learned

We learned how to automate email notifications and how to connect a web app to payment apps like Venmo and PayPal. We learned how to use Figma to create a user-friendly interface, convert it to code for the frontend, and use GET/POST requests to connect the frontend to the backend API. We learned to use the Gemini API to handle requests of the scanned receipt images and parse them into a json format, and tweak the prompt as necessary to accurately scan. We also learned to account for taxes and taxable items on the receipt and kept all that math in a split_costs function to keep the splits even (for odd cents send that one to one person).

Share this project:

Updates

Submission history