Inspiration

Moderating a busy subreddit often means opening the mod queue and working top to bottom—even when one post has five spam reports and another is a routine check-in with a single flag. Reddit’s queue is built for fairness, not risk-first triage.

I built QueueIQ to answer one question mods actually care about: “What should I look at first?” I wanted something transparent (no black-box AI), tunable per community, and fast to install—the kind of tool that fits the Reddit Mod Tools hackathon and the Devvit platform.

What QueueIQ does

QueueIQ scores every item in your mod queue with configurable rules and surfaces a prioritized dashboard inside your subreddit:

  • Ranked queue — Posts and comments sorted by urgency score, with color-coded priority and filters (posts / comments / minimum score).
  • Explainable scores — Expand any item to see a line-by-line breakdown (reports, keywords, karma, repeat reports, time in queue, young accounts, mod reports, flair bonuses).
  • Mod actions in one place — Approve, remove, spam, lock/unlock, ignore reports, and ban (with confirmation and optional notes).
  • Per-item score menu — “QueueIQ score” on any post or comment from the mod menu.
  • Auto-refresh — Re-scores every 5 minutes, on new reports, and on demand.
  • Optional auto-remove — When score and minimum report thresholds are met (capped per run, with an audit log).
  • Moderators only — API and UI are restricted to subreddit mods.

QueueIQ complements Reddit’s native mod queue; it does not replace /mod/.../queue, but gives mods a sorted, auditable view and actions in a single custom post.

How I built it

QueueIQ is a Devvit mod tool (queue-toolk) with:

  • Server: TypeScript, Hono, Devvit Web (@devvit/web) — mod queue API, scoring engine, Redis cache, triggers, cron scheduler.
  • Client: React + Vite custom post (dashboard.html) — inline “tall” post moderators open from the subreddit menu.
  • Config: Subreddit install settings for keywords, weights, flair rules, and optional auto-remove thresholds.
  • Tests: Vitest for scoring, settings parsing, and core helpers.

Flow: on install/upgrade/report/cron → fetch mod queue → score snapshots → store rankings in Redis → dashboard reads /api/queue and /api/refresh.

What I learned

  • Devvit’s mod-tool UX is split: native Mod Tools (queue hub) vs subreddit ⋯ menu for app actions vs developers.reddit.com for install settings—not always obvious for first-time mod users.
  • Playtest vs production behave differently (Redis, settings API, submitCustomPost); designing fallbacks and clear banners mattered.
  • Install settings can return numbers as strings; parsing and re-fetching on refresh was essential so changes actually apply.
  • Moderators trust tools they can audit—showing reports × 3 + keywords × 5 + … beats a single opaque “risk score.”

Challenges

  1. Finding install settingsreddit.com/mod/.../apps 404’d; the working path is developers.reddit.com/r/{sub}/apps/queue-toolk plus the subreddit mod menu.
  2. Custom post dashboard — Mod-tool popups can’t host full React UI; the dashboard had to be a custom Devvit post with menu navigation and reliable post creation on install/upgrade.
  3. Playtest limitations — When the live API fails, bundled demo snapshots and Redis fallbacks keep the demo working without faking production behavior silently.
  4. Scope vs polish — Balancing “one-click triage” (filters, breakdowns, mod actions) with hackathon deadline and Devvit permission boundaries.

Scoring (default formula)

Signal Default Notes
User reports ×3 each From report count
Banned keywords ×5 per match Configurable list
Low-karma author +4 flat Below karma threshold
Repeat reports ×2 Beyond first report event
Time in queue ×1 per hour Capped at 7 days
Young account +3 flat Account age in days
Mod reports ×5 each Mod-submitted reports
Flair rules custom e.g. News:10, Meme:5

All weights are editable in install settings. No LLMs—every point is inspectable.

Who benefits

Communities with frequent reports—spam, scams, brigading, or high-volume subs—where mods lose time scrolling past low-risk items. QueueIQ targets time saved and fewer missed high-risk posts.

Built With

Share this project:

Updates