Inspiration

Most daily Reddit games are quick, guess-the-word-in-ten-seconds kind of things. I wanted to build something slower on purpose, closer to what makes a mystery novel actually work than what makes a quiz work. I love the moment in a good whodunit where you think you've got it figured out and then one small detail flips everything. I wanted that feeling to live inside a Reddit post, spread out over a week, with other people's guesses and theories sitting right there next to yours.

What it does

A new clue drops once a day for six days. You read it, pick a suspect, and lock in on one guess. While the case is still open, you can post a one-line theory pinned to a suspect, and other players upvote the ones that seem sharpest, so the comment section is doing actual detective work instead of just reacting. You also get to see a live breakdown of what percentage of players currently suspect each person, which shifts as the week goes on. On the final clue day, you get one chance to change your guess before it locks for scoring. Once the case resolves, the solution posts, correct guessers build a streak on the leaderboard, and everyone gets to roast or toast whoever did it. There are four cases so far, each written in a different mystery style on purpose. One is a diary from a narrator who turns out to be the culprit. One is a straight fair-play deduction where every clue is visible to everyone and the answer is genuinely solvable if you're paying attention. One is a found manuscript where the "victim" was never a victim at all. One is grounded and a lot darker, no twist, just a slow accumulation of small wrong details. Players can also submit their own cases, which a moderator reviews before they go live, so the format doesn't run out of content as long as people keep writing.

How I built it

Built on Devvit Web using the official React template, with Hono handling the server routes and Redis for all the game state (case progress, guesses, theories, reactions, leaderboard). No external database, no cron job. The daily clue reveal is moderator-controlled through an in-post button rather than scheduled, which turned out to matter a lot for testing. I worked with Claude throughout the build, mostly for scaffolding the server logic, debugging the Devvit-specific plumbing, and iterating on the UI. The actual mystery writing, case structure, and most of the debugging decisions were very much a back-and-forth process.

Challenges I ran into

Getting a custom post to actually create itself from a moderator menu action took a genuinely long time to get right. reddit.submitPost and reddit.submitCustomPost both failed silently at first, and it turned out the working call was much simpler than the documentation examples suggested, just a title, nothing else. I only found that by comparing against the official template's own working post-creation code line by line. The trickier bug came later: after wiring in a "resolve the case and reveal the answer" step, the reveal screen kept getting skipped; cases would just jump straight to the next mystery with no explanation shown. Tracked it down to a stale import path left over from an earlier project restructure, the server build was silently failing on every save, so every API call all night had been hitting a dead server without me realizing it. Once the import path was fixed, everything downstream (the reveal, the roast/toast bonus, the leaderboard) started working immediately.

Accomplishments that I'm proud of

Getting four genuinely different mystery styles working inside one consistent game loop, that took real care to pull off without making any of them feel like a reskin of the others. I'm also proud of the live guess distribution and the detective board, since those are the parts that actually make the comment section part of the gameplay instead of just decoration around it, which was the whole point from the start. Honestly, just getting the thing fully working end to end by the deadline counts as an accomplishment on its own. There was a stretch where the app looked completely broken, cases resolving with no reveal, buttons doing nothing, and it turned out to be one bad import path from an earlier restructure. Finding that, instead of giving up or shipping something half-working, feels like the real win here.

What I learned

Devvit Web's documentation and its actual installed SDK don't always agree with each other; the working version of submitCustomPost turned out to be much simpler than what the docs showed, just a title and nothing else. Trusting the platform's own working template code over anything else, including official examples, saved a lot of time once I figured that out. I also learned to actually watch the build output instead of assuming a save meant the server picked up the change. A silently failing build looks identical to a working one until you go looking for the error block, and that one habit would have saved a lot of debugging time earlier in the process. On the design side, I learned that "make it instant" isn't always the right instinct for retention. The temptation to remove the daily wait and show everything at once was strong, but the waiting is actually the mechanic; it's what gives people a reason to come back, and that's the entire thing this hackathon is scoring for.

What's next for Read Closely, Trust Slowly

More cases, obviously, and leaning harder into the user-submission pipeline so the case queue is mostly community-written rather than just the four I wrote to launch it.

NOTE: If the game doesn't render immediately on the test post, please refresh or click the post title again, it should load right away.

Built With

Share this project:

Updates

Submission history