81

TL;DR

Our anti-spam measure, which leverages similarities in recently deleted spam to help delete new spam, is now enabled network-wide. Our findings during its week-long trial on Super User indicate that it’s a boon to the network and worth activating on all sites. We have future improvements in progress for how we surface recent anti-spam actions to interested parties, and we’ll continue to monitor its activities to ensure it’s maintaining the level of accuracy we expect.

We’re graduating v1 of our anti-spam measure network-wide

We’re taking the training wheels off of our anti-spam measure and are releasing it to all sites today! We’ve observed its behavior on Super User and determined that it’s doing a great enough job to be trusted with overseeing the network. We have some data from its first week on Super User that we’d like to share with you, and we also have some data on posts that it would have flagged that we’d like to surface.

First, let’s make sure we’re all on the same page…

What is this anti-spam measure?

This background process compares new posts and author edits to posts against recently-deleted spam, and if it’s highly similar, this process will issue a spam flag on it.

How does it work?

We create pools of recently-deleted spam that the network receives, and then compare all new posts and their author-edit activity against them. There are two pools, the Per-site Pool and the Network-wide Pool, which retain the 100 / 500 recently-deleted spam posts respectively.

When a new question or answer is posted or edited by its author, they are measured against these pools’ posts using a similarity algorithm. We take the highest similarity measurement between the most similar posts in either pool and use that as its running spam similarity score. We lump these posts in three buckets of similarity: “Low Risk”, “Medium Risk”, and “High Risk”. For "Low Risk" posts, we do nothing. For the other two, we take proactive action against them to assist in deletion.

We consider posts that are considerably similar to recent spam to also be spam, label them as “Medium Risk”, and raise a non-binding spam flag from the Community bot user. This spam flag does not impose any negative effects that traditional spam flags do such as an implicit downvote. It appears as another spam flag in moderators' flag dashboard and helps towards the spam flag threshold for deletion, but it has no other ill effects. Our hope here is to expedite review and deletion if appropriate in these cases, and we consider some false positives acceptable here.

We consider posts that are extremely similar or identical to recent spam as “High Risk”, and in such a case we will raise a binding spam flag on the post, which unilaterally deletes it. Our hope is that we have as close to a 0% false positive rate on these flags as possible.

The exact thresholds for these risk assessment levels are adjustable, so if we notice a sizable number of false positives in a particular threshold, we’re able to adjust these on the fly. We are capable of adjusting these on a per-site basis, so if a particular community is observing a disproportionately high number of false positives, we can respond by adjusting these thresholds accordingly.

Let’s review the data!

As mentioned, we held a week-long trial for this anti-spam process on Super User. During this trial, 57 posts were deleted as spam on Super User in total. Of those, this anti-spam system unilaterally deleted 7 posts with a binding spam flag and raised a non-binding spam flag against 12 posts. Many of the posts where we raised a non-binding flag were followed up with autoflags from the SmokeDetector project. We had one lonely false positive over the course of this trial run, and it was a non-binding flag that a moderator dismissed as helpful. This gives us a 95% TP rate so far.

Here’s that data in a table:

Total Spam on SU during trial # Autoflagged (%) Non-binding flags Binding Flags
57 19 (33.33%) 13 (1 FP) 7

Our data goes further than this, though. A day prior to enabling this measure on Super User, we also enabled spam similarity assessments on all posts throughout the entire network, we simply didn’t raise any flags on them. This data is more interesting and relevant to a network-wide rollout, so let’s dive in.

Network-wide data

We turned on similarity assessments network-wide on October 21st, 2025, a couple days before the Super User rollout. For the purpose of this data, I’m considering posts that had a spam flag cast against them and they were later deleted by the Community user. Spam is a spectrum, so this doesn’t necessarily account for edge-cases.

Since turning on similarity evaluations, ~590 spam posts have been deleted in total. Were this anti-spam measure enabled network-wide, it would have raised 66 non-binding flags and 34 binding flags on those posts. In other words, we would have determined 16.9% of spam over the course of the last couple weeks as worthy of a spam flag. This number seems a bit low, but remember that we’re trying to ensure our false positive binding flag rate is as close to 0 as possible. We’re also trying to focus on spam recidivism, such as the spam that Super User often sees, as opposed to novel spam that you might see elsewhere on the network. We suspect that, because Super User is a frequent target of recurring spam, their autoflag percentage is higher.

