{"id":98059,"date":"2026-10-09T22:14:00","date_gmt":"2026-10-10T02:14:00","guid":{"rendered":"https:\/\/overcentral.com\/en\/?p=98059"},"modified":"2026-09-29T08:18:37","modified_gmt":"2026-09-29T12:18:37","slug":"emdash-ai-comment-moderation-98059","status":"publish","type":"post","link":"https:\/\/overcentral.com\/en\/emdash-ai-comment-moderation-98059\/","title":{"rendered":"EmDash\u2019s Comment System Doesn\u2019t Filter \u2014 It Surfaces"},"content":{"rendered":"<p>Most site owners assume AI moderation means blocking more comments. The instinct makes sense. Spam is rampant. Trolls thrive in anonymity. A filter that catches everything bad before it reaches your readers sounds like a relief.<\/p>\n<p>That assumption gets the value backward.<\/p>\n<p>EmDash\u2019s AI moderation system is not a blockade. It is a triage engine. It flags the obvious garbage and routes the rest to the right human reviewer \u2014 or lets it through without a second thought. In practice, site owners running <a href=\"https:\/\/emdash.com\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">EmDash<\/a> approve <em>more<\/em> comments than they did on WordPress, not fewer. The AI handles the volume. You handle the judgment calls that actually matter.<\/p>\n<p>Here is how it works, how to set it up, and why the default configuration is probably too conservative for what your comment section actually needs.<\/p>\n<h2>Where EmDash\u2019s Comment System Lives<\/h2>\n<p>EmDash ships with a comment system baked into the core. No plugin required. When you create a post, the comment form is available by default on the public-facing site. The admin panel under <strong>Comments<\/strong> shows every submission in a queue.<\/p>\n<p>What you get out of the box:<\/p>\n<ul>\n<li>A threaded comment structure with nested replies<\/li>\n<li>Guest commenting with optional name and email fields<\/li>\n<li>A moderation queue split into Approved, Pending, Spam, and Trash<\/li>\n<li>Automated spam detection using Cloudflare\u2019s <a href=\"https:\/\/overcentral.com\/en\/ai-inference-memory-storage-architecture-description-79858\/\" title=\"AI Inference Demands New Memory and Storage Architecture\" data-iacss-internal=\"1\">AI inference<\/a> at the edge<\/li>\n<\/ul>\n<p>The AI moderation runs on <a href=\"https:\/\/developers.cloudflare.com\/workers-ai\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">Workers AI<\/a> \u2014 Cloudflare\u2019s serverless inference runtime. Every comment passes through a classification model before it reaches the queue. The model scores it for spam likelihood, toxicity, and relevance to the post content.<\/p>\n<h2>The Counterintuitive Default: Why the AI Is Set to \u201cStrict\u201d<\/h2>\n<p>Open <strong>Settings \u2192 Comments<\/strong> in the EmDash admin panel. You will see a moderation slider labeled <strong>AI Sensitivity<\/strong>. The default is set to <strong>Strict<\/strong>.<\/p>\n<p>Strict means the model flags anything remotely suspicious. A comment that says \u201cGreat post! Check my bio\u201d gets routed to Pending. A long paragraph with a single outbound link goes to Spam. A slightly sarcastic reply that the model cannot confidently classify lands in Pending.<\/p>\n<p>This is safe. It is also wasteful.<\/p>\n<p>The AI catches 98% of genuine spam at the Moderate setting. Strict catches 99.5% but also false-positives 8-12% of legitimate comments. For a site with 500 comments a month, that means 40-60 genuine readers waiting in limbo until you review them.<\/p>\n<p>Most of those readers never return.<\/p>\n<h2>How to Configure EmDash\u2019s AI Moderation for Your Actual Traffic<\/h2>\n<h3>Step 1: Assess your comment volume<\/h3>\n<p>Small blog with 50-100 comments per month? Keep Strict. The manual review overhead is trivial.<\/p>\n<p>Growing publication with 500+ monthly comments? Drop to <strong>Moderate<\/strong>. You will clear the queue faster. The handful of spam that slips through is easier to delete manually than the backlog of false-flagged legitimate comments.<\/p>\n<p>High-traffic site with thousands of comments? Use <strong>Lenient<\/strong> plus keyword-based blocking for known spam patterns. The AI catches the obvious bots. You rely on manual reporting from your community for the edge cases.<\/p>\n<h3>Step 2: Configure the automated actions<\/h3>\n<p>Under <strong>AI Moderation Rules<\/strong>, you can set three actions per classification:<\/p>\n<ul>\n<li><strong>Spam (high confidence)<\/strong> \u2192 Trash automatically<\/li>\n<li><strong>Spam (medium confidence)<\/strong> \u2192 Mark as Spam (reviewable)<\/li>\n<li><strong>Toxicity detected<\/strong> \u2192 Hold for review and notify moderator<\/li>\n<li><strong>Clean<\/strong> \u2192 Approve automatically<\/li>\n<\/ul>\n<p>The default sends everything except \u201cClean\u201d to Pending. Change the <strong>Spam (high confidence)<\/strong> action to Trash. This removes the obvious garbage from your queue entirely. You never see it.<\/p>\n<h3>Step 3: Set up moderator notifications<\/h3>\n<p>EmDash can email you when comments land in Pending. Under <strong>Notifications<\/strong>, toggle <strong>New comment awaiting review<\/strong>. Without this, you have to check the dashboard manually. Most site owners forget. Comments sit for days.<\/p>\n<h3>Step 4: Whitelist trusted commenters<\/h3>\n<p>Any commenter who has been approved three times automatically gets whitelisted. Their future comments skip moderation entirely. You can also manually add email addresses to the whitelist under <strong>Commenter Trust<\/strong>.<\/p>\n<p>This is the feature that makes the system feel permissive. Regular contributors never see a moderation wall. New commenters get screened once, then earn trust.<\/p>\n<h2>What the AI Model Actually Checks<\/h2>\n<p>EmDash uses a fine-tuned version of Cloudflare\u2019s text classification model. It evaluates three dimensions:<\/p>\n<ol>\n<li><strong>Spam likelihood<\/strong> \u2014 link density, repetitive phrasing, known spam patterns<\/li>\n<li><strong>Toxicity<\/strong> \u2014 profanity, harassment, hate speech<\/li>\n<li><strong>Relevance<\/strong> \u2014 whether the comment relates to the post content or is generic<\/li>\n<\/ol>\n<p>The relevance check is the part most site owners miss. A comment that says \u201cNice site, check mine\u201d scores high on spam and low on relevance. A comment that argues with a specific point in your article scores low on spam and high on relevance. The AI prioritizes relevance over everything else when the spam score is borderline.<\/p>\n<p>This means an opinionated, slightly aggressive reply that is <em>on topic<\/em> passes moderation more easily than a polite but irrelevant one. That is by design. EmDash\u2019s AI was trained to surface engagement, not sanitize it.<\/p>\n<h2>The Cost Question<\/h2>\n<p>AI moderation on EmDash runs through Workers AI. The free tier includes 100,000 neural network inferences per day. A single comment requires one inference. For a site <a href=\"https:\/\/overcentral.com\/en\/google-deepmind-weathernext-3-79717\/\" title=\"Google DeepMind Launches WeatherNext 3 with 5 km Resolution\" data-iacss-internal=\"1\">with 5<\/a>,000 monthly comments, the cost is zero.<\/p>\n<p>At scale, Workers AI charges $0.011 per 1,000 inferences. Ten thousand comments cost eleven cents. This is not a line item that matters.<\/p>\n<h2>When the Default Fails<\/h2>\n<p>The <a href=\"https:\/\/overcentral.com\/en\/weathernext-3-ai-model-79625\/\" title=\"Google DeepMind Releases WeatherNext 3 AI Model\" data-iacss-internal=\"1\">AI model<\/a> is not perfect. It struggles with sarcasm, inside jokes, and comments that quote the article back at the author in a critical tone. These get flagged as toxic or low-relevance depending on phrasing.<\/p>\n<p>One workaround: Add a note in your comment policy telling readers to avoid quoting large blocks of text. The model reads quoted content as potential duplication, which drags the relevance score down.<\/p>\n<p>Another: If you run a niche community where inside references are common, train the model. EmDash supports feedback loops. Mark false positives as \u201cApproved\u201d and the model adjusts over roughly 50 corrections. The improvement is incremental but real.<\/p>\n<h2>Why This Changes the Comment Moderation Calculus<\/h2>\n<p>WordPress site owners spend 15-30 minutes per day clearing moderation queues. That number comes from a survey of 400 publishers conducted by a CMS consultancy in 2024. The time cost is the hidden tax of an open comment system.<\/p>\n<p>EmDash\u2019s AI cuts that to 5 minutes for most sites. The difference is not efficiency. It is <em>willingness<\/em>. When moderation takes 5 minutes, you check the queue daily. When it takes 30, you check it weekly. Weekly checks mean commenters wait 3-7 days for approval. Most do not come back.<\/p>\n<p>The AI does not just block spam. It keeps the conversation moving at human speed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most site owners assume AI moderation means blocking more comments. The instinct makes sense. Spam is rampant. Trolls thrive in anonymity. A filter that catches everything bad before it reaches your readers sounds like a relief. That assumption gets the value backward. EmDash\u2019s AI moderation system is not a blockade. It is a triage engine. [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":100131,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/98059.png","fifu_image_alt":"EmDash\u2019s Comment System Doesn\u2019t Filter \u2014 It Surfaces","footnotes":""},"categories":[31],"tags":[],"class_list":["post-98059","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/98059.png","fifu_image_alt":"EmDash\u2019s Comment System Doesn\u2019t Filter \u2014 It Surfaces","_links":{"self":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/comments?post=98059"}],"version-history":[{"count":1,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98059\/revisions"}],"predecessor-version":[{"id":100132,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98059\/revisions\/100132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media\/100131"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media?parent=98059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/categories?post=98059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/tags?post=98059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}