Inspiration
Back in November of 2025, a user began creating multiple accounts to harass and threaten members of the /r/Birmingham subreddit. At first, it was lighter harassment, but then began segueing into violent threats, graphically violent encouragements of suicide, sexually violent threats, encouragement and enticements for mass shootings, stalking users, and telling members of the sub he had them on a hitlist. We naturally reported each of these accounts individually and would report them in bulk for ban evasion, but no conclusion has come about as a result of that, and the user has made 360+ accounts to date. Reddit's AutoModerator let us have simple protections in place like filters on simpler regex and filtering new users, but we needed something more, especially since this user would occasionally make dozens of threats in rapid succession with the same account.
What it does
Community Safety
BirminghamBot takes in a few settings: the first is for keywords that are common patterns that this individual exclusively uses, and flags the account. It also takes in a second keyword setting for more generic keywords that could have legitimate mentions, but if the account is only a few minutes old, it also flags the account. We apply a similar pattern for the above two settings for usernames as well. These match nearly 100% of the time now, with 0% false positives in a few weeks.
Once the account is flagged for a threat, we log it to an external database with relevant context including the parent context for which it's replying to. We issue a permaban for the account. We send a modmail notification to verify the information immediately, and to go get a WebArchive of the comment or post ASAP. The database has a trigger that writes a nicely formatted output to Google Docs. The database also backs an external dashboard we have that lets us search through posts a little more easily, and find active accounts to keep reporting to reddit for threatening violence and ban evasion.
BirminghamBot has a couple extra functions for community safety, circling around this problem. There's a setting that allows us to automatically lock specifically flaired posts after an individually configurable time, as we noticed this user tended to go into those threads a lot.
Finally, with the stalking of specific users as well, we have BirminghamBot checking any posted social media links for tracking parameters that could reveal their identity, and strip those out.
Fun Accessory Functions
For April Fools 2026, we modified BirminghamBot to do something a little more public facing and fun! We took inspiration from the Reddit sitewide April Fools prank in 2013, and pretended that we (the Birmingham, AL sub) were taken over by the Birmingham, UK sub, and that they hacked BirminghamBot. Each member of the sub was assigned to either Team Jam or Team Cream (for determining preferred scone topping order). A user's participation in the sub gave their team points, users could donate extra to their aligned charity for extra points, and using American English words subtracted points from their team.
It ended up being absolute chaos for the day, and in all, almost $600 was raised for two local charities.Recap post here!
How we built it
The Devvit SDK, Postgres, Google Apps Script, and Next.js
Challenges we ran into
The sheer volume of posts and accounts to keep up with - over 360 accounts and over 430 comments/posts in just a few months took up an enormous amount of moderation resources, causing us to have to double our modteam. Once the team was scaled up, that freed up my capacity to devote my time fully to working on BirminghamBot.
Accomplishments that we're proud of
We're capable of detecting nearly 100% of the users posts/comments/accounts over the last few weeks, with just 1 recent false positive, which has made all of us breathe so much more easily. The April Fools day joke ended up being a huge win with the community as well.
What we learned
The Devvit platform is really solid, and has been an absolute pleasure to work on!
What's next for BirminghamBot
Who knows?! Community safety functionality is solid now, April Fools was great, and there's no telling what else we'll have planned for the future!
Built With
- devvit
- postgresql
Log in or sign up for Devpost to join the conversation.