We also would have raised 33 non-binding spam flags on posts that were determined to not be spam across the network. While these are false positives, these spam flags would be easily dismissed by a moderator’s manual review, and make up 24.75% of all flags we would have raised across the network. It’s possible that, upon investigation, these are posts we would consider to be spam or spam-adjacent. We consider this number to be an acceptable amount, especially considering that these non-binding spam flags do not automatically downvote the post, so there are no negative consequences simply to raising them, only a labor cost to dismiss them. Additionally, as mentioned previously, we can always adjust the thresholds if certain sites exhibit a disproportionately high false positive rate.

We observed that no false positive binding flags would have been cast during this period of time. This is our target number, so that's great!

Here’s that data in a table:

Total Network Spam Potential # Autoflagged (%) # Non-binding # Binding FP Non-binding
590 100 (16.9%) 66 34 33

What’s changed since the initial announcement?

We’ve made some changes about this initiative over the course of the last couple of weeks, some of which we’ve mentioned in an edit to our previous announcement, but we’d like to go over them now.

First, we’ve introduced a recently auto-flagged spam dashboard for moderators to view. Moderators can access this via their “Links” page in their moderator dashboard. The URL for mods is (root URL)/spam/recent-auto-flagged.

This shows a list of all posts that we’ve, at a minimum, raised a non-binding spam flag on. Moderators can use this dashboard to keep an eye on posts that we’ve taken action against and, if necessary, reverse them by clearing spam or abusive flags on the post in that post’s “Mod” menu options.

We’re still considering opening up visibility for this dashboard to other interested parties such as 10k+ users or other spam-fighting users. We’ll wrap back around on that when we’ve come to a decision, but if you have a great idea for who should be able to see this, please feel free to mention it.

Here is how the dashboard appears for Super User:

Image of the recent auto flagged spam dashboard, with a list of posts that have been deleted as spam. The posts have one of two statuses, either “Binding flag” for posts that were unilaterally removed by the system, or “Deleted via vote” for posts that were flagged with a non-binding flag and was later removed by further spam flags from community members.

We’ve also added a post notice for posts that we cast a binding spam flag on. Our hope with this is that unilateral deletions have a route for any onlookers to raise awareness to a moderator for review and potential overturning of the deletion:

Image of the post notice for an automatically deleted spam post, which says: This post is hidden. Our system automatically deleted this post as it's highly similar to recent spam. If you feel like this was done in error, please flag for moderator attention and explain why this deletion should be overturned.

Moderators will also be able to see entries in a post’s timeline view that details spam risk assessments. These are generated when a post is created and when the author of the post edits it. The design of these entries is currently a WIP, but we wanted to ensure moderators were aware of our assessments about why a post was flagged or not. Here is how that timeline entry looks:

Image of a spam evaluation entry in the timeline, expanded, which references a Global Pool and a Current Site pool along with reference spam posts that are close in similarity to the current post. The history event indicates that this was evaluated as a High Risk.

What’s next?

We’re going to be iterating on this initiative for a while longer. First and foremost, we’re going to be monitoring the anti-spam measure network-wide to ensure that we have a very high true positive binding flag rate. We’re also going to be making some improvements to the recent auto-flagged dashboard for mods so that they can surface recent activity from this system that is relevant to their needs in protecting their community. A help center article for auto-flagged spam is also underway that will describe recourse for recipient users as well as portions of the explanation above for curious users and moderators. Further detection methods that we can use in concert with recent spam similarity are also underway, so stay tuned for that!

We’re very proud of the work that we’ve accomplished with this so far, and we hope to be able to expand it to capture a higher volume of spam that makes it past our other blocks. Our goal is to reduce the amount of labor involved on the community’s part in removing posts that don’t really require human intervention.

We’d also like to toss a “thank you” to all who weighed in on the original announcement and provided some truly great, actionable feedback on our current plans. You all pointed out very important points of contention that we either acted on or have plans to address. Feel free to leave more feedback about this initiative below and we’ll do our best to address all of you.

