Inspiration

Moderation is often described as a queue problem: remove bad content, clear reports, move on. But after talking through real mod workflows—and reading how teams on large subs coordinate—we kept hearing a different pain: mods aren’t only busy removing posts; they’re busy finding context.

Who was already watching this thread? What did the overnight mod know? Did reports spike before we opened the comments? That information usually lives in modmail, Discord, or someone’s memory—not in a shared, post-linked place on Reddit.

We started the hackathon with an idea called ModPlaybook: one-click removal playbooks with strike-based escalation. It was technically interesting, but we stepped back and asked: Would judges and mods install this on Monday? Reddit already teaches strike patterns; AutoMod and Toolbox cover much of enforcement. The sharper gap was coordination: open items, shift handoffs, and “why we’re watching this thread.”

That pivot became ModDesk (moddesk-ops): a Reddit-native mod operations board built entirely on Devvit—no external server, no injected UI, no recurring hosting cost for mods.

What ModDesk does

ModDesk gives moderators:

  • A pinned ModDesk Board (custom post) showing active watches, a handoff note, and recently resolved items
  • Mod menu actions to add watches (with a reason), resolve, snooze 24 hours, check risk summary, update handoff, and export for wiki backup
  • Report velocity (configurable: X reports in Y minutes) via Redis, with optional hot indicators on watched posts

Regular users don’t interact with the app directly—they post, comment, and report as usual. Mods coordinate on top of normal Reddit flows.

How we built it

Stack: Devvit (@devvit/public-api), TypeScript, Devvit Redis, custom post type (Blocks UI), module-level forms (Devvit.createForm), and a PostReport trigger for velocity tracking.

Architecture (high level):

Key modules:

Module Role
storage.ts Watch CRUD, handoff, board post ID, export markdown
velocity.ts Sliding-window report counts per post
board.tsx Custom post render (handoff, active watches, resolved, export preview)
menus.tsx Subreddit + post/comment mod menu items, triggers
forms.ts “Add to board” and “Update handoff” forms
settings.ts Per-installation velocity thresholds (X reports / Y minutes)

Setup flow we optimized for judges:

  1. Install moddesk-ops on a test sub
  2. Subreddit menu → Create / Open ModDesk Board (one click)
  3. Pin the board
  4. All other actions from post/comment mod menus

We uploaded via devvit upload, which created a playtest sub (r/moddesk_ops_dev) and installed the app automatically.

Demo design: We used three Reddit accounts—one regular user (reports a “hot thread” post), two moderators (add watch, risk summary, snooze, resolve)—to show a realistic coordination loop in under few seconds.

What we learned

1. Product beats feature count

A “five-step removal macro” is easy to copy conceptually. A persistent ops board tied to mod menu actions is easier to defend as novel and daily-use for multi-mod teams.

2. Devvit fits mod coordination well

  • Redis per installation is ideal for watches and handoff state
  • Custom posts make the board visible and pin-able like a team dashboard
  • Forms + menu items keep mods in familiar Reddit UI (no separate admin panel)

3. UX details matter for trust

  • Refresh after menu actions — we state this on the board so mods aren’t confused when state updates
  • Snooze vs Resolve — we designed copy and demo flow so mods understand: defer vs done
  • Honest limitations — reinstall clears Redis; we added Export to wiki so teams aren’t surprised

4. “Not a sticky post” is the demo sentence

Judges may think it’s a checklist post. Our strongest proof is menu → refresh → board updates—state driven by actions, not manual editing.

5. Velocity is a hint, not a verdict

Report count in queue already exists; our value is tying velocity to watches the team chose and surfacing it in Risk summary before mods invest time in a thread.

Challenges we faced

Pivoting mid-hackathon

Letting go of ModPlaybook’s strike engine was hard—we’d already spec’d Redis escalation and playbooks. The pivot cost a day of thinking but saved us from shipping a crowded category entry.

Devvit CLI and account setup

devvit upload required full developer account setup and browser OAuth. The app name moddesk-ops was chosen when moddesk wasn’t available— we aligned devvit.yaml with the portal.

Where the mod menu lives on new Reddit

The “shield” isn’t always obvious; on our layout, ModDesk actions appeared under the subreddit ⋯ menu next to Mod Tools. We documented this in README and the demo video so installers aren’t lost.

Custom post refresh

The board doesn’t live-update in real time on every action; mods refresh to see new watches. We considered useInterval but kept v1 simple for reliability and hackathon scope.

Report velocity scope

v1 listens to PostReport only—comment reports don’t increment the counter yet. For demo, we report the post from a user account, then run Risk summary on the mod account. A future version would add CommentReport for richer signals.

Redis durability

Installation-scoped Redis resets on reinstall. We documented this and shipped Export board so mods can paste state into a sub wiki—turning a platform constraint into a trustworthy README section.

Three-account demo logistics

Switching accounts, recording, and syncing voiceover with “refresh the board” took more time than coding the snooze handler. Production value is in clarity, not complexity.

Impact (why it matters)

ModDesk targets coordination time, not seconds per removal:

  • Faster handoffs — next mod reads handoff + active watches in ~30 seconds
  • Fewer duplicate actions — shared “why we’re watching” on the sub
  • Better prioritization — risk summary before deep thread reads

Example communities: r/AskReddit-style subs (multi-timezone teams), r/worldnews-style subs (incident spikes), mid-size advice subs with 5–30 mods and no formal ops stack.

What’s next

  • CommentReport trigger for velocity
  • Optional “reopen watch” from resolved history
  • Sticky reminder when active watch count exceeds a threshold
  • Publish to App Directory for broader mod teams beyond playtest

Try it

ModDesk — because mods deserve a control room, not another inbox.

Built With

Share this project:

Updates