In this tournament, each competitor will develop their own Chess bot in Python. The competitors’ bots will fight against each other in order to determine the winner.


To enter the tournament, each competitor will participate $20 into the pot. The competition will have just one winner, who will take all the money in the pot.


To register for this competition, text Gado at 781-957-8643 to let him know and pay him $20 (venmo: @ahmedehabg, zelle: 781-957-8643).

  1. Deadline for registration is 2023-01-22 at midnight.
  2. You will take one month to work on your bot.
  3. You will submit your bot’s code by 2023-02-21. You can submit your code multiple times by that deadline. The last submission will be used.
  4. The tournament will take place on 2023-02-21 live. You will be able to attend it through Google Meet or in person.


  1. Don’t reference any material other than chess material: the only material you are allowed to consult is chess references only. For example, you can read books or watch Youtube tutorials that teach chess for human players. You are not allowed to consult any other material, including materials for algorithmic chess play, or any machine learning materials. The point of this tournament is to just use your creativity and knowledge of chess rules and strategies to create a bot. You are allowed to consult materials for general programming which includes, for example, Python tutorials or Stackoverflow answers. Materials that cover algorithms for games are forbidden. Use your imagination to come up with an algorithm!

  2. No ChatGPT or any other language model use allowed.

  3. You are allowed to test your bot against a human player including, but not limited to, yourself. You are also allowed to test your bot against other bots that are available online.

  4. The time limit for each bot in each game is 15 minutes. If a bot runs out of time, it loses.

  5. If a bot crashes or provides a bad output, it automatically loses that game.

Bot Specification

The tournament will make heavy use of the python-chess package. Your bot must adhere to the following Python interface:

class BotInterface(object):
    # Args:
    #   board: object of type chess.Board that represents the chess board at the start of the game.
    #   color: object of type chess.Color which represents the bot's color for this game.
    def __init__(self, board):

    # This method should return a chess.Move object which represents the move that the bot wants to play.
    # Note:
    # - if an invalid/impossible move is returned, the bot automatically loses. Make sure you always return a valid move!
    # - each player has 15 minutes for the whole game. Each time this method is called, the amount of time is takes is discounted from the 15 minutes.
    def next_move(self):
  • Your bot should never crash or throw an uncatched exception. If it does, it automatically loses that game.

How to determine the winner

Each bot will play every other bot in 3 games. If it wins a game, it gets 1 point. If it loses or draws, it doesn’t get any points. The bot with the highest points wins.