Inspiration

As a Reddit moderator, I've seen the same gap again and again: the mod log tells you what happened (removed, banned, warned), but when someone appeals—or when a different mod picks up the thread—there's often no shared record of why.

Spreadsheets and mod notes break down at scale. I built VerdictLog for the Reddit Mod Tools hackathon to give mod teams appeal-ready decision memory without leaving Reddit.

Tagline: Every mod action gets a reason. Every appeal gets an answer.

What it does

VerdictLog is a Devvit Web app for subreddit moderators:

  • Log Verdict — From any post or comment (⋯ menu), I record rule, severity, decision template, and a short reason. The form pre-fills author, link, and timestamp, and shows how many prior verdicts exist for that user.
  • Search User Case File — In the expanded app, I search by username and see non-expired verdicts, newest first.
  • Copy Appeal Summary — One-click formatted text for modmail or appeal replies.
  • Configure Rules — Subreddit rules (enable/disable) feed the Log Verdict dropdown.
  • Retention & safety — Configurable TTL (default 90 days), manual delete per verdict, moderator-only access.

Privacy by design: VerdictLog does not store post or comment body text—only structured metadata mods choose to log.

How I built it

I built VerdictLog on Reddit's Developer Platform (Devvit Web):

  • Frontend: React 19 + Tailwind CSS 4 in a custom post (splash inline → game expanded view)
  • Backend: Hono serverless routes for menu actions, forms, and install triggers
  • API: tRPC v11 between the React UI and server for type-safe case file search, rules, and settings
  • Storage: Redis with per-subreddit keys (vl:{subredditId}:*); JSON user index where list commands aren't available
  • Integration: Devvit menu items (post, comment, subreddit), showForm for Log Verdict, Reddit API for mod checks and content metadata

I scoped the MVP deliberately: no AI, no analytics dashboards, no auto-enforcement—just fast logging and fast recall for real mod workflows.

Challenges I ran into

  • Devvit form payloads — Select fields arrived as arrays, not strings, which broke validation until I added coercion on submit.
  • Navigation from subreddit menunavigateTo requires a full Reddit URL, not game.html?page=search. I resolved this by opening the VerdictLog custom post and passing the target tab via a short-lived Redis flag.
  • Playtest vs publish — Separate Devvit CLI auth and Reddit web login; private demo subs blocked logged-out judges until I documented public access.
  • First-run UX — Disabled rules don't appear in Log Verdict; I added install-time default rules (Spam, Civility) and in-app guidance on the Rules tab.

Accomplishments that I'm proud of

  • A complete mod workflow I dogfooded end-to-end: log verdict → search case file → copy appeal summary.
  • Moderator-only security on every menu, form, and tRPC path.
  • A clear privacy story mods can explain to their communities (no body storage, TTL, delete).
  • Shipping v0.0.10 to Reddit review while keeping playtest viable on my demo subreddit.

What I learned

  • Devvit Web fits workflow tools well—menus and forms keep mods in-context; the expanded custom post handles richer UI (search, config).
  • Moderation tools should optimize for seconds, not features: one short reason field beats a long form.
  • Reading platform quirks early (form types, navigation rules) saves painful playtest debugging later.

What's next for VerdictLog

  • App Directory approval — v0.0.10 is in review; after approval, any mod can install from developers.reddit.com/apps/verdictlog.
  • Performance — Cache moderator checks instead of listing all mods per request.
  • Optional enhancements — Modmail thread linking, export case file, reminder nudges after removals (out of current MVP scope).
  • Community feedback — Incorporating mod input from #mod-chat and r/Devvit before the next release.

Built With

Share this project:

Updates