Inspiration

What it does

Inspiration

Scam texts and calls hit hardest among people Big Tech's scam filters were never built for: elderly parents, people who read slowly even in their own language, and anyone outside English and a handful of major languages. Google's own Pixel Scam Detection needs Tensor hardware and barely covers regional languages. We built ScamSavior for the person left out: an elderly relative on a mid-range Android phone, reading Tamil or Hausa, targeted by a "your pension is frozen" text they can't easily verify alone.

What it does

ScamSavior scans SMS, RCS, WhatsApp, WhatsApp Business, Telegram, Signal, Instagram, Facebook, Messenger, Samsung Messages, and incoming calls — flagging bank/KYC, lottery, loan/job, OTP-phishing, courier, and digital-arrest scams. Everything runs fully on-device: no server, no account, works offline.

  • 50+ languages, spanning India, the rest of Asia, Europe, and Africa — and the warning itself renders in the reader's own language, not just detection.
  • Spoken voice alerts via text-to-speech, in-language, deliberately slowed down — built for users who read slowly or not at all, the same people scammers target most.
  • Built for senior citizens: large touch targets throughout, a call screener that catches scam calls without ever needing risky audio access (which Android blocks anyway), and a keyword library that explicitly recognizes pension/benefits scams aimed at older users.
  • Analytics dashboard: filterable by date range, channel, country, and scam type — entirely computed from on-device data, nothing new collected.

How we built it

Kotlin native Android app. Chat-app scanning uses Android's Notification Listener — the only technically possible route into encrypted apps like WhatsApp and Telegram — restricted to a strict, auditable allow-list of exact package names so nothing outside those apps is ever read. Detection is rule-based, built from shared scam concepts so the same scam scores identically regardless of language, verified by an automated cross-language parity test. Call risk is scored from number patterns and prior flagged messages, never audio, which Android prohibits third-party apps from accessing entirely.

Challenges we ran into

  • A JVM 64KB method-size limit silently broke the build at 59 languages — fixed by lazy-initializing each language list separately.
  • Chat apps re-post the same notification repeatedly; naive scanning would triple-alert on one message — fixed with a fingerprint + short dedup window.
  • Voice alerts talking over each other, or firing during a call or Do Not Disturb, would erode trust fast — built a strict suppression system (never during calls/music/silent mode/DND, rate-limited to 6/hour).
  • Some languages inherited a parent language's keyword list and double-counted matches — fixed with concept-deduplication.
  • A real bank OTP was flagged as suspicious for containing the word "OTP" — fixed with legitimacy signals that recognize genuine bank language.

Accomplishments that we're proud of

Real multi-channel, multi-language protection that still fits entirely on-device — verified score parity across 41+ languages with zero spread, and zero missed scams across our test corpus.

What we learned

Meeting non-English, less-literate, and elderly users where they actually are — voice, large text, their own language — turned out to matter as much as detection accuracy itself.

What's next for ScamSavior

Ring-time call safety overlay, native-speaker review of lower-confidence languages, and deeper in-app education on scam patterns.

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for ScamSavior

Built With

  • android
  • broadcastreceiver
  • callscreeningservice
  • firebase
  • google
  • kotlin
  • notificationlistenerservice
  • onesignal
  • play
  • revenuecat
  • room
  • sqlite
  • texttospeech
Share this project:

Updates

Submission history