scam-shield
Scam text checker where code extracts link and sender facts, Jev answers eleven narrow questions, and a pure policy scores risk.
Overview
Scam Shield checks a text message for scam signals and turns them into an explainable verdict with rules you control. Code first extracts observable facts: link domains, URL shorteners, risky TLDs, IP links and whether the sender is a phone number, short code or email address. Jev then answers eleven narrow questions in one parallel call, including eight Nouls (such as whether it asks for credentials, requests unusual payment, or has a link that does not match the brand), a pressure Score and a scam-pattern Choice.
A pure policy function combines the judgments and code signals into a weighted risk score, with a floor so any single serious red flag at 90% or above cannot be marked safe; threshold sliders re-score results without new API calls. The key stays on the server behind one Web-standard handler. The README is honest that on 16 hand-written samples it flags 9/9 scams with 0/7 false alarms, but weights were tuned on those same samples, and it warns the hosted demo endpoint has no auth or rate limit.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this message ask for credentials? | — |
| Yes / no | Does the link not match the claimed brand? | — |
| Score | How much pressure does this message apply? | — |
| Choice | Which scam pattern does this message follow? | — |
How it works
- Extract link and sender facts in code
- Ask Jev eleven questions in one call
- Combine into a weighted risk score with a red-flag floor
- Show an explainable verdict; sliders re-score locally
Strengths
- Explainable verdict from named signals
- Threshold changes need no new calls
- Unit tests for parsing and policy without API calls
Caveats
- Accuracy only smoke-tested on 16 samples used for tuning
- Demo endpoint lacks auth and rate limiting
- No licence stated
Getting started
cp .env.example .env.local (add TYPESAFE_API_KEY), then npm run dev; npm run eval runs labelled samples.At a glance
- Type
- Project
- Status
- prototype
- Language
- TypeScript
- Runtime
- Vite app / Vercel Function
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Scam text message filter powered by TypeSafe's Jev model.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Eleven narrow scam signals per message, such as credential requests, payment pressure and brand mismatch.
How accurate is it?
Unmeasured; the README calls its 9/9 and 0/7 result a smoke test on tuning samples.
Can I change sensitivity?
Yes, sliders adjust thresholds and re-score without new API calls.
Related projects
Discord bot where Jev flags spam and scam links in real time, drives an escalating timeout ladder and profiles members.
ProjectbetaPythonDry-run-first Proton Mail Bridge triage on macOS where Jev answers whether each message is spam or phishing.
ProjectbetaPythonReproducible benchmark of Jev vs Claude Haiku 4.5 on 2,000 emails deciding whether an agent should click a link, with calibration audit.
BenchmarkresearchPythonWorkflow design article: one Jev Noul asks whether a domain name refers to a protected brand, with the TLD kept out of the input.
ArticleproductionChrome extension that uses your Jev key to hide high-confidence sexual and solicitation replies on X behind reversible placeholders.
Browser extensionproductionTypeScriptAndroid notification and SMS noise gate: local OTP and blacklist rules first, then Jev decides what is noise, failing open on uncertainty.
ProjectbetaKotlin