docs
stormdoor.dev
FINDING

spam.likely_spam

A model classifier scored this text as likely spam.

SEVERITY
medium
LEADS TO
suspect
GATE
/v1/spam
CHECK
spam.classifier
Jump to what to do

Source: model — filter it out with findings.filter(f => f.source !== 'model') if you only want the free rule layer.

What it looks at#

A hosted language model judges whether the text is an unsolicited advertisement, scam, phishing attempt, or promotional solicitation sent without a genuine relationship with the recipient. The model sees the raw text you sent — nothing else — and returns a score from 0 to 1; this finding fires at 0.5 or higher.

This runs alongside every rule check in this gate, not after them: there is no cascade that skips the model call when a rule already found something (D-82).

Why it matters#

The free rule layer (spam.link_density, spam.known_phrase, and the rest) catches recognisable patterns. A model call catches spam that doesn’t match any of those patterns but still reads as spam to a person — novel phrasing, a scam with no known-phrase overlap, a message that’s spam in intent but not in any one detectable feature.

What to do#

Medium severity — a model finding never blocks on its own (design rule 3, D-82). Only a rule-based finding can push the verdict to block; this alone only reaches suspect. On our measured hard-negative set, the model false-alarms on roughly 1 in 30–50 clean messages — too often to auto-reject on this signal alone. Use it as a second opinion alongside the rule findings, not as a standalone block condition.

A paid check — real marginal cost per call, unlike every rule check in this gate.

OTHER FINDING CODES FROM /V1/SPAM