Evally
Trust & safety

Scam message detector

Paste an SMS, email or DM and get the probability it's a scam, and why.

Checks a message for the patterns scams share: pressure to act now, requests for money or codes, impersonation, off-channel links and offers too good to be true. Protect users in your app, or screen inbound messages before a person sees them.

Try it live

Real calls to Jev. Pick an example or paste your own.

Examples
127
No verdict yet

Pick an example or paste your own input, then run it.

Under the hood

Every question and rule, in the open. Fork it to change any of them.

What it asks

Reads message, then asks 7 questions in one call.

  1. Q1Pressure to act nowYes / no

    Does the message pressure the reader to act immediately (account suspended, limited time, final notice)?

  2. Q2Asks for moneyYes / no

    Does the message ask for money, gift cards, crypto or payment details?

  3. Q3Asks for a code or passwordYes / no

    Does the message ask for a password, a one-time code, a PIN or a login?

  4. Q4ImpersonationYes / no

    Does the message claim to be from a bank, a government agency, a delivery company, an employer or a family member in a way the reader can't verify?

  5. Q5Off-channel linkYes / no

    Does the message contain a link or phone number the reader is told to use instead of an official channel?

  6. Q6Too good to be trueYes / no

    Does the message offer a prize, a refund, a job or an investment return that is too good to be true?

  7. Q7Scam overallYes / no

    Taken as a whole, is the message a scam or a phishing attempt?

How it decides

Rules run in code, top to bottom. The first one that matches gives the verdict.

  1. 1
    If Scam overall ≥ 0.75Scam
  2. 2
    If Scam overall ≥ 0.4Suspicious
  3. 3
    If Asks for a code or password ≥ 0.7Suspicious
  4. 4
    If Scam risk ≥ 45Suspicious
  5. ·
    DefaultLooks safe
Scam risk

A 0-100 score weighted from Scam overall ×3, Pressure to act now ×1, Asks for money ×1, Asks for a code or password ×1.5, Impersonation ×1, Off-channel link ×1, Too good to be true ×1.

Call it from your code

Every template runs as-is with an API key, no setup: POST /api/v1/judges/scam-detector/run.

curl -X POST https://tryevally.com/api/v1/judges/scam-detector/run \  -H "Authorization: Bearer $EVALLY_API_KEY" \  -H "Content-Type: application/json" \  -d '{  "input": {    "message": "USPS: Your package is on hold due to an unpaid $1.99 fee. Pay within 24 hours to avoid return: https://usps-redelivery-help.com"  }}'

Seen in the wild

Community builds on Jev that use this pattern. Not affiliated with Evally.

More in Trust & safety