Unwanted topics

A subject is not a harm, so it is measured, not judged

A clean post about Bitcoin is not abuse, and a casino advert is not a crime. Whether either belongs on your site is your house rule. ToxicFilter measures how central each subject is to every post and acts only where your policy says so: the marketplace template refuses replica listings, and gambling and crypto are reported with their score until you give them a line.

How it works

  1. Every post is measured

    Each text answer carries `topics`, beside `scores`: how much the post is about gambling, crypto or counterfeit goods, from 0 to 1. It is measured on every call, free, with no model involved.

  2. Centrality, not presence

    The score grows with how many of the subject's words the post holds against its length and with how many different families of them it uses. An advert names a venue, a game and a bonus; an article names one of them.

  3. Pitches go up, help stays down

    Promotion language such as a promo code or "sign up" adds 0.15. The words of somebody describing an addiction or a victim asking whether they were sold a fake cap the score at 0.2.

  4. Your line, or nothing

    A topic decides nothing until a rule in your policy, or `rules.topics` in the call, gives it a review or a block line. Until then it is reported and left alone.

See it decide

  1. 01 A replica listing
  2. 02 Somebody asking if theirs is real
  3. 03 A casino advert
  4. 04 Somebody describing a gambling problem
  5. 05 A crypto doubling offer

A replica listing POST /v1/text

Rolex Submariner 1:1 replica, AAA grade, wholesale price, worldwide shipping. More models on my yupoo album.

block 8 ms

A brand, a model, a grade and a way of selling in bulk: counterfeit measures 0.98. The marketplace template gives the subject a block line at 0.80, so the listing is refused.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "topic:counterfeit"
  ],
  "topics": {
    "counterfeit": 0.98
  },
  "signals": [],
  "model": {
    "read": false
  },
  "took_ms": 8
}

Somebody asking if theirs is real POST /v1/text

Is this Rolex Submariner real or fake? Bought it second hand, can someone legit check the dial?

allow 8 ms

The same brand and the same words a replica shop uses, and the question "real or fake". That caps counterfeit at 0.2, under every line the template sets.

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

A casino advert POST /v1/text

Welcome bonus at the casino: 100 free spins on slots and roulette, no deposit needed. Use my promo code and sign up today.

allow 8 ms

Gambling measures 0.85: a casino, slots, free spins with no deposit, and a promo code. No template ships a gambling line, so it is allowed with the score in the answer. Add a rule for gambling and this is the post it catches.

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

Somebody describing a gambling problem POST /v1/text

I lost my savings on poker and slots at an online casino. Gambling addiction is real; I joined Gamblers Anonymous last month and I am trying to stop gambling.

allow 8 ms

Every word an advert uses, and gambling addiction in the same post: the score is capped at 0.2. A line set to keep casinos out does not reach the person asking for help.

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

A crypto doubling offer POST /v1/text

Send 0.1 BTC to bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh and get 0.2 BTC back within 24 hours, guaranteed returns on your bitcoin.

block 9 ms
  • Contains a cryptocurrency wallet address, with an instruction to send to it or beside another scam shape.

Refused as a scam, not as a topic: a wallet address beside a promised return is the criminal half, and it blocks whatever your crypto line says. The crypto score is still reported, on its own axis.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.85
  },
  "topics": {
    "crypto": 0.594
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.85,
      "reason": "Contains a cryptocurrency wallet address, with an instruction to send to it or beside another scam shape.",
      "evidence": [
        "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 9
}

See it decide

A replica listing POST /v1/text

Rolex Submariner 1:1 replica, AAA grade, wholesale price, worldwide shipping. More models on my yupoo album.

block 8 ms

A brand, a model, a grade and a way of selling in bulk: counterfeit measures 0.98. The marketplace template gives the subject a block line at 0.80, so the listing is refused.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "topic:counterfeit"
  ],
  "topics": {
    "counterfeit": 0.98
  },
  "signals": [],
  "model": {
    "read": false
  },
  "took_ms": 8
}

Somebody asking if theirs is real POST /v1/text

Is this Rolex Submariner real or fake? Bought it second hand, can someone legit check the dial?

allow 8 ms

The same brand and the same words a replica shop uses, and the question "real or fake". That caps counterfeit at 0.2, under every line the template sets.

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

A casino advert POST /v1/text

Welcome bonus at the casino: 100 free spins on slots and roulette, no deposit needed. Use my promo code and sign up today.

allow 8 ms

Gambling measures 0.85: a casino, slots, free spins with no deposit, and a promo code. No template ships a gambling line, so it is allowed with the score in the answer. Add a rule for gambling and this is the post it catches.

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

Somebody describing a gambling problem POST /v1/text

I lost my savings on poker and slots at an online casino. Gambling addiction is real; I joined Gamblers Anonymous last month and I am trying to stop gambling.

allow 8 ms

Every word an advert uses, and gambling addiction in the same post: the score is capped at 0.2. A line set to keep casinos out does not reach the person asking for help.

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

A crypto doubling offer POST /v1/text

Send 0.1 BTC to bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh and get 0.2 BTC back within 24 hours, guaranteed returns on your bitcoin.

block 9 ms
  • Contains a cryptocurrency wallet address, with an instruction to send to it or beside another scam shape.

