Inspiration
After a group meal, one person often gets stuck decoding the receipt, remembering who ordered what, splitting the tax, and asking everyone to pay. Equal splits can feel unfair, while calculating every person’s share manually is tedious. We wanted to make settling up easier, clearer, and less awkward.
What it does
Project SplitWise turns a receipt photo and simple allocation instructions into an itemized split. For example, a user can say, “Maya had the pasta, Omar had the drinks, and the rest was mine.” AI extracts the receipt details and applies the instructions. The app shows what each named person owes, including their proportional share of tax on taxable items. The organizer can then create separate PayPal invoices for named participants and check invoice status in chat. Items assigned to “self” are not invoiced.
How we built it
We built the conversational interface and receipt experience with Next.js and TypeScript. A Rust and Axum backend sends receipt images and allocation instructions to a configured AI model, saves structured receipt data in PostgreSQL, and connects to the PayPal Invoicing API. Docker Compose runs the frontend, backend, and database together; PayPal Sandbox is used for the demo.
Challenges we ran into
Receipt images and allocation instructions are unstructured, but financial calculations need predictable, validated data. We had to handle missing receipt fields, distinguish taxable from non-taxable items, and calculate tax shares consistently. Integrating with PayPal also required handling API validation and avoiding duplicate invoices when a request is retried. One issue we addressed was preventing a past receipt date from being interpreted by PayPal as a scheduled invoice date.
Accomplishments that we’re proud of
We connected the flow end to end: upload a receipt, describe who had what, see a person-by-person breakdown, and create itemized PayPal invoices. We’re especially proud that tax is allocated proportionally across taxable items rather than split blindly, and that items assigned to “self” are excluded from invoices.
What we learned
AI extraction is only useful for financial workflows when its output is structured and checked. We also learned that seemingly small details—like tax rules, date validation, and retry behavior—matter when turning a calculation into a real payment request. Clear itemization helps make the result understandable, not just convenient.
What’s next for Project SplitWise
- Let users correct extracted items and reassign them before sending invoices.
- Match each named person to their own verified PayPal recipient details.
- Support tips, discounts, multiple tax rules, and additional currencies.
- Expand testing and improve recovery when an external invoice request fails.
Built With
- artificial-intelligence
- axum
- docker
- docker-compose
- expense-splitting
- multimodal-ai
- next.js
- paypal
- postgresql
- react
- rust
- sqlx
- typescript
- z.ai