Case studyLive
Hockey Pick’em & Sub Pulse
Two apps on Reddit’s Developer Platform: a free-to-play hockey prediction game, and a weekly health report with alerts for moderators.
- Role
- Solo — design, code, policies, publishing
- When
- 2026
- Backend
- Full-stack
Sub Pulse’s listing is not public yet; its policies are. The source is private.
Who it’s for
- Hockey communities on Reddit that want a daily pick’em game without money, odds or a separate site.
- Subreddit moderators who want to know how their community and their queue are doing — without opening five tools every week.
What I built
- Hockey Pick’em: a daily slate post where players pick winners and call overtime, with picks locked on the server at puck drop, live period and clock, and season and weekly leaderboards with optional flair.
- Sub Pulse: a weekly one-page digest to modmail (and optionally Discord or Telegram) — activity, growth, modqueue, mod actions, bans, admin actions — plus alerts with hysteresis and a mod-only dashboard post.
- Everything runs inside Devvit’s serverless runtime: scheduler jobs, Reddit-hosted Redis, and a declared allowlist of outbound domains.
- I wrote and published the terms and privacy policies for both apps, and built data deletion in: per-user delete, a daily sweep for deleted accounts, and retention limits.
How it works
1Install & choose
A moderator installs the app and picks league mode or a team (Pick’em), or the digest channel and alert levels (Sub Pulse). Nothing posts until they do.
2Schedule
Hourly and five-minute jobs sync the schedule and live scores, or poll the modqueue and roll up the day’s counters.
3Play / watch
Players pick before puck drop; moderators get a live dashboard post and an alert when the queue overflows — once when it starts, once when it clears.
4Score / report
Finished games are scored exactly once, in short chunks; every Monday the digest compares the week with the one before.
5Forget
Retention limits, a delete button for users and a daily sweep for deleted accounts keep only what the app needs.
Key decisions
01
Score exactly once, in chunks
Instead of: Score everything in one long job when the games end.
Why: Serverless jobs have a time limit and can be retried. Each finished game is scored exactly once, in pieces of at most about twenty seconds, so a big community finishes over a few runs and a retry never awards points twice.
02
Alerts as state machines with hysteresis
Instead of: Send an alert every time a threshold is crossed.
Why: A queue hovering around its limit would page moderators every five minutes. Each alert fires once when it starts and once when it clears below half the threshold; admin-action alerts are batched to at most one an hour.
03
Store counts, not content
Instead of: Keep post and modmail text to build richer reports.
Why: Moderators trust a tool that can’t leak what it never had. Sub Pulse keeps counters and ids with expiry dates, never bodies, and both apps document exactly what they store and for how long.
04
Delivery claimed per channel
Instead of: Send the digest to every channel in one pass.
Why: Modmail, Discord and Telegram fail independently. Each channel claims its weekly send, so the next hourly tick retries only the one that failed — nobody gets the same digest twice.
Architecture
Both apps share the same shape: UI in a Reddit post, logic in Devvit’s serverless handlers and scheduler, state in Reddit-hosted Redis.
Numbers
- apps shipped on Reddit’s platform
- 2
- test files
- 33
- live scoring and modqueue polling interval
- 5 min
- post or modmail bodies ever stored
- 0
Tech stack
Platform
- Devvit Web
- Reddit API
- Scheduler
- Redis
App
- TypeScript
- React
- Vite
- Tailwind CSS
Quality
- Vitest
- ESLint
Gallery

Hockey Pick’em’s public listing on developers.reddit.com.
Want the longer version — the code, the pipeline, the trade-offs?
Email me