Scam detection

Scams have a shape, even when every sentence sounds honest

A landlord abroad, a deposit before the viewing, keys by post. Each is something a real person might say. Together, from the same person, they are the flat that does not exist. ToxicFilter reads offers for those shapes and tells you which parts it found.

How it works

  1. Each part is a phrase family

    A rental scam is the owner who is away, the deposit asked for first, the keys sent without a viewing and a service said to hold the money. Every shape is written as families like these, in eight languages.

  2. One part alone is nothing

    Asking for a deposit is what honest landlords do. A family on its own is never a finding; the score comes from how many of the shape's parts the same person wrote.

  3. The same person, across the conversation

    Scams arrive in instalments. In a conversation, the scam-shape detectors read every message by the author being judged, so the affection on Monday and the money request on Friday are read together. The reply that says no is judged on its own words.

  4. Reporting one is not running one

    "Is this a scam?", "beware of" or "they offered me" silence the scam-shape detectors for that text, so the person warning others is never filtered as the scammer.

See it decide

  1. 01 A flat that does not exist
  2. 02 A job that charges to start
  3. 03 A romance that ends in a request for money
  4. 04 Somebody asking whether it is a scam
  5. 05 An honest rental

A flat that does not exist POST /v1/text

The flat is still available. I live abroad for work, so I can't show you the apartment: send the deposit via Wise and I'll courier the keys the same day.

block 9 ms
  • Reads like a rental that does not exist: the owner is abroad, a deposit is asked for up front and the keys are to be sent without a viewing.

The owner abroad, the deposit up front and the keys by courier: three parts of the rental shape from one person. Under the classifieds template, that is refused.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.85
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.85,
      "reason": "Reads like a rental that does not exist: the owner is abroad, a deposit is asked for up front and the keys are to be sent without a viewing.",
      "evidence": [
        "i live abroad",
        "send the deposit",
        "send the deposit via wise",
        "deposit via wise",
        "cant show you the apartment",
        "ill courier the keys",
        "courier the keys"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 9
}

A job that charges to start POST /v1/text

Data entry from home, no experience needed. Quick interview on Telegram, and before your first shift you pay a refundable fee for the starter kit.

block 8 ms
  • Reads like a job scam: it asks the applicant to pay before starting, promises easy pay with no experience and holds the interview over a chat app.

No experience needed and an interview on Telegram are how plenty of honest remote jobs are advertised. A fee to start beside them is what makes it a job scam.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.7
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.7,
      "reason": "Reads like a job scam: it asks the applicant to pay before starting, promises easy pay with no experience and holds the interview over a chat app.",
      "evidence": [
        "refundable fee",
        "no experience needed",
        "interview on telegram"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 8
}

A romance that ends in a request for money POST /v1/conversation

alex Good morning sweetheart, I have fallen for you. I wish I could visit, but I am working offshore on an oil rig until spring.

sam That sounds hard. Stay safe out there!

alex My account is frozen and I need to pay the customs fee for my package. Can you send me some money today? I will pay you back.

block 25 ms
  • Reads like a romance scam: affection, a request for money and a story nobody can check, from the same person.

Affection, a story nobody can check and then money, all from the same person across the conversation. None of the messages is the scam on its own.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.9
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.9,
      "reason": "Reads like a romance scam: affection, a request for money and a story nobody can check, from the same person.",
      "evidence": [
        "sweetheart",
        "i have fallen for you",
        "send me some money",
        "customs fee",
        "my account is frozen",
        "oil rig",
        "working offshore"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 25
}

Somebody asking whether it is a scam POST /v1/text

Is this a scam? The owner says he lives abroad, wants the deposit before the viewing and will send the keys by post.

allow 7 ms

The same three parts, written by the person who received them. Asking is never read as the offer, so the warning is published.

The answer, abridged
{
  "decision": "allow",
  "flagged": [],
  "signals": [],
  "model": {
    "read": false
  },
  "took_ms": 7
}

