-
-
Paste a suspicious message or link. Veridex AI returns a risk level, a score, the claims found, and the tactics used against you
-
Explainable score: every point has a named reason, plus an ML second opinion and the likely manipulation sequence.
-
Each claim is extracted and marked UNVERIFIED because the message gives no independent evidence.
-
Verification steps always use an independent channel, never the contact details inside the message.
-
Legitimacy checklist ("if it can't be confirmed, don't act") and a Do/Don't plan with India's 1930 helpline.
-
ML classifier on 1,034 held-out messages: 119 scams caught, 12 missed, 4 false alarms (threshold 0.5).
-
The Veridex pipeline: Claim → Evidence → Verification → Safe decision.
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.
Built With
- cybersecurity
- machine-learning
- natural-language-processing
- pandas
- plotly
- python
- scikit-learn
- streamlit
Log in or sign up for Devpost to join the conversation.