Inspiration

Every budgeting app I've tried has the same flaw. When I overspend, the only person who finds out is me, and I'm the one person who has already decided not to care. I ignore the notification, close the app, and order DoorDash again.

The thing that does change my behavior is my friends. I'll skip a purchase I'd make alone if I know someone's going to give me grief about it. Personal finance tools almost never use that kind of social accountability, so I built the most aggressive version of it I could think of.

The Snitch watches your bank account, and when you blow your budget, it texts your group chat.

What it does

  • Text the bot snitch on me and you get a personal account plus a "card" link you can swipe on your phone.
  • Set weekly budgets by category (budget food 40), or let it pick defaults for you.
  • Every purchase runs through a rules engine. Go over budget, order from the same place three times in a week, or buy Taco Bell at 2am, and the bot posts a roast in your linked group chat with the exact damage.
  • The roasts escalate. The first offense gets a disappointed parent, then a sports commentator, then an official press release.
  • appeal <excuse> puts your case in front of an AI judge, who almost always denies it.
  • report (or Sunday at 6pm) delivers a weekly roundup of your worst decisions.
  • A live Wall of Shame on the website shows offenses as they happen.

How I built it

The whole thing runs as a single Bun + TypeScript process deployed on Railway:

  • Capital One Nessie API provides the banking layer. Each user gets a real sandbox customer and credit card account, and purchases are real Nessie transactions. A poller watches every account, and the swipe page also processes purchases immediately so the demo feels instant.
  • Photon's Spectrum framework puts the bot in iMessage. It's a participant in your existing group chat, not a web app sending SMS.
  • A deterministic rules engine decides whether to snitch. For budgets, severity scales with how far over you are. With weekly spend $S$ in a category and budget $B$:

$$ \text{severity} = \begin{cases} 1 & 1 \le \frac{S}{B} < 1.5 \ 2 & 1.5 \le \frac{S}{B} < 2 \ 3 & \frac{S}{B} \ge 2 \end{cases} $$

Streaks, late-night purchases and large one-off purchases are their own triggers, and each trigger type has a cooldown so the bot doesn't get muted by your friends.

  • Gemini decides how to snitch. My code inserts the dollar amounts and counts through a template, and the model only writes the roast around them, so it can never invent a number.
  • Neon Postgres stores users, budgets, offenses and appeals. Hono serves the landing page, the Wall of Shame and the swipe panel.
  • I planned the architecture and brainstormed personas in Notability.

Challenges I ran into

  • Keeping the LLM away from the math. Early roasts got dollar amounts wrong just often enough to wreck a demo. Splitting the work so code owns every fact and the model owns only the jokes fixed it.
  • No webhooks from Nessie. I had to poll and dedupe purchases. Nessie dates are also date-only, so I record my own detection timestamp to make late-night roasts possible.
  • One process per iMessage line. Only one instance can hold the Photon connection at a time, so I had to be careful switching between local development and the deployed server.
  • Making roasts actually funny. Wiring up the pipeline was the easy part. Rewriting few-shot examples until the roasts were funny instead of cringe took longer than any integration.

What I learned

  • Splitting decisions between deterministic code and an LLM makes AI features far more reliable than prompting harder.
  • Building on a messaging platform changes the design. There's no UI to hide behind, so every message has to earn its place in someone's group chat.
  • Mocking every external dependency from the start meant a slow or flaky API never blocked me, which mattered a lot building solo in 24 hours.

What's next

  • Real bank connections through Plaid instead of the Nessie sandbox
  • Group budgets for roommates, so the chat can roast everyone at once
  • A "redemption arc" mode where the bot brags about you to the group when you stay under budget

Built With

Share this project:

Updates

Submission history