Staff Tools

PuzzleSpring includes several specialized tools for hunt management. These are accessible from the staff sidebar.

Team Data Questions

The Team Data Questions page lets you configure custom registration questions for a hunt. Located in the sidebar under “Hunt Setup”, next to Puzzles.

Each hunt has its own independent set of questions - configuring questions on one hunt has no effect on any other hunt.

Question Types

  • Text: A free-text field, up to 200 characters
  • Yes/No: A toggle switch
  • Select (single choice): A dropdown with a staff-defined list of options

Adding and Editing Questions

Click Add Question to create a new question, or the pencil icon on an existing question to edit it in place. Each question has:

  • Name: The label shown to teams when registering
  • Leaderboard Label: An optional shorter label for the leaderboard/participant-info columns. If left blank, the question’s name is used there instead.
  • Description: Optional help text shown under the field on the registration form
  • Type: Text, Yes/No, or Select
  • Required: Whether a team must answer this to register or update their team
  • Visible on Leaderboard: Whether this question’s answers appear as a column on the leaderboard
  • Groups Leaderboard: Whether the leaderboard is split into per-answer tabs based on this question. Only one question per hunt can be used for grouping - enabling it on a question automatically disables it on any other.

For Select questions, enter one option per line. To show different text on the leaderboard than what’s shown in the dropdown, add | shorter text after the option, e.g.:

N/A (not affiliated with any group) | N/A
Rookie
Veteran

Here, teams would see the full “N/A (not affiliated with any group)” text when registering, but the leaderboard and participant-info tables would just show “N/A”. Options without a | use the same text everywhere.

Reordering and Deleting

Use the up/down arrow buttons to reorder questions - this controls both the order fields appear in on the registration form and the order of columns on the leaderboard/participant-info tables.

Deleting a question also deletes every team’s answer to it. This cannot be undone.

Adding Questions to an Active Hunt

Adding a question after teams have already registered doesn’t retroactively require anything of existing teams - it simply appears the next time they visit their team page. Until a team answers it, they’ll show as “-“ on the leaderboard/participant-info, or fall into an “Unspecified” leaderboard group if the question is used for grouping.

Rounds

The Rounds page lets you create and manage a hunt’s rounds. Located in the sidebar under “Hunt Setup”, next to Puzzles.

Click Add Round to create a round, or the pencil icon on an existing round to edit it in place. Each round has:

  • Name: The name shown to teams
  • Order Number: The round’s number. The hunt config refers to the round as R plus this number, e.g. R2.
  • Puzzles: The puzzles in this round. Checking a puzzle that’s already in another round moves it to this one.

Each round also has buttons to view its page and to edit its template in the Hunt Template editor.

Rounds referenced in the hunt config can’t be deleted or renumbered, since that would break the config. Update the config first.

Deleting a round leaves its puzzles in the hunt without a round, and removes every team’s unlock of the round.

Config Tester

The Config Tester simulates puzzle unlocking rules without affecting real team data. Use it to verify your hunt configuration before the hunt begins.

Located in the sidebar under “Hunt Setup”, the Config Tester displays all puzzles in the current hunt and lets you simulate different scenarios.

Simulating Time

The time controls at the top let you set a simulated time offset from hunt start:

  • Use the -1h, -5m, +5m, +1h buttons to adjust time
  • Enter a time directly in +H:MM format (e.g., +2:30 for 2 hours 30 minutes)
  • The absolute timestamp is shown in parentheses

Marking Puzzles as Solved

Each puzzle row has a toggle switch to mark it as solved. When you toggle a puzzle to solved:

  • The solve time defaults to the current simulated time
  • You can edit the solve time in the input field using +H:MM format
  • Toggling off clears the solve time

Results Display

The summary box shows what a team would have earned based on your configuration:

  • Unlocked: Number of puzzles that would be unlocked
  • Solved: Number of puzzles marked as solved
  • Points: Total points earned from config rules
  • Hints: Total global hints earned
  • P. Hints: Puzzle-specific hints (shown per puzzle in the table)
  • Badges: Any badges earned are displayed below the summary

If the hunt has rounds, puzzles are grouped by round, the summary also shows how many rounds are unlocked, and each round’s header shows whether it’s unlocked. A puzzle whose rule is met but whose round is still locked is marked Gated.

Use the Reset All button to clear all solved states and reset time to zero.

If your hunt configuration has syntax errors, they will be displayed in a red notification box.

File Editor

The File Editor provides an in-browser code editor for modifying puzzle and hunt files. It uses the Ace editor with syntax highlighting for HTML, CSS, JavaScript, Django templates, and plain text.

Located in the sidebar under “Hunt Setup”, the File Editor has three dropdown selectors:

  1. Hunt: Select which hunt’s files to edit
  2. Puzzle / Hunt Files: Choose a puzzle, or select “[Hunt Files]” for hunt-level files
  3. File: Choose the specific file to edit

When editing puzzle files, both puzzle content files and solution files are available in the file dropdown.

Editing and Saving

  • Make changes in the editor
  • Click Save or use Ctrl+S (Cmd+S on Mac) to save
  • A status indicator shows “Saving…” and then “Saved!” on success

Only text-based files can be edited (HTML, CSS, JS, TMPL, TXT). Binary files like images and PDFs must be replaced through the file upload interface.

Participant Info

The Participant Info page provides statistics and data export for hunt participants. Located in the sidebar alongside Progress, Feed, Hints, and Charts.

Statistics

The page displays:

  • Total Participants: All users across all teams
  • Total Teams: All teams registered for the hunt
  • Regular Teams: Non-playtest teams
  • Playtest Teams: Teams marked as playtesters

Data Export

Two export options are available for regular (non-playtest) participants:

  • Download Participant CSV: Downloads a CSV file with email, display name, first name, last name, and team name
  • Copy Emails to Clipboard: Copies all participant email addresses for quick pasting

The search box lets you find specific participants or teams by name, email, or team name. Results appear as you type.

Team Data

If the hunt has any Team Data Questions configured, a table of every team’s answers is shown below the search box, one column per question (using each question’s leaderboard label, if set).