Inspiration

Americans reported losing a record $15.9 billion to fraud in 2025, and nearly half of it, $7.9 billion, went to fake investments. Text messages were the most common way scammers made first contact.

Most people know someone who almost fell for one: a grandparent who got the "I'm in jail, don't tell Mom" call, a friend who "invested" through a crypto group chat, a parent who got a perfect copy of their bank's text. The advice afterward is always the same list of tips. Tips don't work, because scams don't feel like scams while they're happening. They feel urgent, official and personal.

So we built the opposite of a tip sheet: a place where you get scammed, safely, by scams written for you.

What it does

You pick who you are today: Rosa, 71, a retired cafeteria manager who reads best in Spanish; Priya, 19, a first-gen college student learning to invest from videos; Linh, 34, an ER nurse who sends money home; or Devon, 58, just laid off and rolling over his 401(k). Scammers choose targets on purpose, so each person gets different scams.

Then the phone starts buzzing. Over one in-game day you get six messages:

  • Scams written by Gemini for that person, covering all three areas of next-generation finance: a fake ETF with "guaranteed" monthly income, a fake tokenized real-estate fund that wants you to connect your wallet, and an AI trading bot or an AI voice-cloned family emergency.
  • Real messages mixed in, so the game trains judgment instead of paranoia. Reporting everything costs points, just like ignoring your real bank costs you in real life.

For each message you can report it, trust it, or reply. Replies go to Gemini playing the scammer, who escalates pressure and deflects every attempt to verify, the way real scammers do. A live pressure meter shows it happening.

Partway through the day, the phone rings. Answer and you hear a frightened grandson or a calm "bank fraud officer," voiced by ElevenLabs, sounding like a real phone line, with live captions. Hang up, talk back, or do what they say.

Trust a scam and the money really leaves. Each player gets a real Capital One Nessie sandbox checking account, and paying a scammer runs as a peer-to-peer transfer to a "scammer" account. The balance drops, and then the message lights up: every red flag is swiped with a highlighter and explained in plain language, along with how to check safely next time.

The debrief shows which persuasion tactics worked on you (rush, fake authority, too good to be true, odd payment methods, secrecy, friendly faces, fear of missing out, tech jargon, lookalike senders), a personal coaching note from Gemini, three habits to keep, and where to report fraud for real.

With Nessie connected you can also play as your own bank customer: Gemini reads your sandbox account's recent purchases and works them into the scams, showing how leaked transaction data makes targeted fraud more convincing.

How we built it

  • Frontend: React 19, Vite and Tailwind CSS 4. One phone UI with an inbox, message view, chat thread and incoming-call screen.
  • Backend: Node and Express, one process serving the API and the built site.
  • Google Gemini has three jobs. It writes each day's inbox as structured JSON from a schema (sender, channel, body, scam type, tactics, red flags with exact quotes, signs that a real message is real, what the scam would take, and how to verify). It plays the scammer in live chat. It writes the personalized debrief.
  • ElevenLabs voices the phone call, voicemail and read-aloud in the player's language. Every type of caller has its own voice, and scripts carry performance tags like [panicked], [whispers] and [crying]. We built a telephone filter with the Web Audio API (300 to 3,400 Hz band, compression, faint line hiss) so calls sound like a cell call, not a studio. Call audio is fetched when the round starts, so it plays the instant you answer.
  • Capital One Nessie creates a customer and checking account for each player, records everyday purchases, and turns every scam payment into a real P2P transfer.

The part we're proudest of technically: Gemini's output is verified, not trusted. Every red-flag quote must appear character for character in its message, or it's dropped. A scam with no verifiable red flags is thrown out. If Gemini forgets the phone call, we inject one. If a model or request is rejected, the server falls back to simpler requests and other models, and if Gemini is down entirely, hand-written scenario packs take over. The built-in calls even ship pre-recorded with Kokoro, an open-source neural voice model, so they sound human with no internet at all.

Responsible design

  • Everything is fictional. Prompts forbid real companies, apps, coins and URLs, phone numbers use the 555-01XX range, and links are plain text that can't be clicked.
  • Victim-side only. Gemini writes what a target would see, never instructions for running a scam. Legitimate senders never roleplay.
  • Accurate, not alarmist. Explanations state the general rule (the SEC never approves investments, banks never ask you to move money to a "safe account," no court takes gift cards) at a 6th-grade reading level.
  • Privacy. Chat text is only used to write the scammer's next reply. Nessie is a sandbox, so no real money or accounts are ever touched.
  • Built for the people scammers target most. Older adults, people with low vision and non-native speakers: Atkinson Hyperlegible type (designed by the Braille Institute for low-vision readers), text up to 150%, high contrast and reduced motion modes, read-aloud for every message, live captions on every call, full keyboard and screen-reader support, and scams generated in 10 languages, because scammers target communities in their own language.

Challenges we ran into

  • Getting an LLM to quote its own text exactly. We solved it with a schema, an explicit rule, and a matcher that tolerates curly quotes and whitespace before dropping anything that still doesn't match.
  • Making the scammer chat realistic without making it a how-to. The model only plays the sender, only uses the fictional details already in the message, and gives up after repeated refusals.
  • Making the call not sound like AI. A flat narrator voice ruined the moment, so we added per-caller voices, emotion tags, the telephone filter and a ringtone.
  • Balancing difficulty. An inbox that is all scams is solved by reporting everything. Mixing in real messages and charging points for false alarms is what makes it a game about judgment.

Accomplishments that we're proud of

  • The moment the phone rings mid-game and a voice that sounds like family asks for help.
  • The highlighter reveal: seeing exactly which words fooled you lands harder than any list of tips.
  • A demo that cannot break: every integration has an offline fallback, down to pre-recorded call voices.

What we learned

  • A fake ETF, a fake tokenized fund and an AI voice call all run on the same handful of persuasion tactics. Teaching the tactics carries over better than teaching individual scams.
  • Designing for the most targeted users first made the product better for everyone.

What's next for ScamBait

  • Weekly "scam of the week" drills based on real FTC and FINRA alerts.
  • Family mode: send a custom ScamBait day to a parent and get notified if they fall for it.
  • Partnering with banks and brokerages to offer it at account opening, when new investors are most exposed.

Built With

Share this project:

Updates

Submission history