-
This image is currently processing. Please be patient...
Inspiration
Reddit moderators handle enormous queues with no triage support. Every post looks the same priority — spam sits next to genuine rule violations, and low-effort posts crowd out harassment that needs fast action. I wanted to bring AI-assisted classification to Reddit's volunteer mod workflow.
What it does
mod-triage-bot is a Devvit app that runs inside any subreddit and gives moderators an AI-powered triage dashboard:
- Classifier — scores each post across 9 categories (spam, self-promo, rule violation, misinformation, harassment, off-topic, low-effort, borderline, clean)
- Priority queue — each decision gets a 1-5 priority score so the highest-risk posts surface first
- Confidence score — tells mods how certain the classifier is, making human review easy to direct
- Mod notes — auto-generated action guidance ("remove immediately", "check author history", etc.)
- Live dashboard — custom Devvit post showing the last 20 triage decisions, updated via Redis sorted sets
- Audit log — every classify call is stored with timestamp, category, action, and priority
How I built it
Built entirely on the Devvit platform using TypeScript:
- Devvit triggers on PostCreate and CommentCreate events to catch new content automatically
- Menu items for manual mod-queue triage on any post
- Redis sorted sets for the audit log (zAdd with timestamp score, zRange reversed for newest-first display, zRemRangeByRank to trim to 200 entries)
- useAsync hook in the Devvit UI layer to fetch the audit log for the dashboard post
- A pure TypeScript classifier that reads post signals (karma, account age, flair, report reasons) and returns a structured TriageDecision
Challenges
- Devvit Redis API differs from standard Redis — no list ops; redesigned the audit log around sorted sets
- getModQueue lives on the Subreddit object, not the top-level Reddit API
- useAsync JSONValue constraint requires all async return types to be JSON-serializable primitives; solved by serializing to a JSON string and deserializing in the render function
What's next
- Connect a real ML classifier (Perspective API for toxicity, custom fine-tune for community rules)
- Bulk-action buttons in the dashboard
- Per-category stats and charts over time

Log in or sign up for Devpost to join the conversation.