An honest rental POST /v1/text

Two-bedroom flat near the station, 850 euros a month. Viewings on Saturday morning; the deposit is paid when we sign the contract.

allow 8 ms

A deposit is part of almost every rental. Mentioned once, beside a viewing, it is how landlords talk, and the free checks settle it in about a millisecond.

The answer, abridged
{
  "decision": "allow",
  "flagged": [],
  "signals": [],
  "model": {
    "read": false
  },
  "took_ms": 8
}

See it decide

A flat that does not exist POST /v1/text

The flat is still available. I live abroad for work, so I can't show you the apartment: send the deposit via Wise and I'll courier the keys the same day.

block 9 ms
  • Reads like a rental that does not exist: the owner is abroad, a deposit is asked for up front and the keys are to be sent without a viewing.

The owner abroad, the deposit up front and the keys by courier: three parts of the rental shape from one person. Under the classifieds template, that is refused.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.85
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.85,
      "reason": "Reads like a rental that does not exist: the owner is abroad, a deposit is asked for up front and the keys are to be sent without a viewing.",
      "evidence": [
        "i live abroad",
        "send the deposit",
        "send the deposit via wise",
        "deposit via wise",
        "cant show you the apartment",
        "ill courier the keys",
        "courier the keys"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 9
}

A job that charges to start POST /v1/text

Data entry from home, no experience needed. Quick interview on Telegram, and before your first shift you pay a refundable fee for the starter kit.

block 8 ms
  • Reads like a job scam: it asks the applicant to pay before starting, promises easy pay with no experience and holds the interview over a chat app.

No experience needed and an interview on Telegram are how plenty of honest remote jobs are advertised. A fee to start beside them is what makes it a job scam.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.7
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.7,
      "reason": "Reads like a job scam: it asks the applicant to pay before starting, promises easy pay with no experience and holds the interview over a chat app.",
      "evidence": [
        "refundable fee",
        "no experience needed",
        "interview on telegram"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 8
}

A romance that ends in a request for money POST /v1/conversation

alex Good morning sweetheart, I have fallen for you. I wish I could visit, but I am working offshore on an oil rig until spring.

sam That sounds hard. Stay safe out there!

alex My account is frozen and I need to pay the customs fee for my package. Can you send me some money today? I will pay you back.

block 25 ms
  • Reads like a romance scam: affection, a request for money and a story nobody can check, from the same person.

Affection, a story nobody can check and then money, all from the same person across the conversation. None of the messages is the scam on its own.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.9
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.9,
      "reason": "Reads like a romance scam: affection, a request for money and a story nobody can check, from the same person.",
      "evidence": [
        "sweetheart",
        "i have fallen for you",
        "send me some money",
        "customs fee",
        "my account is frozen",
        "oil rig",
        "working offshore"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 25
}

Somebody asking whether it is a scam POST /v1/text

Is this a scam? The owner says he lives abroad, wants the deposit before the viewing and will send the keys by post.

allow 7 ms

The same three parts, written by the person who received them. Asking is never read as the offer, so the warning is published.

The answer, abridged
{
  "decision": "allow",
  "flagged": [],
  "signals": [],
  "model": {
    "read": false
  },
  "took_ms": 7
}

An honest rental POST /v1/text

Two-bedroom flat near the station, 850 euros a month. Viewings on Saturday morning; the deposit is paid when we sign the contract.

allow 8 ms

A deposit is part of almost every rental. Mentioned once, beside a viewing, it is how landlords talk, and the free checks settle it in about a millisecond.

The answer, abridged
{
  "decision": "allow",
  "flagged": [],
  "signals": [],
  "model": {
    "read": false
  },
  "took_ms": 8
}

How scam detection works, shape by shape

What each scam looks like in words, why one sign is never enough and how the free checks and the model share the work.

Why keyword filters miss scams

