Inspiration

Reddit moderators usually learn that a thread is going bad after reports start piling up, users are already arguing, and the mod queue is noisy. Oracle was inspired by the idea that many problem threads show warning signs almost immediately: unusually fast comments, sensitive titles, repeat author history, and early report activity.

The goal was to build a proactive moderation assistant that helps mods intervene earlier without removing human judgment from the process.

What it does

Oracle watches new posts and schedules a prediction shortly after submission. After the configured prediction window, it samples early thread signals and computes a Risk Score from 0-100.

The score is based on five signals:

  • Comment velocity compared with the subreddit baseline
  • New or infrequent commenter surge
  • Report rate
  • Author removal history in that subreddit
  • Title sensitivity markers

If the score crosses the moderator-defined threshold, Oracle sends a modmail briefing with the risk level, signal breakdown, thread link, and suggested actions.

Oracle also creates a moderator dashboard post that can be auto-pinned. The dashboard shows recent predictions, critical/high-risk queues, outcomes, accuracy stats, and quick actions for marking whether a prediction became a real intervention or a false alarm.

How we built it

Oracle is built as a Devvit app using TypeScript and Reddit’s Devvit API.

The app uses Devvit triggers for post submissions and moderation events, scheduler jobs for delayed predictions, Redis/KV storage for baselines and prediction history, menu actions for moderator workflows, modmail for alerts, and a custom post dashboard for the moderator-facing UI.

The dashboard uses Devvit Blocks for native moderator controls and an embedded Devvit WebView for the animated “signal field” header. That let us keep the interface functional and Reddit-native while still giving the project a polished visual identity.

Challenges we ran into

The biggest challenge was working within Devvit’s platform constraints while keeping the experience polished. Devvit Blocks are great for app UI and actions, but they do not support smooth CSS animation directly, so the animated dashboard header had to be implemented as a compact WebView asset.

Another challenge was making the dashboard fit inside Reddit’s fixed custom post height. We had to reduce vertical spacing, limit visible queue rows, and visually QA the layout to avoid bottom clipping.

We also had to account for incomplete early data. For example, report count availability depends on what the Reddit API exposes at prediction time, and new account detection cannot rely on external APIs. Oracle handles this with transparent heuristics and stores enough metadata for moderators to understand why a score was produced.

Accomplishments that we're proud of

Oracle is event-driven instead of constantly polling. Each post gets one scheduled prediction job, which makes the app efficient, easy to debug, and naturally aligned with the early-warning use case.

We are also proud of the feedback loop. Mods can mark predictions as Intervened or False Alarm, so Oracle’s dashboard becomes an accountability surface instead of just another alert feed.

The final app is demo-ready: it has settings, moderator menus, modmail alerts, Redis-backed logging, dashboard visual polish, seeded demo predictions, and auto-pinned dashboard support.

What we learned

We learned how to combine multiple Devvit capabilities into one cohesive moderator workflow: triggers, scheduler jobs, Redis, settings, custom posts, menu actions, modmail, and WebViews.

We also learned that moderation tools need to be explainable. A raw score is not enough. Mods need to see the signal breakdown, reason summary, and suggested next steps before trusting an automated warning.

What's next for Oracle

Next, Oracle could improve its prediction quality with longer-term community baselines, per-subreddit sensitivity tuning, trend charts, and better report metadata when available.

We would also like to add optional weekly moderator summaries showing which alerts became real interventions, which were false alarms, and how the subreddit’s early-thread patterns are changing over time.

Built With

  • actions
  • css
  • devvitblocks
  • devvitcli
  • devvitmenu
  • devvitredis
  • devvitscheduler
  • devvitsettings
  • devvitwebview
  • html
  • kv
  • redditapi
  • redditdevvit
  • redditmodmail
  • svg
  • typescript
Share this project:

Updates