Winnow

Content moderation & abuse filtering

On this page

Every platform that accepts user content needs a first line of defense: rules that catch spam, abuse, and policy violations automatically, so human reviewers can focus on the genuinely nuanced cases. Most of that first pass is text matching, Winnow's strong suit.

โšก Where speed pays for itself

The cost driver is sheer volume: text matched against policy across a relentless content stream. Fast text matching lets automated rules clear the high-volume, routine cases cheaply, so scarce (and expensive) human reviewers see only the genuinely ambiguous residue. Faster matching means more content auto-handled per server and fewer hours sent to manual review.

The stakes๐Ÿ”—

The volume is the whole problem. More than 500 hours of video are uploaded to YouTube every minute, about 720,000 hours a day (Statista), and text posts dwarf even that. Manual review cannot scale to that velocity; automated rules have to filter the routine, high-volume cases so that scarce human attention goes where it is actually needed.

How it works๐Ÿ”—

Policy checks combine text matching with behavioral signals, for example, "flag content that contains a prohibited phrase, or carries many links from an account less than two days old, or has already drawn three user reports." Phrases are found with fast text search; link counts and account age are number checks; the conditions combine with plain and/or/not logic.

๐Ÿค– With AI in the loop

Moderation at scale is classifiers plus policy rules. Meta's systems find more than 90% of the content it removes before anyone reports it; high-confidence detections are removed automatically while lower-confidence ones route to human reviewers. TikTok scopes what its AI may do by explicit rule: automatic removal is reserved for the categories where accuracy is highest, keeping the false-positive rate for automated removals around 5%. And OpenAI's moderation models deliberately return 0โ€“1 scores per harm category, leaving each product's own policy rules to decide what to filter, review, or escalate. In Winnow those classifier scores are columns; the per-market thresholds and routing that turn them into actions are rules a trust-and-safety team edits live. More patterns: Deep Dive: AI + Rules Engines.

Why Winnow fits๐Ÿ”—

  • Text-first matching: finding words and phrases inside content is native: indexed search for the standing rulebook, plus a direct scanner for short or just-added terms, exactly what banned-phrase and spam rules need.
  • Built for volume: the whole rulebook is checked in one pass, in microseconds per item, keeping pace with a real-time content stream.
  • Layered signals: combine text rules with behavioral thresholds (link_count, account_age_days, report_count) so a rule fires on the pattern, not a single keyword, meaning fewer false strikes on legitimate posts.
  • Policies change weekly: rules are plain text, so trust-and-safety teams add and adjust them continuously, applied live.

๐Ÿงช In simulation โ€” 50,000 policies, 500,000 posts

To put numbers on the above, we built the text-first book this page describes: 50,000 standing policies, 68% of them carrying a phrase check โ€” community-scoped phrase rules, a small network-wide phrase list, behavioral spam rules (many links from a young account), report thresholds, and per-author watches โ€” then screened 500,000 posts against all of it. 7.6% of posts were flagged, and every planted prohibited phrase was caught. The instructive number is where the time went: the hundred network-wide phrase rules, 0.2% of the book, cost about three quarters of each decision, because a phrase rule scoped to no community must read every post โ€” scoping text rules is what keeps a moderation book fast.

~4 ยตsper post on one processor โ€” four millionths of a second
139of 50,000 policies actually examined per post
6.5Mposts a second using the whole 16-core machine
~$160/yrto screen 100,000 posts a second, around the clock

What this is: a test run on a generated policy book and generated posts, not a customer deployment โ€” the policies and content are invented, the speeds and costs are measured. It ran on one ordinary 16-core desktop computer, priced at a standard cloud rate of $0.043 per processor-hour running around the clock, the same basis as the Deep Dive: Cost Savings. Post bodies are generated word soup with phrases planted at the start, middle, and end; real text is adversarial (leetspeak, look-alike characters), which is normalization work that happens before matching, not measured here. Every action was double-checked against a slow, exhaustive pass over all 50,000 policies before any stopwatch started โ€” that slow way takes about 17 times longer. Treat the speeds as approximate, moving by about a fifth with machine load, and the counts as exact; the test ships with Winnow for your team to re-run on your own policies.