Giving a Mod Team a Memory
Reddit's modqueue treats every moderator as a lone agent clearing an inbox. The hardest part of moderating isn't volume, it's the isolation of the borderline call, the inconsistency that creeps across a team, and the judgment that walks out the door when a veteran leaves. Memex is the memory that's missing.
Reddit's modqueue treats every moderator as a lone agent clearing an inbox. But the hardest part of moderating isn't volume. It's the isolation of the borderline decision (the 2 a.m. 'is this over the line?' call you make alone), the inconsistency that creeps in across a distributed team, and the institutional knowledge that walks out the door when a veteran mod leaves.
The CHI 2026 study of how mods actually use the modqueue put numbers to it: 84% of mods leave the queue to gather context, and teams constantly collide and re-litigate the same calls. So I built the thing that's missing. Not a faster inbox, a memory for the team.
Most mod tools make one mod faster at clearing a queue. Memex makes the team decide consistently over time, and stops that knowledge from walking out the door.
It installs as a single Devvit app. There's nothing to configure to start: pick a quorum size if you want, and Memex begins recording every team decision into a shared memory from the first call. No external service, no account, no cost.

Decision DNA: how did we rule on this before?
On any post or comment, one click shows how the team has historically ruled on similar content: the dominant outcome, a consistency score, and the closest past decisions with the reasons mods gave. Inside a decision room it renders as a live banner: 'Team usually: REMOVE, 80% consistent, 5 similar decisions on record.' When outcomes tie, it shows a 'Split decision' state.

The clever part is that low consistency is itself a signal. A 50/50 split isn't noise, it's the system telling you this is genuinely borderline and deserves a team decision rather than a lone call. The whole engine is local: trigram and token Jaccard similarity, batched against per-subreddit Redis with mGet. It works across post types, including link posts, where the domain is folded in so repeat spam and affiliate domains get recognized. No external API, no API key, no per-comment cost, and no ML training on Reddit data. It runs the instant it's installed, on a 200-member sub or a sub with millions, in any language.
Conclave: borderline calls become team votes
Borderline items become mod-only async decision rooms. Mods vote Remove, Keep, Warn, or Escalate; when quorum is reached the consensus action auto-executes for reversible actions. Votes, the quorum meter, and a 'who's reviewing' presence indicator update live for everyone in the room. Because it's async, a borderline post gets a fair team decision without everyone needing to be online at once, which is exactly the reality for a team of 5 mods spread across time zones.

Safety is a setting, not a hope
Bans never auto-execute. They surface as a recommendation that requires a human click, per Reddit's 2026 admin policy on ban bots. The quorum size, the vote window, and auto-routing rules (by keyword or account age) are all explicit settings, with 'bans always require a human click' defaulting on. Every destructive path is guarded against deleted or already-actioned targets. The point: a tool that takes moderation actions on a community has to make its guardrails visible and configurable, not buried in code.

The Rulebook, Calibration, and the Sweep
Every resolved decision flows into three places that turn one-off calls into durable team memory.

- Living Rulebook: a pinned custom post that becomes searchable team memory, with live impact stats and a proportional outcome bar. It's the team's applied rules, not just the written ones.
- Calibration: new mods cast shadow votes that don't count toward quorum; a weekly digest shows exactly where they diverged from team consensus, so they learn the team's standards in weeks instead of months.
- Consistency Sweep: once a day (or on demand), Memex audits recent live posts and flags ones similar to content the team removed before but is still up, using the team's own past decisions as the baseline. Flagged items are reported into the modqueue, never auto-removed. This catches what the team missed.
Why it's defensibly different
The 'shared mod workspace' space is crowded. The institutional-memory layer is not. No other Devvit app surfaces how your team decided on similar content at decision time, scores decision consistency, or calibrates new mods against the team's real pattern. The voting and live updates are the delivery mechanism; the memory is the moat. Plus the quieter touches: native Reddit mod-notes on every team decision, and appeal assist (when a user messages modmail, Memex adds an internal note with the Decision DNA for that content so the team responds consistently).
How I built it
Everything runs on Devvit, Reddit's developer platform, in TypeScript with the Blocks UI. A single custom-post dispatcher renders both the Conclave room and the Living Rulebook. State lives in per-subreddit Redis. Live updates and presence run on a lightweight 2-second useInterval poll backed by a Redis sorted set. 55 automated tests run the real vote, quorum, execution, precedent, Decision DNA, and calibration pipeline against in-memory fakes of Devvit's Redis and Reddit clients.
What broke (and the Devvit footguns I found)
- Realtime (useChannel) never connects in playtest and threw fatal unhandled rejections that silently killed my poll. I removed realtime entirely and built reliable live updates on useInterval plus Redis.
- useInterval silently drops setState from a detached async callback, so the handler must itself be async and awaited. A sharp, undocumented footgun.
- The ModMail trigger's messageAuthorType serializes as ParticipatingAs_PARTICIPANT_USER, not the documented participant_user, so appeal-assist skipped every real message until I matched the wire value.
- A precedent-duplication race: the mod action fired its trigger before the conclave was marked closed, double-recording decisions. Fixed by persisting state before executing.
What I learned
The bottleneck in moderation isn't reading speed. It's decision legitimacy and team coherence. Reframing the problem from 'make one mod faster' to 'give the team a memory' produced a tool mods actually want. Every destructive path is guarded, the suite is green, and it works on non-English subreddits, the instant it's installed, with zero external cost.