14
  • 1
    though I'm not a mod on a site where I expect this to be of the most benefit- relatively speaking, overall, I feel positive about this. not sure I'm reading this right, but 33/100 seems bit high for FP, but yeah, I suppose mods can easily dismiss those auto-flags. I'd be curious to hear what the experience is like for mods on heavily benefiting sites what the handling experience is like / what else the flags surface. Commented Oct 29 at 18:19
  • 11
    @starball Yeah, 33 false-positive non-binding flags feels a bit high for us, too. However, these are dispersed across all sites on the network (interestingly, 7 of which come from Ask Ubuntu), and we have ways to tweak the thresholds for those sites which have a higher false-positive rate. We need some more data to inform on that decision, though, so we're setting this thing free to see how it does first, then we'll come back and tweak where necessary. :) Commented Oct 29 at 18:22
  • Will these automated spam flag be fed into metasmoke or is this entirely separate? Commented Oct 29 at 18:24
  • 2
    @Snow Unless the post was caught prior to an author edit that makes it spammier, we take action on these posts instantaneously. So in the cases where we raise a binding flag, Smokey will not have had the chance to scan the post before we've deleted it. Commented Oct 29 at 18:27
  • 24
    Thank you for adding the post notice for visibility for posters who have their posts deleted through this tool. That was a really important aspect of the auto flagging risk management and I'm glad you chose to implement it. Commented Oct 29 at 18:32
  • 12
    @Catija, thank you for advocating for the Post Notice! Commented Oct 29 at 18:40
  • I spent way too long trying to figure out that first sentence. I think it's supposed to mean "Our anti-spam measure, which leverages similarities in recently deleted spam to help delete new spam, is now enabled network-wide." ? Commented Oct 29 at 18:49
  • 7
    @aynber You've got it. I went ahead and edited it to match your version. We really badly need a proper name for this thing. Commented Oct 29 at 18:51
  • 3
    @Spevacus Perhaps Smoke Exchange? ;) Commented 2 days ago
  • 1
    Where the false-positives all on posts from users with 1 rep? In my experience of manually flagging spam, users with a rep more than 1 was much less likely to be spammers - apart from the loophole reported in Prevent an answer being accepted if pending SPAM or "rude or abusive" flags Commented 2 days ago
  • I keep forgetting if I asked - do, and how do entires on the dashboard age out? If we nuke a spammer (or they get network nuked) - not much use keeping em Commented 2 days ago
  • 2
    @JourneymanGeek Currently? The items never age out. These will be paginated once it gets long enough, but I agree with you they aren't exactly worth keeping around once we're done with them. When we add the ability to filter out deleted users, you should be able to just ignore what isn't worth checking out. Commented 2 days ago
  • Ah works for me. Commented 2 days ago
  • 6
    The only reason I'm still on this site is to help fight spam and moderate content to my best ability. I don't have a lot of reputation and I've spent a lot of time to get the 3000 I needed to cast close votes on Stack Overflow. That being said, I would love to some day get access to the spam dashboard and maybe be able to help remove even more spam. I've been a member of Charcoal since the beginning of 2024, and I have about 30.000 helpful spam flags across all SE sites. Commented 2 days ago

5 Answers 5

32

Let's try granting access to the spam dashboard based on flagging experience too, not just rep

The idea of granting a privilege based on demonstrating responsible use of tools (as opposed to total rep) has been discussed many times on Meta[1]. I think this would be a good chance to give that premise a try as an experiment. Suppose the criteria becomes:

To access this, you need to either:

  • have 10K rep on the current site
  • have cast at least 100 flags network-wide, with at least 95% of your flags marked as helpful

As Kevin B suggested in chat[2], it doesn't need to be only based on flagging experience, it can be rep or helpful flags.

I don't have specific success criteria in mind, but it'd give us the chance to see how well that system could work, on a new feature with a limited scope (as opposed to, for example, adding it to a widely-used existing feature, like edits).

Thoughts?

