Technical note · Structured decision models
Three ways to ask a decision model to play Wordle
Abstract
Getting Jev to play Wordle is a good case study in what a decision model can and can't do. Jev does not write text; it answers typed choice questions with a probability for every option. So a guess has to be framed as choices, and there are three ways to do it:
- One letter at a time struggles. Each question sees the letters typed so far but not the word the earlier questions were aiming for, so it plays greedily: a yellow H gets pushed into every open square (BOHIH, BOHIH, …) instead of the word being re-planned.
- Five separate channels, all letters at once, is degenerate. Each square is its own question and cannot see the others, so every square picks its most common letter: SEEEE.
- Whole word works, once the size is handled. A choice question takes at most 255 options, so the n possible words are split into m groups with m × 255 ≥ n, all m are asked in one call, and a final round picks among the group winners. It is fast and effective.
The catch: code must first remove the words that contradict the clues. Left to do that itself, Jev drifts to look-alike words that break the rules. Exact rules belong in code; the judgment call belongs to the model.
1The three framings
In every framing, code reads the colored tiles after each guess and removes what they rule out before Jev is asked; Wordle itself rejects any non-word, and a rejected word is added to Jev's context for the next try.
(a) One letter at a timeletter-by-letter
Jev answers which letter goes in square N? five times, in order. Each question shows the word so far (A E _ _ _) and the word start each option would make, and asks for a letter that can still finish a real word. Squares already confirmed green are filled without asking.
(b) Five separate channelsparallel-letters
The same five letter questions are sent together in a single request. Each is told the others are being chosen at the same moment, but none can see their answers, because every question in a request is evaluated on its own.1
(c) Whole wordknockout
Jev answers which word should be guessed next? The options are the answers that still fit every clue, all 2,315 before the first guess. A choice question accepts at most 255 options, so the list goes out as groups of up to 255 in one request, and a final question picks among the group winners.
2Why the framing matters
TypeSafe describes each question as “a gut-check determination.”2 Choosing among real words is that kind of judgment: the options are complete, and the model only has to prefer one. Building a word from letters is composition, a plan spread across five decisions. In (a) that plan has to survive five separate questions, each seeing only the letters before it. In (b) there is no shared plan at all, and each channel reasonably settles on the most common letter for its position, which is how S E E E E happens.
The same property that makes (b) fail makes (c) work. Independent evaluation is exactly what a knockout over groups of words needs, since each group should be judged on its own. The lesson is to put exact rules, like which words still fit, in code, and to give the model complete options to choose between.