Inspiration
Every group trip ends the same way: a spreadsheet nobody updates and one person chasing everyone for $7.43. We built Tab so the bill handles itself.
What it does
Tab is a trip expense agent you text over iMessage. No app, no account. Send it a receipt photo or "paid $80 for gas," and it logs the expense, splits it (evenly, by person, or by item), and keeps a running tab per person. Anyone can dispute a charge in plain English, and the payer settles it with a receipt or a word. Say "pay" and Tab sends USDC on Solana from a wallet it holds for you, with the transaction link as proof. One daily nudge, no spam.
How we built it
TypeScript and Node on Railway. Photon Spectrum delivers iMessages. Gemini reads receipts and classifies every message into one of a fixed set of actions; it never does the math. A deterministic ledger in SQLite nets balances person to person. Each member gets a custodial Solana devnet wallet, and a treasury pays fees so friends never see crypto.
Challenges we ran into
Making a text thread feel like a conversation, not a command line: no magic words, questions instead of "reply X," and the model handling casual phrasing like "we're done with Cali, everyone Venmo'd me." Keeping money handling deterministic while the language stays loose. Getting iMessage to show rich link cards for invites.
Accomplishments that we're proud of
A receipt photo becomes a split expense in one text. Disputes resolve in two messages. Multiple trips at once, with Tab asking only when it truly can't tell which one you mean. Real on-chain settlement that shows up as a plain "Sent $27.50 to Ayug" with a link.
What we learned
Let the model understand and the code decide. Every time we put a regex in front of the model, a real user broke it within minutes.
What's next for Tab
Mainnet USDC with real on-ramps, Postgres for scale, and smarter receipt item matching.
Your group chat makes the plans. Tab handles the bill.
Built With
- claude
- devnet
- gemini
- imessage
- photon
- railway
- solana
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.