11
  • 2
    Perhaps have the flag count be for spam flags specifically? Idk if someone with 100 helpful flags for no longer needed comments necessarily has experience with flagging for spam, for example. But I do think having flags earn access is a great idea Commented 2 days ago
  • 7
    @fyrepenguin This is probably what I'm thinking. Leveraging helpful post flags could be a great determining factor for access, and speaks to the philosophy of divorcing privileges from rep that I share too. I agree that comment flags shouldn't necessarily be incorporated in determining access to this kind of tool. Commented 2 days ago
  • 4
    ... this is part of my answer, too... ;) Commented 2 days ago
  • 2
    I've an existing proposal for a spam queue. I'd say there's different goals here. A queue acts for review of incoming spam. The main value for the dashboard is oversight and after actions (currently suspensions, previously and in future destruction). Commented 2 days ago
  • @Catija Sorry about that, I didn't realize when writing this. I still think it's worth highlighting, so I'm hesitant to delete it, but I've gone ahead and marked this as a community wiki. Does that seem reasonable to you? Commented 2 days ago
  • 1
    I was saying it more to give weight to your answer/agree with it. :) No need to delete, @cocomac :) That said, I see the value for lower-rep users being able to access this as more limited, particularly without the aspect I suggest of turning this into a full spam dashboard with opportunities to flag content that hasn't been deleted yet. What do you see as the value that I might be overlooking? Commented 2 days ago
  • If/when this is opened to many users, there is a roboreviewer-equivalent social problem we see every once in a long while in Charcoal (I still appreciate all of you, just being honest) that we'd see here, too. Commented 2 days ago
  • 2
    I've removed wiki from this answer since I don't think it's necessary (and neither did a flagger). This is perfectly fine as a proper, personal answer to this. Commented 2 days ago
  • 1
    @Catija IMO the value would be similar to what 10k-ers would get - they'd be able to look through it, check any posts they suspect were wrongly flagged, etc. Commented 2 days ago
  • 1
    @Catija What cocomac just said. We want people to be able to check that there are no false positives. And that's hard to do when the post has already been deleted. With Smokey, we can see posts in Charcoal HQ before the final flag is cast, and we can even check deleted post contents in Metasmoke. Commented yesterday
  • @Spevacus Thanks! :D yeah, cocomac, I do see that - I did think about charcoal trying to identify stuff that didn't get caught but wasn't sure how useful that would be without the full post content. That said, I can understand the need being seen as an edge case, since I'm guessing most users with under 10k on a site aren't necessarily looking for that sort of opportunity outside of special interest groups like Charcoal. That said, I don't think there's harm in it - any more than I think there's harm in expanding access to 10k tools generally. Commented yesterday
28

I think there's a lot of options to expand the dashboard. Starting with 10k users is a good place but I'd also suggest expanding the purpose of the page into a bigger spam-fighting hub. This can be done stepwise a bit at a time and could be an excellent opportunity to look at expanding cross-site privileges and nibble away at the reputation = privilege situation.

  • Include all posts deleted as spam, sortable by deletion method (this tool, Smokey autoflag, manual flag deletion, mod, etc). This would allow mods and 10k+ users to review all spam deleted posts if they wish to. There's currently no way for anyone to see these spam flag deleted questions since the "recently deleted" 10k tool expressly excludes flag-deleted posts.
  • Include posts with active spam flags. Mods are amazing and do a ton of work but spam is something pretty much anyone can help with. Maybe it's worth allowing users with X helpful flags on that site to see a queue of spam flags that might need their attention. A big ask during the spam waves on SU has been a way to quickly flag spam in bulk - this seems like an ideal place for that to live rather than building it into the homepage UI.
  • Find a way to grant access to these pages without 10k on that site - maybe that starts out as having 10k on any one site or 10k across n sites... but maybe eventually there's some other way, such as helpful flags network-wide. This would allow SmokeDetector team users and others interested in eradicating spam to identify spam-deleted posts on sites.

The biggest barrier to expanding access is that 10k is tied to being able to see deleted posts. I'd say the dashboard is likely still somewhat useful even if a user can't otherwise see deleted posts because the preview seems to show enough to identify the examples as spam - provided the table isn't blanked because the user doesn't have 10k rep on the site. That said, there's been some support for broadening access to deleted posts network-wide for users who have unlocked it on another site. Since only mods can search for deleted posts anyway, I can't imagine a major reason to limit this to local reputation. I can't tell you how many times I've seen mods/high-rep users on one site grumbling that they can't see a deleted post on another site... though that may just be me grumbling.

Spam handling has long needed more company support and it's great to see some progress being made. I'm only slightly disappointed that SU didn't see one of the huge spam waves during the test but it's doubtless going to be tested soon enough. Thanks for the work and taking the time to get input and suggestions - and for recognizing that it's the start, not the end of this work.

