Tabletop Mystery Session
Requirements: Python 3.10+ for validation and kit export. System-neutral; no copyrighted game rules or paid platform required.
Deliver a mystery people can run at the table, not just a plot synopsis. The full ZIP includes an original playable museum theft, structured evidence, a clue-access validator, NPC scheduling checks and a Markdown kit builder.
Choose the session
Use the user's player count, session length, genre and boundaries. Default to 3–5 investigators, 150 minutes, low-violence mystery if unspecified. Read the facilitator notes for pacing and the distinction between evidence, inference and a suspect's claim.
Start from The Last Bell at Glass Harbor, an original one-shot with four suspects, five scenes, twelve clues and four required deductions. Either run it as supplied or adapt the setting and details. Preserve the causal solution while changing names and atmosphere; if the culprit, method or times change, update all affected clues and timeline entries.
python3 scripts/build-kit.py templates/glass-harbor.json /path/new-mystery-kit
The builder validates IDs, references, clue diversity, scene access, single-clue-loss resilience, and overlapping NPC events. It writes gm-guide.md, a separate player-handouts.md, and a validation report. It refuses an existing output directory. No network calls or game accounts are required.
Make the mystery playable
Put the solution in the GM guide before scene prose: what happened, why, how it could be proved, and what is still a choice. Each essential deduction needs three clues across at least two locations and three evidence channels. A failed roll can impose time, attention or cost; do not lock essential information behind one roll. NPC claims may be lies, but label them as claims in GM notes so contradictions are intentional.
Keep clues as concrete observations. A rust stain can support a route; it does not automatically prove identity. Use multiple clues to connect means, motive and opportunity. Handouts carry only evidence players can receive; hidden culprit notes and NPC schedules stay in the GM file.
The included checker tests structure, not whether the fiction makes sense. Independently walk the case from the players' opening information. Explain how every required deduction follows from the evidence, test at least one plausible wrong accusation, and record any clue wording that gives away too much or proves too little. Verify the culprit's movements against the timeline and physical route.
Deliver and run
Deliver the GM guide, spoiler-separated handouts, source JSON and validation report. Give the facilitator a 20-second premise and preparation estimate. If the group uses a specific game system, adapt only relevant challenge resolution; do not invent or reproduce licensed rules. Match the group's boundaries, and make pausing or changing uncomfortable content easy without a player needing to explain why.