Inspiration

We were inspired by how outdated and inefficient receipt tracking still is, especially in Canada, where tap payments are modern, but receipts are still paper-based. We wanted to build a solution that not only digitizes receipts but also turns them into meaningful insights. Our goal was to create a smarter, centralized way to manage spending, compare habits with peers, and eliminate the need for paper receipts altogether.

What it does

ReceiptMe lets users upload receipt images or forms and instantly get organized, AI-generated summaries of their spending. It uses Google’s Gemini API to extract itemized data, categorize purchases, and generate financial insights. Users can view breakdowns by category through pie charts, compare spending against similar demographic averages, sort by various factors, and even link their bank accounts for centralized, paperless expense tracking. This is all done in one seamless dashboard.

How we built it

We built ReceiptMe as a full-stack web app using TypeScript with React on the frontend and Node.js with Express on the backend. Our database is powered by MongoDB Atlas, and we styled the UI with Tailwind CSS for a clean, responsive design. We used Google OAuth for authentication and integrated Google’s Gemini API to parse receipts and generate spending summaries through custom prompts. We also added pie charts for visualizing category breakdowns, search/filter functionality, and a bank linking UI to showcase our vision for centralized, paperless tracking.

Challenges we ran into

One of the biggest challenges was integrating Google OAuth, as none of us had experience with it. We kept running into vague error messages that made debugging difficult and slowed down our progress. Designing a visually appealing user interface, including creating a custom logo, also took a lot of iteration and effort. On the backend, saving user profile data and linking uploaded receipts to the correct accounts presented some complexity. Calculating demographic comparisons based on user data was another hurdle, requiring extra logic to match users with the right comparison groups. Lastly, integrating Google’s Gemini API was tricky, especially formatting the prompts correctly in JSON and ensuring clean communication between the backend and the API.

Accomplishments that we're proud of

We’re proud that we tackled a real-world problem with practical applications in the fintech space, an industry we’re really interested in. Despite limited experience with React and TypeScript, we built a feature-rich application in a short amount of time. We successfully implemented new technologies like Google OAuth for user signup, complete with profile saving and receipt linking. We learned a lot, pushed our limits, and delivered a fully functional product. Most of all, we’re proud of gaining valuable hackathon experience and working effectively as a team under pressure.

What we learned

We learned how to build and ship a full-stack application under time pressure while keeping quality high. On the backend, we gained experience with MongoDB, learning how to structure data and connect it effectively to our API. We also explored LLM integration by working with Google’s Gemini API, learning how to write effective prompts and return structured, JSON-formatted data. This taught us a lot about how to build GPT-based features and handle AI-generated responses in a real-world app.

What's next for ReceiptMe

Next, we want to fully integrate with banks and vendors so users can automatically link tap payments to ReceiptMe and eliminate paper receipts entirely. We also plan to expand the financial insights we provide, offering more detailed analytics and smarter summaries. On the business side, we’re looking to scale the platform, grow our user base, and improve the quality of demographic insights as more data is collected. Finally, we aim to make our spending categories more granular, giving users a deeper and more personalized understanding of their habits.

Share this project:

Updates