The Problem: What Does a "Fair" Board Even Mean?
We play regularly with four people, usually with the Cities & Knights expansion. The arguments start while laying the board: can wood sit next to the 2:1 wood harbour? Can two 6s and an 8 share the same intersection? And why does one player have four tiles worth 18 pips while another is stuck with 7?
The standard rulebook simply says shuffle. That is fast, but occasionally produces grotesquely unfair setups. Laying by eye sparks debates.
What we actually wanted was a board that simultaneously satisfies these conditions:
- No two identical resources on adjacent tiles
- The "red" numbers 6 and 8 not next to each other
- No identical numbers on neighbouring tiles
- No 2 and 12 as neighbours (both extremes together)
- Balanced pip values per resource: wood, wool and grain each 9 to 16 points, brick and ore each 6 to 13
That sounds like a lot, and it genuinely isn't something you verify by hand in two minutes while laying tiles.
The Idea: Let AI Solve It
At the time, Anthropic had just released Fable, their newest model. I wanted to try it out, as a fair Catan board is essentially a constraint-satisfaction problem. That should be right in a capable language model's wheelhouse.
My first prompt was as simple as it gets:
"I want a fair game board for Settlers of Catan (Cities & Knights, 4 players). Can you create that for me?"
I expected a short explanation of the rules, maybe some tips for manual placement. What I got was something else entirely.
From a Prompt to a Tool
The AI didn't describe a board. It generated a complete web app. A single HTML file with embedded CSS and JavaScript that rolls a new, rule-compliant board at the click of a button and draws it directly in the browser as an SVG.
I was thrilled.
The initial version already:
- Placed 19 land tiles on the classic hex grid and rendered them as SVG
- Distributed resources under the base constraints (no identical neighbours)
- Assigned numbers 2 to 12 so that no 6 and 8 are adjacent
- Displayed harbours at the correct positions of the standard frame
Refined Together: the Fairness Rules
Over the following iterations we extended the generator step by step. I described what I felt was missing and the AI added the logic. The result is a generation algorithm with two phases: first the resource tiles are placed (up to 4,000 attempts until no two identical resources are adjacent), then the numbers (up to 6,000 attempts, scored against all fairness criteria).
Something I find especially handy: every board gets a board code, a short alphanumeric string like F-K3M9XQ. You can copy the code and load it next session to reproduce the exact same board. Useful when a particularly good layout shows up. Harbours are also clickable directly in the SVG to cycle through types.
Try It Out
The generator runs entirely in the browser, no server, no dependencies. Click "↻ Neues Brett würfeln" (roll new board) to generate a board. The fairness dropdown lets you choose between frei (free, harbours ignored) and streng (strict, harbour constraints active).
Note: the generator UI is in German. The key controls are: the roll button on the left, the fairness dropdown on the right, and the board code field below the board.
Make It Yours
All the logic lives in a single, self-contained HTML file, no build step, no dependencies. You can download it via the links above or view the source directly in your browser (Ctrl+U / Cmd+U).
Other ideas that are easy to add:
- Player count: The 19-tile board is already correct for 3 players; for 5 to 6 (expansion) the hex grid would need to match the larger Seafarers board.
- Additional constraints: Cap pip sums per corner, push resource groups further apart.
- Look & feel: Colours and fonts can be changed in the stylesheet section at the top of the file.
Conclusion
I started with a simple wish: a fair board for a round of Catan. What I got was a complete generator that, after a handful of iterations, does exactly what we had in mind: fair boards at the click of a button, reproducible via code.
What surprised me most: the AI didn't wait until I had a finished specification. It distilled a vague wish into a concrete outcome and pushed me to sharpen my own requirements step by step. For small tools like this one, that way of working is unbeatable in speed. For a look at how AI assists with complex SAP development tasks, see Using AI for ABAP Test Coverage Checks.
Next time you get into an argument about the fairness of your Catan board: here's your answer.