Inspiration

Most of us know someone who has forwarded a message to the family chat asking "is this real ah?" By the time someone replies, the link may already have been clicked. Scam advice exists, but it isn't there in the moment of doubt, and it's hardest to reach for the people who need it most: older and less tech-savvy residents.

We noticed that what actually stops a scam is often a second opinion from someone else. So we built SafeKaki ("kaki" is Singlish for buddy). It checks a suspicious message right away, and when the answer isn't clear, it connects you with real people who help you decide. That turns individual uncertainty into shared community awareness.

What it does

1. Identify: check a message

  • Paste it, forward it to the Telegram bot, send a screenshot, or speak it.
  • It understands English, Singlish and mixed languages.
  • It gives one of three results: 🔴 High risk, 🟠 Suspicious or 🟡 Not enough evidence. It never says "safe", because no tool can promise that.
  • It highlights the risky phrases, explains why, and gives clear next steps.

2. Discuss: Kaki rooms

  • If you're still unsure, tap 🗣 Ask Kakis. Kakis are users who have chosen to help others.
  • SafeKaki hides names, phone numbers, NRIC, card and bank numbers and OTPs, and makes links unclickable. You see exactly what the Kakis will see before the room opens.
  • Up to 8 Kakis are pinged. Everyone appears as a made-up name ("Asker", "Kaki 1"), so nobody's Telegram name or number is shown.
  • People chat, vote (🚩 Scam / 🤔 Not sure / ✅ Looks real) and leave. Everyone then gets a summary with the vote count, key points and next steps, and the chat is deleted.

3. Respond: act on it

  • 🚨 I got scammed: urgent steps first if you've already sent money or shared an OTP.
  • 📝 Report: prepares a scam report for you to check and submit yourself. Nothing is sent automatically.
  • 🔒 Warn family safely: hides private details and gives you a ready-to-send warning message.

How we built it

  • One Node.js / Express server with a single checking engine, shared by a React (Vite + Tailwind) website and a Telegram bot.
  • AI with a fallback: with an API key, an LLM (Anthropic) reads Singlish and screenshots more accurately. Without one, SafeKaki runs in rules-only mode, so it never stops working.
  • Screenshots: the text is read by AI vision, or by tesseract.js offline OCR as a fallback. The user checks the words before anything is analysed. Images are never saved.
  • Redaction: a rules engine built for Singapore formats (NRIC, +65 numbers, HDB addresses, names like "Mr Tan Ah Kow"), with an optional AI pass that only ever sees already-cleaned text.
  • Safety in code, not just in prompts: the room verdict is worked out in code, so "Looks real" votes can't override a High risk result. AI-written summary points that sound reassuring ("safe", "legit") are filtered out.
  • Abuse protection:
    • rate limits on checks, rooms and room messages
    • at most 6 people per room
    • 2 reports remove a person, and they can't rejoin
  • Privacy: room chats live only in memory and are deleted when the room closes. Only Kaki IDs (who opted in) and anonymised summaries are saved.
  • Tested: 79 backend tests and 23 UI tests.

Challenges we ran into

  • Telegram bots can't create group chats. We built rooms as a relay instead: each person talks in their own private chat with the bot, and the bot copies messages between them with made-up names.
  • What if scammers join as Kakis? We designed for it. Votes can never turn a High risk result into "safe", summaries never

Built With

Share this project:

Updates

Submission history