Codenames: the spymaster gives one clue word and a number, and the team guesses their cards without hitting the assassin. In an era when we bolt an LLM onto everything, I wanted to see how far classic tools and a little local geometry could go, so I built a Hebrew Codenames copilot that gives better clues than I do. Word vectors, some geometry, zero large language models. The idea: words are vectors. A good clue is the point closest to your cards and farthest from everyone else's, with a heavy penalty for drifting toward the assassin. Along the way, a small static model (fastText) gave stronger, safer clues than a 12B Hebrew LLM, a reminder that this task rewards a clean vocabulary and careful handling of risk more than raw scale. I'll show what worked, why Hebrew makes it genuinely harder, and where the simple approach breaks and how to fix it. No heavy math, and there's a live demo you can try.

AI Engineer at Apiiro