How the daily cricket puzzles choose their answers
Why every puzzle is decided ninety days in advance, how the weekly difficulty curve works, and what happens when a puzzle turns out to be unfair.
Everybody who plays a daily puzzle eventually asks the same question: is this random, and if not, who decides?
Here is the honest answer for WicketYaari, including the parts that are awkward.
Nothing is random at the moment you play
The answer for any given date is decided ninety days before that date, and written into a row in a database. When you open a puzzle, nothing is being chosen. It is being looked up.
This matters for one reason above all others: the puzzle has to be identical for everyone on earth. A shared result grid is only interesting if the person you paste it to played the same puzzle. If the answer were generated at request time, two servers, two caches or two clocks would eventually disagree, and the grid would quietly stop meaning anything.
Deciding in advance also means a bad puzzle can be pulled before anyone sees it, which brings us to the difficulty curve.
The week has a shape
Puzzles are not uniformly hard. Every player in our dataset carries a difficulty tier from 1 to 5:
- 1 — known to anyone who has watched a highlights package
- 3 — needs someone who follows that format
- 5 — for the person in the group chat who will not stop talking about
1990s Associate cricket
The Cricketer generator then draws against a weekly curve. Monday and Tuesday are gentle, Thursday through Saturday are the hard days, and Sunday comes back down.
| Day | Tier |
|---|---|
| Monday | 1 |
| Tuesday | 2 |
| Wednesday | 2 |
| Thursday | 3 |
| Friday | 4 |
| Saturday | 4 |
| Sunday | 2 |
The curve exists because a puzzle that is always hard is a puzzle people stop starting, and one that is always easy is one they stop finishing. A week that has a shape gives you a day you will probably solve and a day you probably will not, which turns out to be the thing that makes people come back.
Two rules the generator will not break
No repeat inside 180 days. An answer that has already come up is excluded for half a year.
No two consecutive days that feel the same. If yesterday's answer was an Indian batter who debuted in the 1990s, today's will not be another one. The validator checks country, role and debut decade together and rerolls if all three match.
The rule it will break, and why
If the pool is genuinely exhausted, the generator repeats rather than producing nothing.
That is a deliberate choice and not a good one. It exists because a repeated answer is a worse day, while a day with no puzzle at all is a broken product. With the dataset we have today — 88 players and 6 matches — the three match-based games will repeat sooner than we would like, and there is no honest way to dress that up. The fix is more data, not cleverer code, and it is the main thing standing between this site and a proper launch.
When a puzzle turns out to be unfair
Once a puzzle has been played, we can see exactly how it went: how many people solved it, in how many guesses, and what everyone opened with.
The rule we watch is simple. A solve rate under 40 percent or over 95 percent is a badly tuned puzzle, not bad luck. Under 40 and the answer is too obscure for its slot in the week. Over 95 and the day was a free point.
Either way the correction is the same: the difficulty tier on that answer was wrong, so we change it, and every future puzzle drawing from that tier gets a little more accurate.
What the numbers are for
The distribution you see on the result screen — how many people solved it in one, two, three — is not decoration. It is the same data we use to find bad puzzles, shown to you because it is more interesting than hiding it.
The "63 percent opened with Kohli" style of statistic comes from the same place. Every guess is tallied, which is also how we notice when a supposedly hard answer is being found immediately by everyone, because the first guess people reach for happens to be correct.
What happens to your streak if you miss a whole day?
No freezes, no grace period. A streak that cannot be lost is not a reason to come back.
Why the date is UTC and not yours
Every puzzle changes at midnight UTC, everywhere, at the same instant. For somebody in India that is 5:30 in the morning; in California it is late the previous afternoon.
The alternative — a local midnight for each visitor — sounds friendlier and breaks the only thing that makes a daily puzzle worth playing. If your puzzle 214 is a different puzzle from your friend's puzzle 214, the shared grid is meaningless, the conversation about today's answer is impossible, and the streak becomes a per-timezone fiction that changes when you travel.
One date, one answer, one number, for everybody. It is worth an awkward local changeover time.
What happens when a puzzle is wrong
Occasionally one will be. A player's data will have an error in it, or a puzzle that looked fair in generation turns out to have two defensible answers.
Because puzzles are rows written in advance rather than generated at page load, a bad one can be found and replaced before it goes live — which is the main practical reason for the whole design. A puzzle scheduled for three weeks from now can be swapped without anybody noticing.
If a bad puzzle does go live, the fix is to correct the underlying data and leave the puzzle number alone. Renumbering would break every share grid and every streak that referenced it, and the cost of that is much higher than the cost of one bad day.
There is one more reason, and it is about us rather than the site: a buffer that long means nobody is ever writing tomorrow's puzzle tonight. Deadline pressure is where bad puzzles come from, and the schedule removes it entirely.
What the buffer is actually protecting against
Ninety days is a long buffer for a site that could generate tomorrow's puzzle tonight, and the length is deliberate.
If the cron job stops running — a hosting change, an expired credential, a mistake in a deploy — the site keeps working for three months before anybody notices anything. That is enough time for a monitoring alert to be missed, ignored, and eventually acted on.
It also means a data import that goes wrong cannot take out tomorrow's puzzle. The rows already exist. The import affects what gets generated after the buffer runs out, which gives us weeks to notice rather than hours.
What we do not do
We do not adjust your puzzle based on how you have been playing. There is no personalisation, no easier day because you lost yesterday, no harder day because you are on a streak. Everyone gets the same puzzle, and a streak is worth having precisely because nothing is being softened for you.
There is also no money anywhere in this, so there is no version of the question where the difficulty is tuned to make you spend something. Read why there is no money in this if you want that spelled out properly.
The short version
Decided ninety days ahead, tiered 1 to 5, drawn against a weekly curve, never repeated inside six months, never two similar days running, and corrected whenever the solve rate says we got it wrong.
Today's six are on the front page.