Inspiration
I was researching how Reddit moderation teams actually operate — not how the tools work in theory, but what moderators struggle with in practice.
The pattern I kept finding was the same across community after community: a user gets warned, the warning lives in someone's head or a Discord message, three weeks later the same user is back with a new violation, and the mod online has zero context. They start from scratch. The prior investigation is invisible. The institutional knowledge is gone.
That's not a moderation failure. That's an institutional memory failure.
The research confirmed it. A 2025 arXiv paper studying Reddit moderators ("Think about it like you're a firefighter") found that mods face persistent challenges around review coordination, inconsistent interface signals, and reliance on third-party tools — and that most find the modqueue alone insufficient to inform decisions. Reddit's own 2026 moderation roadmap names contextual moderation tooling and collaborative moderator features as strategic priorities.
The problem is documented. No native tool solves it.
So I built Gavel.
What it does
Gavel is a moderation continuity system. Not an AI. Not a spam detector. Not a modqueue replacement. It gives mod teams something they've never had natively on Reddit: shared, persistent, structured memory about users and investigations.
From any post or comment, any moderator can open a user's full record in one tap from the mod shield menu. The record shows ban status, a risk summary (rule-based pattern signals derived from stored history), investigation owner, moderator coordination, and a full behavioral timeline.
All Gavel actions are accessible from the mod shield menu — no leaving Reddit, no external tools.
Core features:
- Shared behavioral record — warnings, bans, notes, appeals, investigation ownership, all in one place
- Risk summary — surfaces repeated violations, frequency spikes, prior unbans, active investigations automatically
- Structured incident logging — log harassment, spam, ban evasion with optional warn/ban/mute
- Investigation ownership — claim a user so the whole team knows who is handling it
- Structured appeals — users submit a form, mods review full history and decide in one click
- Observation Mode — Gavel logs what it would have done without taking action, so teams can verify before enabling enforcement
Subreddit-level actions (appeals queue, my investigations, submit appeal) live in the subreddit ⋮ menu.
How I built it
Gavel runs entirely on Reddit Devvit — @devvit/public-api ^0.12.23, TypeScript strict mode, Devvit Redis for all storage.
Zero external dependencies. No axios, no Firebase, no external servers, no webhooks. Everything lives inside Reddit's infrastructure.
The core pieces:
triggers.ts— listens to mod removal events and automatically logs incidentsdiscipline.ts— checks active strike count against configured thresholds and executes warn/ban actionsstorage.ts— all Redis CRUD with structured key patterns, graceful error handling, never throwsforms.ts— all form definitions: context view, incident logging, appeals, investigationsmenuItems.ts— menu registrations and the logic that builds the risk summary and timelineappeals.ts— structured appeal submission and mod forgive/uphold flowmessages.ts— PM templates with variable substitution
The risk summary derives behavioral signals purely from stored history — no AI, no external calls.
Why menu-based Devvit and not a web app?
I made a deliberate choice early on: build entirely inside Reddit's native mod surfaces using Devvit menu items and forms — not a standalone web dashboard, not a browser extension, not a custom post UI.
This matters for one reason that most mod tools get wrong: Toolbox, one of the most popular moderation extensions, only works on desktop browsers. Moderators who use Reddit on mobile — which is a significant portion of mod activity — get nothing.
Gavel works identically on mobile and desktop because it uses Reddit's own native form components. There's no custom rendering, no external page to open, no browser extension to install. The mod shield menu and subreddit ⋮ menu are available everywhere Reddit is available.
The tradeoff is that Devvit's form UI is constrained — no custom colors, no tables, no rich layouts. But that constraint is also what makes it universally accessible. I chose reach over aesthetics deliberately.
Challenges I ran into
Devvit's UI is constrained by design. No custom HTML, no React, no color coding. Every field is a string, paragraph, boolean, or select. At first this felt limiting. Then I realized: these forms work identically on mobile and desktop without any custom rendering — which is exactly what a mod tool needs. I stopped fighting it and started designing around it.
Devvit's QuickJS VM behaves differently from Node.js in subtle ways. Some standard TypeScript patterns don't work as expected inside the runtime. I had to carefully isolate and test each trigger and handler individually.
Redis key design. Getting the schema right upfront — per-user, per-subreddit, per-mod records that never collide and are always retrievable without full scans — required planning everything before writing a single storage function.
The README renderer on the Devvit portal strips HTML tags, doesn't support image sizing, and renders simplified Markdown. Discovered this through about a dozen upload iterations.
Accomplishments that I'm proud of
Honestly, the thing I'm most proud of isn't any single feature — it's that the whole system actually works end-to-end inside Reddit's native UI with zero external dependencies.
But specifically:
The risk summary. A single block that surfaces behavioral intelligence from raw stored history with no AI. The first time I saw it populate automatically with "2 unresolved incidents · repeated post removals this week · previously unbanned 2 times" — that felt like the product clicking into place.
The full appeals workflow. User submits a structured form. Mod sees their full history. One toggle to forgive, one button to submit. Appeal locked for 30 days if upheld. This replaces an entire category of chaotic modmail threads with a structured, auditable process.
Observation Mode. The idea that a mod team can install Gavel, watch it log what it would have done for a week, verify the thresholds make sense for their community, and then enable enforcement — that's the kind of trust-building that makes a tool actually get adopted.
What I learned
The biggest thing: moderation is an information problem before it's an enforcement problem.
Mods don't fail because they lack tools to remove content. They fail because they lack shared context — across people, across time, across shifts. The modqueue tells you what's in front of you right now. Gavel tells you what already happened.
I also learned that designing for zero external dependencies forces you to be deliberate. Every feature has to be justified by what you can derive from what you already have stored. That constraint made Gavel tighter and more focused than it would have been otherwise.
What's next for Gavel
- Subreddit-level analytics — aggregate patterns, most common violation types, resolution rates
- Cross-mod handoff notes — structured briefings when investigation ownership transfers
- Configurable rule categories — tag incidents by rule number so patterns surface by rule, not just by count
- Modmail integration — appeal decisions reflected back into modmail threads automatically
Built for the Reddit Mod Tools & Migrated Apps Hackathon — May 2026 App: developers.reddit.com/apps/gavel-mod Source: github.com/soumabhi/GAVEL
Built With
- devvit-redis
- devvit/public-api
- reddit-devvit
- typescript


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