Inspiration

Splitting receipts with friends is still surprisingly messy. People constantly end up using calculators, notes apps, or sending confusing messages like “you owe me around $12… I think.” Current apps oversimplify the problem by assuming everything is split evenly, but real life is more complicated. Some people share only certain items, some front the bill for everyone, and partial payments happen all the time. We wanted to build something that actually reflects how people split expenses in the real world, while also helping users become more aware of their spending habits. The idea evolved into a mobile-first product that combines receipt scanning, social IOU tracking, and intelligent financial insights in one clean experience.

What it does

The app allows users to scan a receipt and automatically extract items, prices, tax, and totals using AI-powered OCR. Users can assign items to specific people, split shared items fairly, and track running balances across friends or groups. The product supports realistic scenarios like multiple payers, partial payments, shared appetizers, and guests without accounts. Built-in payment integrations allow users to settle balances quickly through Tap to Pay simulation, Stripe Payment Links, or deep links to apps like Venmo or PayPal. On top of splitting expenses, the app provides intelligent insights such as spending patterns, recurring purchases, and reminders for payments or deadlines, helping users make smarter financial decisions over time.

How we built it

We designed the app as a full-stack mobile product using React Native with Expo for the frontend and a Node.js TypeScript backend. MongoDB is used as the primary database because receipt data and split relationships have flexible nested structures that work well with document-based storage. Redis is used selectively for caching summaries, preventing duplicate notifications, and maintaining fast temporary split state. Docker ensures the backend environment is reproducible and easy to run locally or demo live.

For receipt parsing, we integrated the Claude Vision API to convert receipt images into structured JSON containing store information, line items, and totals. The most technically challenging component was the split engine, which calculates each participant’s share while handling complex edge cases such as proportional tax distribution, partial settlements, and rounding consistency so that totals reconcile exactly. We also implemented a polished mobile UI inspired by Cash App and Apple Wallet, focusing on strong typography, clear hierarchy, and smooth micro-interactions using React Native Reanimated.

Challenges we ran into

One of the main challenges was modeling real-world bill splitting accurately. Many edge cases arise when different participants share different items, pay different amounts upfront, or settle balances partially over time. Ensuring mathematical consistency while keeping the interface simple required careful data modeling and iterative testing. Another challenge was designing OCR parsing that remains reliable despite variations in receipt formatting. We built a correction flow that allows users to quickly adjust extracted values when the OCR output is imperfect.

Balancing speed and polish was also difficult in a hackathon setting. We wanted the app to feel like a credible startup MVP rather than a quick prototype, so we prioritized strong architecture boundaries, reusable UI components, and a consistent design system. Integrating payment flows in a way that felt realistic while still being demo-friendly required simulating Tap to Pay interactions while still creating real Stripe PaymentIntents on the backend.

What we learned

We learned how complex shared financial interactions can be and how important thoughtful UX is when building tools that people rely on for money. We also gained experience designing scalable backend architecture with clear service boundaries, implementing AI-powered structured extraction pipelines, and building highly interactive mobile interfaces. Most importantly, we learned how to translate a real everyday problem into a polished product that combines AI, fintech, and social design into one cohesive experience.

Built With

Share this project:

Updates