Wrap-Up
Overview
Huge thanks to everyone who has participated in our hunt!
Congratulations to the 59 teams that have finished! Special congratulations to ጰ ETHIOPIC SYLLABLE JUST A SMALL TOWN GIRL for being the first to do so in just 19 hours and 17 minutes.
Out of all teams registered:
- 267 solved at least one puzzle.
- 95 solved the Budding metas.
- 10 solved all 27 puzzles.
Production Process
Objectives
A lot of the puzzle writers are native Chinese speakers and got into the puzzle hunting rabbit hole through a Chinese hunt, while also having some background living in English-speaking countries. We've been wanting to explore possibilities that the two types of subtly different writing ideologies can somehow make a fusion. It's hard to draw a line between the two, and we can't really describe the differences precisely based on my current understanding. But throughout the time doing English hunts with native Chinese-speaking teammates, we've seen a lot of comments about how many word-based clues and heavy readings are needed, in comparison to Chinese hunt puzzles, which are more oriented by visuals, intuitions and classical encodings. This objective also fostered the name Huntingale, which came from Hans Christian Andersen's fairy tale The Nightingale, his only story with an oriental background. The blend did turn out to be observable, as we had the heavy usage of encodings in puzzles like Arcane Rhythms and Green Aster, as well as tons of ISIS (Identify, Sort, Index, Solve, as coined by Foggy Brume) puzzles and clues.
Timeline
This section was written on behalf of nightmeow.
This hunt is my high school graduation capstone, and I started the initial brainstorming during my junior year after Mystery Hunt 2024. The overall structure (including both episodes) was modified from a deprecated theme proposal I made for another hunt that's probably no longer running.
After finalizing the metameta structure in late March, I reached out to Amon, the hunt advisor, through shooting an email (my personality is a very realistic projection of Hitori Gotoh from Bocchi the Rock!, so this was probably the greatest achievement I've ever accomplished in my whole life). I saw his name during GPH 2023, my first English hunt, and got really caught off guard by the Canadian jokes that he put in. Later I found out that he lives in the same city as me, so we scheduled a quick meetup in mid-April. He introduced me to a couple of puzzle hunter servers as well as local puzzling events (like DASH and Puzzled Pint), which opened up a lot of new connections and opportunities for me. At this point, I started recruiting for the writing team and the alpha testers, which eventually evolved into a collage of people from a number of different teams. The alpha testing for some round metas (including the metameta, the Budding metas and two metas in ep. II) also started around this time. The original structure consists of seven rounds (with one featured as the final runaround), with around 70 puzzles in total (including metas). I was way too optimistic about how fast my ideas could generate, so I set the aim of finishing writing by the end of the year.
Frankenstein, the first feeder puzzle that was used in this episode of the hunt, was written on June 23rd, followed by a simple ISIS puzzle regarding Wikipedia hoaxes (which later evolved into I Forgot to Do the Background Check! after 10 months). We used the primitive voice call way to test because we didn't know Puzzlord existed (big loss). After that, we got into a stasis from summer to winter because of different errands that our team members had (mainly college applications for me). At the time only 20% of the puzzles were written according to the original 70 puzzles plan, including 6 puzzles that were close to the form you saw in this hunt (namely, Frankenstein, Green Aster, A Modern Variation, Moving Day, Big Painter and The Elite League), as well as 8 others that either eventually got scrapped, rewritten or placed in later rounds.
The full swing of writing resumed in January 2025, right after the Mystery Hunt. We had an internal meeting to finalize the hunt schedule and discuss logistics. During that we decided to divide the story into two episodes, so that (i) the hunt can be released before May (my school's deadline for capstone projects), and (ii) I could really settle down to refine the quality of my puzzles. The website then came out quickly on February 11th, as 50% of the puzzles were done at the time. Many of the previously finished ones were also rewritten, since my writing style also kind of changed after doing some hunts during that period (e.g. EC Puzzle Hunt 2, Vehemusical, Mystery Heist, Advent Hunt 2024, and of course, Mystery Hunt 2025).

Of course I minimally spoiled that "there's gonna be a PP-related puzzle", but nothing besides that sentence.
The full-length beta testing happened between March 21st and 23rd. At the time, all but four puzzles were finished. However, the website database related to submissions was unexpectedly broken due to a system modification made for the second episode, so six puzzles in total were unavailable. Due to that problem, we adopted the caveman way of calling in and validating answers with text messages. After that, The Last Supper meta and The Band's New Original meta were largely rewritten while keeping the same feeder answers. Good thing these two metas weren't strictly constrained.
It turned out that we probably would all desperately fail in approximations (thankfully I wasn't the one doing the FerMIT challenge for my team in MH25). During the writing process, we intentionally set the difficulty bottom line to be around Puzzle Rojak 2, although a lot of the puzzles turned out to be a lot harder than they were supposed to be. The beta testing team estimated that the fastest finishing time would be around 8 hours, and we disclosed to the public in that way, saying that the difficulty is probably around Rojak 2 or REDDOThunt. That was miserably wrong. We deeply apologize for those who felt struggled after seeing our "beginner-friendly" disclaimer from Puzzle Hunt Calendar.

We finished implementing the two interactive puzzles (I Forgot to Do the Background Check! and When the Air Vibrates) on April 13th and 20th, respectively, and the two round arts on April 15th and 24th. The last puzzle, Open World, was submitted on April 25th at 3:00 PM PDT, which was exactly one hour before the hunt. Huge appreciation to Wayne (Idontknow) for helping out with some last-minute puzzle testing. We're all deadline fighters, as you can see.
Design
A lot of the designs are filled with the vibe of chuunibyou (eighth grade syndrome?), such as the blurry story writing: having a lot of imagery and disjointed clauses can somehow "make it sound very deep"; and it's nonetheless not a very crucial part of this hunt. Someone said that it was probably written when the writer was dreaming, as the image was hopping here and there without a guideline. That's actually the feeling we wanted to give out, just like some random scattered sentences about the world that a young girl would jot down while daydreaming. We can't really say much about the entire plot outline and specific details yet, as we're still halfway there.
Regarding the rounds, we wanted to include settings that are in the daily routine of any small-town girl. The garden setting for the first round came from a deprecated intro puzzle about the Vocaloid song Flos. We've also been wanting to include the church setting, which, according to the beta testers' word, is "delightfully unorthodox" and can produce some great art (and also, as the graduation capstone to a Christian school, it's safe to have some very loose religious connections that aren't touching any bottomlines).
A huge shoutout to RonnieQ for making the hero art and all the round arts, and nightmeow's younger sister for making the bottom of the home page background. It's a big pity that we can't really elaborate on many of the very important details in the arts without spoiling the rest of the hunt, although they have made the making process uncommonly funny. The key principle throughout was "they have to look like the hand drawing of a 17-year-old girl". Overall, we wanted to lean towards some twilight, hazy and heartwarming vibe, just like a dreamy fairy tale. We were referring to a variety of masterpieces when deciding the general styles, such as the homepage art of Brown Puzzle Hunt 2024 (the one with the long dock) and the moon mist ice cream. The homepage design is a tribute to EC Puzzle Hunt 2 (mainly the tower round), where we're trying to make the hero art as a tower window, so the barcode used in I Forgot to Do the Background Check! can be more smoothly integrated as a wallpaper.
Here are some first-hand plain drafts of the hero and round arts, with some design details (puzzle icons, colors, etc.):



nightmeow: if I ever try to touch art ever again in my life I'm really gonna kill myself
Tech
Huntingale was forked from the classic gph-site used in GPH2023 (Django/gunicorn/nginx/PostgreSQL), and we made some slight modifications to both the backend logic and the data model, so that we could implement various Huntingale-specific features such as interactive components and the unique unlock and submission structures (some of them are to be found in the second episode). The web UI was instead adapted from GPH2022. Originally the hosting server was on Tencent Cloud, and later got moved to AWS.
Our cloud infrastructure was (almost) fully in Amazon AWS, which included:
- 1 single-instance Elastic Beanstalk environment on EC2 T3 micro, covered by Free-Tier;
- 1 RDS database on EC2 T4g micro, covered by Free-Tier;
- Basic 10K subscription to Mailgun to send automated emails to teams.
Due to budgeting concerns, we made the following compromises:
- We didn't utilise any Redis cache, which meant that team-wide notifications (e.g. for solves) were not broadcast.
- Our Elastic Beanstalk instance didn't scale, which meant that our server was under pressure serving high loads (such as the very beginning of the hunt);
- This was further exacerbated by the lack of CDN for static resources and a lack of a dedicated server for processing interactive queries.
We hope that these did not cause too much discomfort to teams. Under these conditions, our overall cost breakdown for the hunt was brought down to (considering only during the hunt, excluding the development costs):
- 15 USD for Mailgun;
- 4 USD for one Amazon WorkMail account;
- 4 USD for VPC (used to communicate between server and database);
- 9 USD for miscellaneous costs, including briefly exceeding Free-Tier costs, additional data-transfer costs, S3 storage costs (for backups) and taxes.
Overall, we strived to make sure that our service is reliable and scalable, and most importantly, cost-effective, if needed.
1000 errors in the console
Enthusiastic teams that poked around the console would probably notice the failure of WebSocket connections (although we didn't receive any complaints). This is a by-product of opting to abandon caching (and by extension, broadcasted notifications, which was the original purpose of utilising WebSockets). We totally forgot about removing the WebSocket connections, at least until after the hunt.
We did try using the production instance to also simultaneously handle caching (e.g. through Django's built-in in-memory cache), but in the end decided not to, leaving the possibility of scaling to multi-instance under high load. That would result in state inconsistencies if the cache isn't independent of the production instances.
"Please do not submit this often"
The two interactive puzzles in the hunt both required teams to send queries to make progress. Originally, to allow different members of the same team to be rate-limited separately, our rate-limiter counted submission frequencies based on the submitter's IP address (or that's what we believed would happen). However, during the hunt, many teams reported that they were unable to make queries, despite being well under the rate limit. Further investigation showed that the rate limit appeared to be shared between all teams, which was admittedly quite hilarious (sorry). We promptly altered the rate-limiting rules to be shared across each team. Unfortunately, to this day, we still couldn't diagnose the root cause of why our IP-based rate-limiter didn't work. We sincerely apologize to all teams affected by this incident.
The time when forgetting your password = new account
Automated emails were used in many parts of our system: successful registration, password reset, and notification for answering hints, etc. We only made it work until we were really approaching the hunt. The reason was that we were desperately trying to raise the sending cap for our AWS Simple Email Service (SES), after making tons of requests and watching them fail. AWS has a very strict policy to only allow quality (and safe) customers to use SES as part of the project, in order to protect their brand reputation by closing all possible doors for scammers. We didn't want to give up this opportunity to use SES, since (i) we are trying to use only AWS in our infrastructure, and (ii) the cost of SES is super competitive. Despite that, we still eventually couldn't get the request granted, so we instead chose Mailgun.
More email shenanigans
Despite resolving the issue of automated emails initially, partway through the hunt, Mailgun stopped working. Mailgun said they have a quota of "3000 emails per month" under their free tier, which we estimated to be enough. However, the quota turned out to be evenly spread out throughout the month (which means actually 100 per day). We quickly reached this quota and many emails failed to send, which alerted us through Discord logging. We quickly upgraded our plan with Mailgun to their Basic plan, although some hints answering emails were never sent.
Aside from our mistakes, a small number of emails still failed to send, despite the receiver's address being correct. We couldn't figure out the causes, so these unsent emails were never handled. We're sorry, and we hope that they didn't cause too much trouble.
Long bill (no this isn't a duck reference)
Our initial cloud bill for Huntingale was almost 300 USD (which nightmeow actually paid, thinking it was the norm for running a hunt qwq). This was due to us not freeing up unused resources (*cough* Redis cache during development) and not reading the exact range of services covered by Free-Tier. Fortunately, all of these costs were refunded after speaking with an AWS representative.

Future
Running a hunt is very, very, very tiring without an established team and procedural organization. The second episode (which will contain 40-50 puzzles) will come out, but we can't give an estimation on when at this point. By saying that, we're definitely open to having new writers and other new minds join the team!
Meanwhile, there are also a couple of hunts throughout the summer! Check out the Puzzle Hunt Calendar for upcoming hunts, including:
- June 7: Microsoft Puzzle Hunt 24
- July 12: Singapore Puzzle Hunt (Paid)
- July 12: The 2025 Truzzle Hunt
- August 22: Galactic Puzzle Hunt 2025
Credits
All the names are in alphabetical order.
Hunt director
nightmeow
Puzzle writers
Bulaisien, ClashのRPC, Edam_Cheese, Gizmo, nightmeow, RonnieQ, Whitefox_September
Artist
RonnieQ
Developer
Taiga
Advisor
Amon (humfuzz)
Alpha testers
Edward_Z, Hidden Villager, Idontknow, inequality, Rainy, Raspberry, Sierra, TUTUTU, Zimodo
Beta testers
AshleyKitty, Benji, manofsteele, Scoping Landscape, sushi, Zomperzon
Special thanks
Brightly_, dodomos, Puzzled Pint Vancouver
Fun Stuff
Stats
Some stats are available at the Hunt Stats, Big Graph and Big Board pages.
Team Shoutouts
- First blood: wait what's the difference between discord or zoom, who got the first solve of the hunt by solving Breakfast Time 5m 8s after the start.
- Last solve: Mr Ree Polka (tl), who solved Big Painter two minutes before the hunt ended.
- Guess accuracy: Galatectic Huntfollowers, who finished the hunt with the lowest number of incorrect guesses, 5.
- Guess happiness: 洋名真难取, who submitted the most incorrect guesses, 164.
- Fastest 100%: salutecissimus, who solved all 27 puzzles in 24h 47m.
Hints
The total number of hints asked was 1510. The puzzle with the most hint requests was No Longer Attractive, with 180 hints total. The least requested puzzle was Green Aster, with only 13 hints, followed by Breakfast Time, Diagramful Crosswords and I Forgot to Do the Background Check!, with 14, 15 and 15 hints respectively.
We would like to congratulate the following teams for finishing the hunt without using any hint:
- 웃 HANGUL SYLLABLE JUST A CITY BOY
- why do we make a new team name every time?
- Plughperfect
- 🐆🐆Cheatahs🐆🐆
Additionally we would like to shout out Quaint Dreamers and Intervarsi-Teammate: Another Place To Retreat for using all 13 hints given to them.
Hint requests were answered by five different people in the writing team:
- nightmeow: 813
- ClashのRPC: 536
- Bulaisien: 123
- Gizmo: 21
- Whitefox_September: 17
Comparison with other hunts
*Note that Brown Puzzle Hunt 2024 ran for 31 hours; and Vehemusical ran for 48 hours.
**The puzzle count of GPH 2024 does not include the custom puzzles.
***Teammate Puzzle Hunt 2025 and Brown Puzzle Hunt 2025 were not listed because of their special rules (the former having no leaderboard and the latter being divided into two weekends for different teams).
Notable Guesses
Here are incorrect guesses on various puzzles that we have found funny or otherwise interesting (puzzles and submissions are listed in alphabetical order):
Big Painter
DOCTORHOUSES - Cyfur
THISWASAFUNPUZZLEZING - This Small Burg's Idyllic
Breakfast Time
DANIELTIGERSNEIGHBORHOOD - Hee-ho
GREATING (after NOW DO EATING) - (multiple teams)
NOWGOEATING - (multiple teams)
BREAKING NEWS!
TEN (after XOR PINS) - (multiple teams)
HUGSANDKISSES (after XOR PINS) - Aronfrim Pioneer Hotel 🕊
THREEWIFEMEN - MyTeam
TOYSTORYII - Mavericks
Frankenstein
HALAL - Inappropriate content / salutecissimus
Green Aster
IMWINGGASTERTHEROYALSCIENTIST - :praytrick:
ISPELLEDITWRONGFUCK - Literally The Ones Who Walk Away From Omelas
Hunt in Gale
IMNOTINVOLVED - Cyfur
Hunting Ale
AREYOUSUREWESHOULDBEHUNTINGALEINACHURCH - This Small Burg's Idyllic
ONEOFTHEPIECESISFROMTHEFUTUREWEASSUMETHISISNOTINTENTIONAL - 웃 HANGUL SYLLABLE JUST A CITY BOY
THEPIECEALPHATANGODOTPNGSAYSNOVEMBEREIGHTHOFTHISYEAR - 웃 HANGUL SYLLABLE JUST A CITY BOY
I Forgot to Do the Background Check!
CALLHIMSHIRLEYMAYBE - stɹeɪjə maɪt
KEVINXU (nightmeow's real name) - Neophilydor Erythrocercum Subfulvum
XEVINKU - Neophilydor Erythrocercum Subfulvum
No Longer Attractive
EVERYONESGIVENUP - Donuts
Open World
TANGOZULU (after NATO TZ CODES) - (multiple teams)
The Band's New Original
TIETHEIRGSTRINGS - 🍓➡️🐢
The Curse of the Pirate Mist
WHATISTHISCLUEPHRASEFROMJACKSPARROWBRUH - Intervarsi-Teammate: Another Place To Retreat
Vintage Battle
DOISERIOUSLYHAVETOGOTHROUGHALLTHESONGSAGAIN - Intervarsi-Teammate: Another Place To Retreat
THEREDARMYISTHESTRONGEST - VNX2025
When the Air Vibrates
CHICKENJOCKEY - (multiple teams)
Submissions
Please contact us if you would like any submission to be removed.
When the Air Vibrates
A selection of submissions is featured here, with the team names and the movie titles labelled.
Hunt in Gale
A selection of submissions is featured here, with the team names and the task numbers labelled.
Continental Allocation
All the submissions are featured here since we only got 13 shareable submissions in total.