Inspiration

Phishing, fake bank and KYC calls, "digital arrest" threats and UPI/payment scams hit people in every country. News reports regularly describe victims losing lakhs to crores. Two things kept bothering me: a victim usually cannot tell whether a number or link was already reported, and local crime news is scattered across many websites, so ordinary people never see it when it matters. I wanted one simple, free, privacy-friendly app that helps a person stay safe before something happens.

What Sajag does

1. Scam checker. Paste any suspicious SMS, WhatsApp message or email. Rule-based screening flags known scam patterns (urgency, fake authority, payment requests, suspicious links). An AI model then gives a second opinion: a verdict (scam / suspicious / likely OK), a confidence score, short reasons, a check of the claimed company, and clear next steps. It can also draft a cybercrime complaint.

2. Community scam database. Anyone can anonymously report a scam phone number or website with a category. Before you reply or click, you can look up whether others already reported it. A trending list shows the most reported scams in your country over the last 7 days.

3. Live crime and scam news for my area. When you set your location (GPS or typed), Sajag pulls the latest news from Google News, newest first, with real timestamps like "2 hrs ago". You can filter by last 6 hrs, 16 hrs, 24 hrs, 7 days or 30 days, and by whole city or just your neighbourhood. AI reads the headlines and tags the incident type (chain snatching, robbery, cyber fraud and more), the place, and the time of day. Every item links to its source, and the list refreshes by itself every few minutes.

4. Safe route. Enter a destination. Sajag finds route options, reads the road names on each, and searches the news for crime reported on those roads. It suggests the route with the fewest recent reports and shows the actual headlines per road, so you can see what is happening on the way, not just a score.

5. Community crime radar. Users can anonymously report thefts, snatching or harassment. Reports appear on a radar within 10 km, and the app shows how many happened nearby and at what time of day.

6. One-tap SOS. Sends your live location to up to 5 trusted contacts, and shows local emergency numbers for 53 countries.

Works worldwide

Set any city: emergency numbers cover 53 countries and live news comes from Google News editions in 14 countries. It was built in India, but it is made for anywhere.

How I built it

  • Frontend: a single static HTML/CSS/JavaScript app (no framework), mobile first, hosted on Netlify.
  • Backend: FastAPI (Python) on Render.
  • Database: Supabase (PostgreSQL) for community reports and a news cache.
  • News: Google News RSS, with Bing News and GDELT as backups.
  • AI: an LLM (Gemini, or Claude if configured) to judge messages and extract incident details from headlines.
  • Maps and routing: OpenStreetMap (Nominatim) and OSRM.

Security and privacy by design

  • Only the number or website, the category and the city are saved. Names and message text are never stored.
  • Crime locations are rounded to about 1 km. Users are identified only by a random anonymous browser ID.
  • Message text is treated as untrusted input: the AI is told never to follow instructions inside a scam message (prompt-injection defence).
  • Secret keys live only on the backend, the database is locked with Row Level Security, and every endpoint is rate limited.
  • The app is honest about its limits: no news does not mean a place is safe, and AI output can be wrong, so every item links to its source.

Challenges

  • Fresh, reliable news. My first news source kept returning nothing from the cloud server. I moved to Google News RSS, added two backup sources, and built a fallback that fetches news straight from the user's browser.
  • Bad place names. GPS sometimes returns administrative codes like "M/E Ward", which no news site uses. I filter these out and search real neighbourhood names.
  • Matching news to roads. Newspapers write "LBS Marg", not "Lal Bahadur Shastri Marg". I generate short aliases so road-level news is not missed.
  • Free AI limits. Each headline is judged only once and cached, and if the AI is busy a keyword classifier keeps the app working.
  • Privacy versus usefulness. Getting useful local alerts while storing almost nothing about the user.

What I learned

Real-time data is messy: sources block servers, names differ, and freshness matters more than volume. I also learned to design for failure, with backups at every step, and to show users honest uncertainty instead of false confidence.

What's next

More languages, more news editions, push alerts when a new incident is reported near you, and direct links to each country's cybercrime reporting portal.

Built With

Share this project:

Updates

Submission history