Inspiration

Splitting the bill after a group dinner is always awkward. One person pays, someone squints at the receipt, and everyone argues over who had what and how to share tax and tip. The group chat is already open, so we wanted it to do the math.

What it does

Vizs is an iMessage bot that splits restaurant receipts. Text it a photo of the receipt and it: Reads the receipt with Grok vision and lists every item with its price. Asks how many people are splitting. Lets you split by item, with each person replying with what they ordered ("Alex: 1, 3"), or by percentage ("50 30 20", or "even"). Splits tax and tip in proportion to what each person ordered, divides shared items evenly, and handles anything nobody claimed. Posts a summary of what everyone owes and who to pay back. It ignores photos that aren't receipts. If a receipt is too blurry or cut off to read, it asks for a better photo.

How we built it

Language: TypeScript on Node.js. Messaging: Photon's Spectrum SDK connects the bot to iMessage, receiving messages over a live stream with no webhook server. Vision: Grok reads the receipt photo and returns structured JSON with the items, tax, tip and total. Process: We used Claude Code with git worktrees and four AI agents working in parallel, one each on receipt reading, the conversation flow, the split math and the Photon integration. We agreed the shared interfaces up front, then merged everything into one bot.

Challenges we ran into

Group chats: Photon's shared-number plan delivered direct messages to the bot but not group chat messages, so it works in 1-on-1 chats for now. Group chats need a dedicated Photon line. Rounding: splits have to add up to the exact cent, so we did all the math in whole cents and hand out leftover pennies fairly. Reading receipts reliably: Grok sometimes read the same receipt slightly differently, so we added checks for receipt totals that don't match. Busy group chats: the bot had to understand loose replies without answering every message in the chat. Accomplishments that we're proud of It works end to end on a real phone: photo in, split summary out, in an iMessage chat. Two ways to split (items or percentages), with support for undo, names and shared items. The four parallel pieces merged without conflicts and are covered by 75 automated tests.

What we learned

We learned how to build on Photon's iMessage platform and use Grok for image understanding. We also learned how much faster a project goes when you design the interfaces first and let several AI agents build the pieces at the same time. Testing on a real phone surfaced problems that automated tests didn't catch.

What's next for Vizs

Get a dedicated Photon line so it works in group chats. Payment links (Venmo or Cash App) in the summary. Uneven splits of a single item (like 70/30). Remembering friends' names between dinners.

Built With

Share this project:

Updates

Submission history