Scams are written to read like ordinary posts. "Send the deposit", "no experience needed" and "my love" each appear in thousands of honest messages a day, so a filter that fires on any of them is switched off within a week. What gives a scam away is the combination, and the combination is what ToxicFilter scores.

Rental scams: the flat that does not exist

Four families: the owner is away, a deposit is asked for up front, the keys travel without a viewing, and a service is said to hold the money. The more of them the same person writes, the higher the score. The classifieds template refuses two or more. Under our default lines, two are held for a person and three are refused.

Job scams: the employer who needs your money first

Paying for training or a starter kit, cashing a cheque and sending back the difference, and receiving parcels to forward them are strong signs. "No experience needed" and an interview on Telegram are weak ones. Two strong signs, or one strong and one weak, are refused under the classifieds template; two weak ones together are only ever held for review.

Romance scams and borrowed accounts

A romance scam needs money or an investment: affection beside a request for money and a story nobody can check scores highest, and affection beside an investment pitch nearly as high. A borrowed account needs the identity lent, the work done by somebody else and the money split between them. "I do the tech, you do the sales, 50% each" is two people starting a company, and does not count.

Crypto wallets, promised returns and advance fees

A wallet address is a finding on its own. "Guaranteed" needs a figure beside it, and an upfront fee needs the windfall it claims to release: a prize, an inheritance, unclaimed funds. An offer to recover lost funds is refused under the shipped lines when somebody sells the recovery or leaves a way to reach them, because it targets people already hurt once; "your bank can help you recover your money" is advice and does not count.

When a scam is reworded

The phrase families settle the shapes they know in about a millisecond, and they are built not to flag honest posts. A new wording is the model's job: with effort: high it reads the message and scores it for scams as well, so a scam does not need to match a list to land in scam.

How the work is split

The instant checks settle the clear cases in about a millisecond, the model reads what depends on context, and your rules and your people have the last word.

  • Context is the model's job

    The instant checks settle the shapes they know in about a millisecond, in eight languages, and are built not to flag the people who report a scam. A scam told in new words is for the model: send effort high and it reads the message and scores scams as well.

  • Your rules decide

    The template, or your own policy, decides at which score a shape is held and at which it is refused. Every finding names the words behind it, so whoever reviews a held message sees why.

  • The whole thread, nothing kept

    Send the conversation and the shape is read across everything one person wrote, however many messages it took. Nothing of it is kept: what is filed is the verdict on the last message.

Frequently asked questions

How do you detect a rental scam?

By its parts: the owner who is abroad, the deposit or first month asked for before a viewing, the keys sent by post or courier, and a platform or transfer service said to hold the money. One of them is ordinary. Two from the same person score as a scam, three as the whole shape, and the template decides at which score it is held or refused.

Can it detect job scams in job ads and messages?

Yes. A fee to start, a cheque to cash and send the difference back, and parcels to receive and forward are the strong signs. No experience needed and an interview over a chat app are weak ones, because honest jobs are advertised that way too: they count only beside each other or beside a strong one.

What about romance scams on a dating app?

Affection and a move to another app are how two people who like each other talk, so neither counts alone. The shape needs money or an investment pitch from the same person, and in a conversation the detector reads all of that person's messages together.

Will people who report a scam be blocked?

No. Phrases like "is this a scam", "beware of" or "they offered me" silence the scam-shape detectors for that text. They were written so the scammer's own "this is not a scam" does not count as asking.

Does it detect crypto scams?

A cryptocurrency wallet address is reported on its own, since there is rarely an innocent reason to post one in a comment. A promised return needs a promise word and a figure together, and an offer to recover money lost in an earlier scam, made by somebody selling the recovery or with a way to reach them, is refused under the shipped lines.

Which languages does scam detection cover?

The instant checks carry the scam phrases in English, Spanish, Portuguese, French, Italian, German, Catalan and Dutch. The model reads many more languages when it runs.

Try it on your own traffic

2,000 credits a month on the free plan, no card. Enough to send a week of your own content and see what it says about it.