Inspiration

I became an active Reddit user fairly recently, around two months ago, and quickly started spending a lot of time here.

What stood out to me was that many Reddit communities value logic, common sense, and thoughtful discussion more than emotional noise, chaos, and pointless arguments, which are common on other social platforms.

That made me think a logic-based daily game could feel right at home within the Reddit community.

What It Does

Every day, a new mystery is published in a single Reddit post.

Each case is a 4 × 3 logic grid: four suspects matched with three categories - clothing, time, and an object. Every puzzle has exactly one logically provable solution.

Players eliminate impossible combinations. Each clue turns green when the current answer is consistent with it and red when there is a contradiction.

Once all 12 cells are filled and every clue is green, the case closes automatically. There is no guessing - the complete solution must satisfy every clue.

After solving the case, players see their completion time, daily streak, rank, and where they placed on the day's leaderboard - then compare and defend their reasoning in the comments.

The community then votes on the difficulty of the day's case - harder, about the same, or easier. These votes help determine the difficulty of the following day's puzzle.

How We Built It

The game was built using Reddit's developer platform, Devvit Web, with an Express server.

The difficulty engine is a deterministic TypeScript port of our reference Python solver. We use automated parity tests to make sure both implementations always produce the same results. No AI is involved in validating or solving the cases.

The solution and timer are stored exclusively on the server in Redis, so players cannot modify their results from the client.

We also created a bank of 120 pre-generated cases. Every case was checked for uniqueness, and a scheduler automatically publishes one new puzzle each day.

Challenges We Faced

  • Guaranteeing that every generated case has exactly one solution through exhaustive checking, while keeping generation fast enough to build a bank of 120 cases.
  • Making the logic grid feel clear and natural inside a Reddit post on both desktop and mobile.
  • Keeping the solution secure by never sending it to the client, while still providing immediate green and red feedback.
  • Finding the right difficulty balance so each case feels satisfying without being either trivial or frustrating.

What We Learned

We learned how to build exact parity tests between a Python solver and its TypeScript port, how to work with Devvit's web client/server model, and how to design a daily retention loop around streaks, rankings, leaderboards, and community difficulty voting.

We also learned that puzzle difficulty is not simply about adding more clues or making the logic more complicated. The hardest part is maintaining the narrow line between a puzzle that feels too easy and one that feels unfair.

What's Next

Next, we plan to add:

  • Deeper leaderboards - weekly and all-time boards alongside the daily top-3, a longest-streak ranking, head-to-head "same case, who's faster" challenges, and a cross-community global board.
  • Player-created cases, with the engine auto-verifying a single provable solution before a case goes live.
  • A Hardcore difficulty level (🔴) for detectives who crack the daily too fast.
  • Richer community statistics - per-case "hardest deduction" breakdowns, solve-time trends, and difficulty-vote history.
  • Seasons, with monthly resets and a hall of fame.

Built With

Share this project:

Updates

Submission history