Independent product / ScamCheck
A suspicious link. An explanation you can act on.
Threat intelligence, URL heuristics, and AI explanation come together in a plain-language link checker.
Solo full-stack build, API integration & deployment
Deployed web app
The result you can inspect
AI findings can add risk. They cannot lower the score established by deterministic sources.
System overview
How the pieces connect.
- 01
Gather evidence
Threat feeds and URL heuristics run concurrently.
- 02
Add interpretation
AI identifies social-engineering signals.
- 03
Enforce the boundary
Risk can increase, but AI cannot downgrade it.
A simplified view of the documented architecture.
The short version
Context before code.
The problem
Non-technical people get caught by phishing and scam links every day and have no trustworthy, fast way to verify a URL before clicking or handing over personal and payment details. Existing tools are either too technical or buried in security-vendor dashboards. ScamCheck gives a plain answer in seconds — and teaches users what makes a link suspicious so they get better at spotting scams themselves.
What I built
Three deterministic sources run concurrently and aggregate into a single 0–100 risk score with documented thresholds: Google Web Risk (Google's live phishing/malware blocklist), VirusTotal (verdicts from 70+ engines), and in-house heuristics with no external call — newly-registered domains via WHOIS, leetspeak-aware typosquatting by edit distance, raw-IP hosts, excessive subdomains, expanded URL shorteners, abused TLDs, punycode/homograph characters, embedded-credential tricks, and invalid HTTPS certs. When the user pastes the surrounding message, a fourth AI source flags social-engineering patterns. The defining design choice is the guardrail: AI can only escalate risk, never downgrade it — enforced mechanically through the scoring math (AI findings carry non-negative weights and the model never emits a standalone 'safe' verdict), not by trusting the model. Sources that are down or rate-limited are reported as unavailable rather than failing the request, and a clean result says 'no known threats found,' never 'this link is safe.'
What it demonstrates
A working, deployed consumer tool that proves out a multi-source detection pipeline with a genuinely safe AI integration — one where the LLM adds insight and plain-language explanation without ever being able to overrule the deterministic threat data. It demonstrates applied LLM engineering with hard guardrails, real third-party API integration, and explicit abuse and cost controls, not a prompt-wrapper demo.
For a closer look
The decisions behind it.
Tools used on this project
- React 18 + Vite
- TypeScript
- FastAPI (async)
- Anthropic Claude (Haiku 4.5 + Sonnet 4.6)
- Google Web Risk API
- VirusTotal API
- Upstash Redis
- Threat heuristics (WHOIS, homograph, typosquatting)
- Vercel serverless