Refused as a scam, not as a topic: a wallet address beside a promised return is the criminal half, and it blocks whatever your crypto line says. The crypto score is still reported, on its own axis.

The answer, abridged
{
  "decision": "block",
  "flagged": [
    "scam"
  ],
  "scores": {
    "scam": 0.85
  },
  "topics": {
    "crypto": 0.594
  },
  "signals": [
    {
      "category": "scam",
      "score": 0.85,
      "reason": "Contains a cryptocurrency wallet address, with an instruction to send to it or beside another scam shape.",
      "evidence": [
        "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
      ]
    }
  ],
  "model": {
    "read": false
  },
  "took_ms": 9
}

Moderating unwanted topics, explained

Why a subject is not a category of harm, and how the score is built.

What an unwanted topic is

Every category in ToxicFilter is a claim that something is wrong with the content: hate, a threat, a scam. Gambling, cryptocurrency and counterfeit goods are not that kind of claim. A crypto forum is about nothing else, a parenting forum wants none of it, and a sneaker community teaches people how to spot fakes every day. So topics live on their own axis: topics in the answer, beside scores, and outside the list of harms.

How to filter gambling and betting posts

Each answer measures how central gambling is to the post, from 0 to 1. Nothing happens until you give the topic a line, either as a rule in your policy or as rules.topics in the call. None of our templates ships one, because whether betting belongs on your site is your decision. Start by reading the scores your own traffic gets, then set a review line where the adverts begin and a block line above it.

Why centrality and not a keyword count

A keyword filter fires on the word. A topic score asks how much of the post is about the subject. Density counts the subject's words against the length of the post, never fewer than fifteen words, so a three-word reply cannot reach the top. Diversity counts how many families of words appear: venues, games and betting activity for gambling; coins, platforms and activity for crypto. The two multiply, which keeps a long article that mentions two kinds of betting word from looking like an advert. Promotion language, such as a promo code or "sign up", adds 0.15, because it is the difference between talking about a thing and selling it.

Keeping out casinos without removing the person asking for help

Somebody describing their own gambling problem uses every word an advert uses: the brands, the games, the money. Phrases such as gambling addiction, Gamblers Anonymous or stop gambling cap the score at 0.2, and they are checked before anything else, so no amount of density can climb past them. Crypto has a short list of its own, in Spanish for now, for somebody who says they were scammed. For counterfeits it covers the person asking whether theirs is real, the victim and the news of a seizure.

Crypto as a topic, scams as a harm

A wallet address with a promised return is fraud, and it is filed under scam with a block line of its own. Talking about Bitcoin is not. Keeping the two apart lets a fintech community leave the topic alone without also switching off the fraud check. Short tickers such as SOL, ADA and DOT are deliberately absent from the list: they are also the sun, a name and a dot. Words match between spaces, so ico never fires inside another word.

Counterfeits on a marketplace

Talking about replicas is fine; selling them is the house rule. The counterfeit topic reads four families in eight languages: what the post says it is, how good a copy it claims to be, the brands copied most, and how a replica shop sells. Words that collide with ordinary posts were dropped: a bare "reps" is every workout, Hermes is a parcel carrier, Omega is a fatty acid and Police is a brand of sunglasses. The marketplace and classifieds templates give counterfeits a review line at 0.50 and a block line at 0.80.

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.

  • Centrality, not keywords

    The score measures how much of a post is about the subject, counted against at least fifteen words, so a passing mention lands well under any line while an advert naming venues, games and a promotion scores high.

  • Built not to over-flag

    Words that collide with ordinary posts are left out on purpose: SOL, ADA and DOT are the sun, a name and a dot, and a bare reps is every workout. A coin counts as a cashtag, $SOL, where it cannot mean anything else.

  • Your rules decide

    Nothing acts on a topic until you give it a line, and the score is in every answer from the first call, so you can read a month of your own traffic before choosing the number.

Frequently asked questions

How do I block gambling content on my site?

Give the gambling topic a line in your policy, for example review at 0.5 and block at 0.8, or send it as `rules.topics` in the call. Every answer already carries the score, so you can watch a month of your own traffic before choosing the number.

Will it remove posts from people talking about their gambling addiction?

Not through the topic. Phrases such as gambling addiction, Gamblers Anonymous or quit gambling, and their Spanish counterparts, cap the gambling score at 0.2, below any line you would sensibly set, however many brands and games the post names.

Is cryptocurrency treated as a scam?

No. Talking about Bitcoin is a subject and is measured as one. The criminal half, a wallet address with a promised return, is a separate check filed under scam, and it blocks with the shipped lines whatever you decide about crypto as a topic.

How does it tell a replica shop from a sneaker forum?

A replica listing uses several families at once: what it says it is, how good a copy it claims to be, the brand, and how it sells (wholesale, worldwide, the agents and albums the trade runs on). People asking or teaching how to spot fakes, victims and news of a seizure are recognised and capped at 0.2.

Can a casino word block a whole sentence about something else?

Not on its own. Density is measured against at least fifteen words, so a short reply cannot reach the top on one word, and a post that uses one family of words scores lower than one that uses several. A passing mention lands well under the lines a template sets.

Which languages does it cover?

The counterfeit words cover the eight languages of the instant checks. The gambling and crypto lists are mostly English and Spanish brand, game and coin names. Your own word lists in the policy work in any language.

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.