-
Check precedent: the team's verdict before you act — "Leaning 75% removed," with counts + examples.
-
Consistency digest: a trended consistency index + decisions that broke from the team's own norm.
-
Compare community: paste another sub's anonymized profile to compare norms (k-anonymous, no backend).
-
Rule health: settled / leaning / contested / limited buckets at a glance, team-level.
Inspiration
Moderation teams make hard judgment calls every day, but their precedent lives in memory, old modmail threads, private chats, and scattered past actions. Most mod tools remember users. ModCase remembers decisions.
ModCase is built around one practical question every moderator asks: "How has this team handled this kind of case before?"
What it does
ModCase turns a team's own approve/remove history into privacy-conscious institutional memory, and puts it in front of a moderator at the moment they decide.
When a moderator reviews a post or comment, they open ModCase: Check precedent, choose the relevant rule, and see how the team handled similar past cases — removed vs. approved counts, a settled / leaning / contested verdict, the recent trend, recent examples, and the closest past case when item text is available.
It also ships team-level tools:
- Consistency digest with a trended team consistency index
- Rule health and per-rule trends
- Contested-rule review and second-review suggestions
- Rule-drift detection
- Calibration mode for onboarding new moderators
- Community profile export and cross-community comparison
- Wiki publishing for a living "how we moderate" summary
- Aggregate transparency and audit reports
- A mod-facing removal-message guide
- One-click demo seeding for instant evaluation
ModCase never auto-removes content, scores users, tracks individual moderators, or builds leaderboards. It supports human judgment instead of replacing it.
How we built it
ModCase runs on Reddit's Developer Platform using Devvit Web, Redis, Hono, TypeScript, Vite, and Vitest.
It captures human approve/remove actions on posts and comments through Devvit onModAction events, filters out Automod, bots, and the app account, then stores privacy-conscious decision records: subreddit, content type, controlled reason label, action, timestamp, a salted target hash, and an optional short snippet — never moderator or author names.
Precedent lookup is deterministic first: same subreddit, same content type, same controlled reason. Keyword assistance only reorders already-matching examples — it never chooses the action or decides whether a rule is settled. The verdict is a transparent function of stored decisions, not a model.
The implementation is covered by route- and module-level tests; local verification passes config checks, strict TypeScript, the build, and 68 automated tests.
Challenges we ran into
The hardest challenge was scope discipline. It was tempting to add AI moderation, user scoring, moderator analytics, or automatic enforcement — but each would erode the trust model. ModCase stays focused on team precedent and aggregate insight, with the privacy posture as a feature, not a footnote.
The main technical challenge was handling Devvit mod-action payloads safely: permissive payload normalization, bot/app filtering, controlled reason mapping, and route-level tests so the app handles real moderation events without storing sensitive identity.
Making value visible immediately was a challenge too — a fresh subreddit has no history, so demo seeding creates realistic precedent for evaluation without days of live usage.
Accomplishments that we're proud of
- A clear thesis, fully realized: decision memory without user dossiers.
- A complete core loop — capture human decisions, store privacy-conscious precedent, surface it during review, and summarize team consistency over time.
- Safety boundaries held throughout: no automatic enforcement, no user risk scores, no moderator leaderboards, no raw identity storage, aggregate team-level reporting only.
- Not a concept — implemented Devvit menus, forms, Redis-backed storage, a dozen reports, demo tooling, and automated tests, published live to the Reddit Developer Platform.
What we learned
Consistency is one of the hardest moderation problems because it isn't only about rules — it's about how a specific community interprets those rules over time. A mod tool can be high-value without being more aggressive or more automated: sometimes the best tool is a memory layer that helps humans decide with context. And structurally, we learned how to build a Devvit app around mod actions, menu flows, Redis storage, and privacy-conscious aggregate reporting.
What's next for ModCase
ModCase's roadmap deepens team memory without ever crossing into automated enforcement:
- Always-current transparency. Scheduled updates keep each community's public "how we moderate" page and recurring consistency digests fresh automatically — no manual publishing.
- A cross-community norm network. Opt-in, fully anonymized benchmarks so a subreddit can see how communities like it handle the same rules — institutional memory that compounds across Reddit, never sharing raw data.
- Onboarding that scales. Calibration sessions and an auto-generated, decision-based moderator handbook get new mods to the team's standard in days, not months.
- Sharper precedent matching. Optional, moderator-controlled semantic similarity finds the closest past case even when the wording differs — the moderator always still picks the rule.
- Memory built for large teams. Durable retention, exportable audit history, and richer aggregate analytics for high-volume communities and rotating mod teams.
- Precedent where mods already work. Surface the verdict inline in mod queues and removal flows, so consistency is one glance away at the moment of action.
Every step extends the same primitive: a privacy-conscious memory layer that helps humans moderate consistently — never auto-removal, user scoring, or moderator surveillance.
Built With
- devvit
- hono
- node.js
- reddit-developer-platform
- redis
- typescript
- vite
- vitest


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