Inspiration
Reddit threads are full of tiny mysteries already — edited comments, deleted posts, timestamps that don't quite add up. I wanted to build a game that didn't invent a fantasy world on top of Reddit, but treated the platform's own everyday texture — comments, timelines, deletions — as the actual mystery material. Something closer to Ace Attorney or Return of the Obra Dinn than a trivia quiz: a case you investigate, not a question you answer.
What it does
The Sleuth Feed drops players into a daily detective case built from Reddit-style artifacts: a post that vanished before it could reveal something big, a thread full of suspects, and evidence scattered across comments, timestamps, and witness statements. Players investigate an evidence board, pin clues in a notebook, and build a theory — naming a suspect, a motive, and the evidence that proves it — before getting a cinematic reveal of whether they cracked the case.
Case #017, "The Vanishing Post," centers on a deleted callout post accusing a community member of running a fake giveaway scam. Four suspects, eight comments, a timeline, and one culprit whose real motive only becomes clear once you connect a DM exchange, a trade log, and a browser session left open at the wrong moment.
How I built it
Built on Devvit Web with React, TypeScript, and Tailwind for the frontend, using Devvit's own hosted Node.js server and built-in Redis storage rather than standing up external infrastructure — everything runs inside Reddit's own platform.
I deliberately chose not to let AI generate the mystery itself. Real Reddit threads are messy and inconsistent by nature, which fights against a fair, solvable puzzle with exactly one correct answer. So every case is handcrafted — suspects, motives, clues, and the solution are all authored and logic-checked by hand, so the "aha" moment is always earned, never arbitrary. AI's role is scoped to narration, hints, and flavor text, not the mystery's logic.
Challenges I ran into
The biggest challenge wasn't game design — it was a subtle Devvit-specific wiring bug. My loading screen and main game shared a component file, and that file had a side-effecting mount call baked into it. The moment the loading screen imported the game component, that mount call fired too, creating two React roots silently fighting over the same DOM node. The result: the app looked stuck on a loading screen with no visible crash anywhere. Tracking it down meant learning Devvit's sandboxed webview architecture in real time — the outer page's browser console shows Reddit's own scripts, not your app's, so you have to specifically target your app's iframe to see real errors. I ended up adding a dedicated error boundary so future issues would surface directly on-screen instead of failing silently.
What I learned
Scope control mattered more than any single feature. I started with a much bigger spec — multiple game modes, ranked play, a full social layer — and cutting it down to one polished daily mystery, built and tested end-to-end before adding anything else, was the single best decision I made.


Log in or sign up for Devpost to join the conversation.