Graph Neural Network (~1.25M parameters)
Rather than flattening the board into a list of numbers, the bot models it as a graph. Each hex, edge and settle spot exists as interconnected nodes, structured exactly as they are on the physical board. The GNN processes this structure through message passing, each piece "talks" to its neighbors in multiple rounds until every tile, corner, and edge has absorbed context from across the whole board. The network uses this to score candidate moves and estimate who is currently winning.
MCTS (Monte Carlo Tree Search)
The bot uses MCTS to think ahead, exploring hundreds of candidate moves before committing to the one that consistently leads to good outcomes.
Training
The bot was initialized by watching 45,000 rule-based bot games (~13 million unique positions), learning to predict the winner and imitate the moves played. It then competed against those bots until it surpassed them entirely. Today it trains exclusively through self-play and has played roughly 15,000 games against itself.