Inspiration
I always wanted to bet with friends on random stuff, with an objective AI rating the odds. "Will friend A eat more than 3 meals today?" I'd bet YES, because I know he gets extra queso, extra guac on his chipotle bowls.
What it does
*Sidebet is an AI bookie in your ishi for your group chat.
- Trash talk → markets. Type
!fore graduating?, or Sidebet spots a bold claim ("👀 Sounds like a bet") and offers to open it. - Odds with receipts. Claude red cites it: "80%: the chat calls him 'climbing master shifu' (Aug 4)."
- Live action. Bet with
!yese odds, payouts and who's in, plus aKalshi-style chart. - Reacts like a friend. Real evsquat") gets a call-out on whose bet just got better or worse. Notable bets get tagged: *first in, all in, betting on themselves, fading the room.
- Mirrors Kalshi. Public events use live Kalshi odds and settle automatically.
- Settles up. Posts everyone's In real-money mode, it DMs Venmo /Cash App links and reminds people until the winner confirms.
- Guardrails keep it off sensitoom for banter.
How we built it
- iMessage: Photon's Spectrum Sdebet's own Apple ID, so it textsfrom its own number.
- Backend: TypeScript on Node 2, bets, wallets and history.
- AI: Claude Opus 5.5 with structured outputs. It reads each group's history once and writes a dossier plus per-person profiles, sxt{K}$ tokens instead of $\sim115\text{K}$ ($\sim 10\times$ less, a couple of cents per market). The same model watches the chat to suggest markets and react to evi
- Odds: Claude's opening guess $p_0$ counts as $W$ coins already in the pot, so real bets move the odds without slamming them to $ $$p_{\text{yes}} = \frac{p_0 W + Y}{W + T} \qquad (Y = \text{money on YES},\ T = \text{total pot})$$
- Real markets: Kalshi and Polymarket APIs. Claude checks that a Kalshi market matches on team, threshold and deadline.
- Visuals: SVG → PNG charts with resvg, in Inter (the closest open match to Kalshi's proprietary font).
- Payouts: parimutuel, settled in the fewest payments: $$\text{payout}_i = \frac{s_i}{S_xt{total}}$$
Challenges we ran into
- Its own identity. Moving the t meant a separate macOS user,getting past Apple blocking web sign-ups, and handling the same group having a different chat ID on each account. We built a data-miat imports history from my account.
- Time zones. The AI thought it was 8:45 am at 4:45 am, because timestamps reached Claude in UTC. Everything it reads is now loc
- iMessage limits. No scripted tapbacks, no rich link previews, no Apple Cash API. We designed around all three.
- AI judgment. In a model comparison, the smallest model treated a joke ("he really thinks he's gonna squat 315 lmao") as evicurate model.
- Friends found bugs: mistyped commands (
!close yesnow settles), unwinnable solo bets (now explained), fractional payouts (nowchart slopes (now steps at each bet), and self-resolved markets.
Accomplishments that we're proud of
My friends played it without me asking, and had a blast. Seeing people use something you made is the best feeling.
- *Odds people argue with, then beur months of 'gonna learn,' zero pool time") make it fun.
- **It feels like a friend in the cation, not just commands.
- Kalshi markets settle themselves.
- **It's live in our real group chath months of history behind everymarket.
What we learned
- Context engineering beats prompt tweaking. A compact dossier made odds faster, cheaper and better.
- Every message should say what to type next, or people get stuck.
- **Model choice is a product decisisible to the whole group, accuracywins.
What's next for Sidebet
- An automated market maker, so every bet has someone to win from.
- Fair resolution: group votes with Claude proposing the outcome.One friend resolved his own "do I have the most aura?" market YES.
- More platforms: Spectrum alsoam and Slack.
- Real Kalshi trading and Apple Cash requests, further off. Play money works for now.
- Weekly auto re-scans to keep
Built With
- anthropic-api-?-odds
- bets
- claude-opus
- database
- demo
- dossiers
- ffmpeg
- html5
- mirroring
- node.js
- photon
- photon-spectrum
- polymarket-api-?-real-market-search
- reactions
- reasons
- rendering
- sqlite
- svg
- tsx-?-the-bot-(node-26
- typescript
- video
- wallets
- zod-?-typed-ai-responses-(odds
Log in or sign up for Devpost to join the conversation.