Inspiration

Scams are getting more convincing: fake bank calls, fake job offers, fake delivery fees, "family in trouble" messages. Most scam detectors only say "scam" or "safe". But a person under pressure doesn't need a label. They need to know why something is suspicious, which claims can't be trusted, what to check, and what to do next. We built Veridex AI around one idea: Claim → Evidence → Verification → Safe decision.

What it does

You paste a suspicious message or link, and Veridex AI:

  • Extracts the claims the message makes and marks each one UNVERIFIED when no independent evidence is given
  • Detects manipulation tactics: authority impersonation, fear/threat, urgency, secrecy, OTP/credential requests, financial pressure, reward/lure
  • Shows the attack pattern, for example Authority → Fear → Urgency → Financial action
  • Gives an explainable risk score, where every point traces to a named factor (no black-box percentage)
  • Checks links for red flags such as no HTTPS, raw IPs, shortened links, throwaway domains and look-alike characters
  • Gives verification steps through an independent channel (the official app, the number on your card), never the contact details in the message
  • Asks "what would need to be true for this to be legitimate?" as a checklist: if it can't be confirmed, do not act
  • Gives a Do / Don't plan, including India's reporting route (cybercrime.gov.in, helpline 1930)

It never claims certainty. It says things like "multiple high-risk indicators and could not be independently verified."

How we built it

  • Rule-based engine (Python): weighted tactic detectors, claim extraction, link analysis and the explainable score
  • ML classifier (scikit-learn): TF-IDF + logistic regression trained on the public SMS Spam Collection (UCI, via Kaggle), shown as a second opinion next to the rule-based score
  • Streamlit for the interface, Plotly for the risk gauge, deployed on Streamlit Community Cloud

Results (held-out test set, 1,034 messages)

Threshold Accuracy Precision Recall Missed scams
0.5 98.5% 96.7% 90.8% 12
0.3 97.5% 87.2% 93.9% 8

For security, a missed scam is worse than a false alarm, so we report both operating points.

Challenges

  • Data mismatch: the public dataset is general SMS spam, not Indian bank, UPI or job scams, so the classifier can score real scams low. We combined it with rule-based checks and label the ML output as a second opinion, not a verdict.
  • Explainability: we wanted a score people can understand, so every point of risk is tied to a named factor.
  • Deployment: getting the app running on Streamlit Cloud needed fixes to the Python version and dependencies.

What we learned

Explainability matters as much as accuracy for people who aren't security experts, and honest reporting of limits (and of false negatives) builds more trust than a high number.

What works and what doesn't

Works: rule-based analysis of pasted messages and links, explainable scoring, verification steps, checklist, action plan, and the ML classifier with real test-set metrics. Limits: general SMS dataset, English only, keyword-based rules that can miss new wording, no LLM layer yet, no screenshot or voice input. It is a decision-support tool and cannot confirm whether something is a scam.

What's next

India-specific scam data (UPI, KYC, fake jobs, customs), LLM-based claim extraction, screenshot input, Hindi and Marathi support, a family mode for elderly users, and an "I already acted" recovery panel.

Share this project:

Updates

Submission history