8
  • 14
    I have more thoughts but I wanted to quickly share that we were privately hoping for a spam wave on Super User during the trial... As usual, the spammers did not do what we wanted them to do. Commented Oct 29 at 19:16
  • 1
    @Spevacus: They never do... Commented 2 days ago
  • 7
    IKR? inconsiderate, that's what they are. INCONSIDERATE. Commented 2 days ago
  • 3
    @Spevacus Betrayal! Betrayal of the HIGHEST ORDER! D: Commented 2 days ago
  • Regarding transforming this page into a more broad, spam-fighting hub, I'll ask the team if that's something doable but I can't promise that I can make that happen. I initially rallied for this but we decided on a minimal approach for v1 (essentially, we wanted to make sure we were auditable to mods at a minimum). There's more we want to do with this and making it double as an "all spam" dashboard might be too much. I agree that there's a lot of value here though, especially in opening this up to users with X helpful post flags (or spam flags or... something). Commented 23 hours ago
  • Regarding seeing deleted posts, that probably needs to be its own post. There's so, so much to talk about here, and all of it speaks strongly to reputation as a metric for trust being brittle, like we've discussed before, and I worry that any discussion we would have about it would likely boil down to us needing to address reputation. Yes, that's something we'd like to do, but that's a massive undertaking. Commented 23 hours ago
  • Would it be helpful to spec this or the spam queue ahead of time? Commented 13 hours ago
  • @JourneymanGeek that seems like a reasonable use of our time… to at least give an idea of the valuable features to include and a priority for them. I.e. what’s must-have and what’s nice-to-have. Commented 3 hours ago
21

In the inadvertently limited testing (we've been short of spammers lately, which is almost a lovely thing to complain about) we've had the tool worked really well. It also helps that we've got those accounts followed up on network wide (nice!).

Also, this was a pretty good rollout. We had good communication, essential features added in (like the dashboard) based on early input. We have good visibility over what's happening, and there's other tooling that would help kill spam being worked on that ties into this very well.

We practically have had no friction on our end (well one small little thing - quickly handled) with this and associated projects. Outside the spammers ... not turning up to help us stress test this thing, I think we've had a really good experience with how the new tooling has been going.

5

The spam evaluation timeline entries on posts are welcome, but the links to posts in the global pool will almost always 404, because you need 10k reputation to view deleted posts on another site. I'm not sure if Should moderators be able to view deleted posts across network? should be implemented - an alternative would be to provide a way to fetch the deleted post details into the timeline with a JavaScript call.

3
  • 1
    (This is just a minor suggestion for what I think could be a huge step forward in fighting spam. Thanks for doing this!) Commented 2 days ago
  • Would at least some of them show up in the metasmoke URL converter? Commented 2 days ago
  • 1
    Tested it with the link for this very answer: sqa.stackexchange.com/q/52849 - no results. It might work some of the times though, so thanks for the suggestion :) Commented 2 days ago
1

Somewhere in an average house in an average neighbourhood in a Midwestern state, a data analyst collated data while breathing in the steam from yet another mug of coffee. Router lights twinkled as masses of data streamed over the ether.

A script was written, and then code was born into a personal Git repository. A brief scratch of a stubbled chin was followed by entering the new project name.

Spamcensor.

In the daylight hours of the following day, a loose standup meeting with colleagues, and during a minutes silence when no one had anything thing to say.

So, I made up this script last night and it looks a bit interesting...

A month later, the Git repro is swallowed up into the corporate Git host. Tests are made, rules are discussed and documented. A single site is chosen for validation. There are murmurings of assent and approval from corporate eyes.

A month later, a data analyst is analysing data. There's a Teams notification, there's an audible ping.

Corporate: Remove the single site filter
Analyst: But we're still analysing the false positives...
C: < ...three dancing dots... >
C: Remove the filter, and while you're at it, set the aggression factor to it's maximum level

Spamcensor is released network-wide. It immediately spreads across all sites. Searching, in full hunter-killer mode. Looking for keywords, for numbers, patterns, anything that looks remotely "unsafe".

Gone are the fashionista website references, gone are the Rupee loan helplines, gone are the promises of spells and witchcraft. No more cryptocurrency fraud, no more airline ticket transfer agencies, no more office cleaning supplies.

Spamcensor learns, strengthens, spreads, becomes more capable. Spammers are trampled underfoot like heat-weakened skulls. There are explosions on the horizon where spam-waves are eliminated before they've even been compiled.

Spamcensor focuses with laser precision on one single aim, to track spam to it's single source and wipe out unsolicited free marketing for once and for all, with one single query.

Have you seen this boy?

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.