Team Edamame

1st overall · IEEE CoG 2026 Codenames AI Competition

Listener-gated clues

The model proposes. Code decides.

An LLM can invent a clue, but its output should not go straight to the board. Before a clue is announced, Python checks what a teammate is likely to guess. It then plays the clue, reduces the guess count, or rejects it.

Play ClueCast

What we borrowed

Google DeepMind's Code World Models for General Game Playing (Wolfgang Lehrach et al., 2025) separates model output from game action: an LLM writes an executable world model, then search chooses the move. We borrowed that separation—not the algorithm.

We did

  • Treat every generated clue as a proposal.
  • Check its predicted guess order against the hidden board labels.
  • Let Python accept, shorten, or reject it.

We did not

  • Generate an executable game model.
  • Run MCTS or search the clue space.
  • Call the listener forecast a Code World Model.
The model proposes a clue. A gate checks the predicted listener path against the key, then rejects the clue, shortens it, or plays it.
Figure 1. The listener gate. The model proposes; code decides.

Published here

IEEE CoG 2026

Team Edamame submission

A credential-free copy of the policy entered in the competition.

Browse submission

Implementation details

1 Competition submission

The scoring makes caution rational: a win is scored by clue count, a loss scores 25, an illegal action can disqualify the entry, and a callback over 60 seconds fails. The agent therefore announces at most 2, never takes a bonus guess, and always has a legal fallback.

A primary request (45s) and a backup request (15s) start together. The agent waits at most 50 seconds for the primary, then uses a ready backup or a deterministic legal clue.

The board starts a primary and backup request together. A usable answer is gated by 50 seconds; otherwise the agent plays a deterministic legal clue.
Figure 2. Parallel generation under a 50s wall clock.

The same model response contains both the clue and the teammate's first two predicted guesses. Because that model can see the key, this is a forecast, not an independent simulation. An unsafe first guess rejects the clue; an unsafe second guess lowers the number to 1; two safe guesses keep the proposal.

A key-aware clue with two predicted guesses is accepted only after legality and own-card checks. An unsafe first guess rejects the clue; an unsafe second guess shortens it to one.
Figure 3. Forecast gate. Two words, no extra model calls.

2 ClueCast

ClueCast has more time, so it uses a stronger gate. One model proposes a clue and target set. Two independent, key-blind listener simulations rank the board. Python combines their rankings, then retries an unsafe clue, lowers its number when risk appears later, or plays it unchanged. After three failed proposals, it leaves the turn unchanged.

A model proposes a clue. Two key-blind listener rankings are combined. An unsafe first step retries or leaves the turn; later risk lowers the number; a clear path plays it.
Figure 4. Sim gate. Independent listeners, then retry or wait.
SubmissionClueCast
Clock50s, then a legal fallback3 attempts, then wait
Numbers{1, 2}Remaining own cards
ListenerSame-call forecast, two wordsTwo key-blind rankings
GuesserExact nClassic n+1
Table 1. Competition submission versus ClueCast.

Repository Methodology Evaluation Lehrach et al. · Google DeepMind · 2025 diagram-design