Inspiration
"Friends don't let friends do math." We've all been there: a great dinner ends, the bill arrives, and the mood instantly shifts from joy to awkward mental gymnastics. "Who had the extra soda?" "Should we split the tax evenly?" "I didn't eat the calamari." Existing apps require everyone to download software, create accounts, and navigate complex UIs. We wanted to build something that disappears into the background. We believe technology should serve the moment, not interrupt it. SnapSplit was born from the desire to settle bills as quickly as we snap photos.
What it does
SnapSplit is a zero-friction, web-based bill splitter powered by AI.
Snap & Scan: The host takes a photo of the receipt.
AI Analysis: Our system instantly converts the messy image into a structured, digital item list.
Collaborative Claiming: Friends join a shared room via a simple link (no login required) and tap the items they ordered.
Smart Settlement: The app automatically calculates tax, tip, and splits shared items (like appetizers) or unclaimed items evenly. It then generates a clear "Who owes Who" summary card.
How we built it
We prioritized speed and real-time collaboration:
Frontend: Built with Next.js for a responsive, app-like experience on the mobile web.
AI Engine: We utilized Google Gemini 2.5 Flash. Its multimodal capabilities allow us to parse complex receipt layouts, handwritten notes, and foreign languages with incredible speed and cost-efficiency.
Backend & State: Supabase handles our real-time database, ensuring that when Friend A claims a burger, Friend B sees it instantly on their screen.
Design: We adopted a "Human-First" design philosophy—warm colors, organic shapes, and a focus on social connection rather than cold transactions.
Challenges we ran into
The "Hallucination" of AI: Early on, the AI would sometimes mistake a credit card footer for a menu item. We had to refine our System Prompts and implement logic validation (e.g., checking if item prices sum up to the subtotal) to ensure financial accuracy.
Domestic networks cannot directly connect to LLMs: Switch to server-side forwarding calls.
Real-time sync causing duplicate entries: Implement deduplication on the frontend.
Mobile layout adaptation: Optimize amount input, buttons, and delete actions for better usability on small screens.
Accomplishments that we're proud of
The "No-Install" Experience: We successfully built a full-featured web app that feels native but lives in the browser.
Gemini Integration: We achieved a parsing accuracy rate that handles crumpled receipts and low-light photos surprisingly well.
The Design Vibe: We moved away from the cold "spreadsheet look" of competitors and built an interface that feels friendly and warm (Coral & Teal palette), making the act of asking for money feel less transactional.
What we learned
Prompt Engineering is Engineering: Getting structured JSON consistently from an LLM requires as much rigor as writing the code itself.
User Psychology: Users don't want 100% precision if it takes 10 minutes; they want 99% precision in 10 seconds. Speed is the feature.
Less is More: We cut features like "User Accounts" and "Payment Processing" to focus entirely on the core loop of "Scan -> Split -> Done."
What's next for SnapSplit
Payment Deep Links: Direct integration to open Venmo, CashApp, or WeChat Pay with the exact amount pre-filled.
Multi-Currency Support: Using Gemini to detect currency symbols and potentially offer real-time exchange rates for travel groups.
Smart History: Using local storage to remember "Who you usually eat with" to make joining rooms even faster.
Built With
- cloudflare
- css
- gemini
- next.js
- react
- supabase
- tailwind
- typescript
- vite
- web
Log in or sign up for Devpost to join the conversation.