Here's the full corrected version:
Inspiration
I work in speech analytics at T-Mobile building category libraries to classify call center interactions at scale. I've spent years identifying patterns in human communication — what people say, how conversations escalate, and where the turning point is. When I started exploring Reddit I noticed the same contagion pattern I'd seen in call data: one hostile comment gives others permission to pile on, cruelty spreads to new targets, and the whole thread turns dark before anyone can stop it. I wanted to build a tool that catches that moment early.
What it does
DarkThread automatically scans subreddit threads and scores them across six severity levels from Healthy to Critical. It uses a 40+ category phrase library weighted by severity tier, plus velocity detection, spread fuel analysis, threat clustering, mob coordination signals, and algospeak evasion detection. Moderators see ranked results instantly with no configuration required. A Critical flag fires automatically when doxxing or physical threat phrases are detected regardless of overall score because a single "cute neighborhood" is an emergency.
How I built it
Built on Reddit's Devvit platform using React and TypeScript. The scoring engine is pure math with no AI opinion, so the same thread always gets the same score and every point is traceable back to specific signals. The phrase library spans 40+ categories from mild dismissals at 1 point each to doxxing language at 35 points each, with amplifier multipliers for coded language that boosts surrounding phrase scores by 25%.
Challenges I ran into
Getting Reddit's API to work inside Devvit's environment required significant problem solving around authentication and the Listing type system. Building a phrase library that catches real harassment without over-flagging normal conversation was the hardest design challenge. Algospeak like "unalive yourself" and leetspeak variants like "k1ll" showed me how fast harassers adapt to bypass static filters. I also discovered that intent matters as much as language — "everyone report this" could be legitimate spam flagging or coordinated harassment, which led me to build the Needs Human Review flag.
Accomplishments that I'm proud of
In my research into existing Reddit moderation tools, I did not find any tool that detects the contagion pattern — the moment cruelty spreads from one target to others in the same thread. Most tools flag individual bad comments in isolation. DarkThread flags the moment a thread starts to turn and tracks where the hostility spreads. I am also proud of the phrase library itself — 40+ categories built from real Reddit harassment patterns including mod community research, covering everything from mild internet dismissals to doxxing coordination to algospeak filter evasion. Moderators themselves are also protected, with a dedicated Anti-Moderation Harassment category because the people who protect communities deserve protection too.
What I learned
Harassment language evolves faster than static dictionaries. Leetspeak, algospeak, coded dog whistles, and sealioning are all deliberate attempts to evade detection while causing real harm. Context matters as much as content — the same phrase can be harmless in one thread and dangerous in another. And the most important thing I learned is that moderators need early warning, not after-the-fact reports. The goal is to catch the thread while there is still time to intervene.
What's next for DarkThread
Version 2 will add leetspeak normalization to catch filter evasion variants, contextual scoring to distinguish coded language used harmlessly from coded language used as a harassment shield, and community-contributed phrase library updates so the tool evolves with the language. Longer term, DarkThread has applications beyond Reddit including brand monitoring for companies who want to detect when their communities are being targeted by coordinated harassment campaigns.
Built With
- ai
- claude
- devvit
- hono
- node.js
- react
- typescript
Log in or sign up for Devpost to join the conversation.