How do the Pairings Work?
Pairing algorithms are a complicated but important part of running a Scrabble tournament. The director needs to decide who plays who each round and the players need to be told who to play. There are many different ways to pair a tournament. I will be focusing on the algorithm that I codeveloped with Josh Castellano called cop (Castellano O’Connor pairings).
To start thinking about how to write a pairing algorithm, you need to come up with what factors are important to you when you think about what an ideal tournament pairing system is. Josh and I came up with the following factors.
Limited Repeats — From an enjoyment standpoint, it is not fun to play the same person over and over. From a competitive standpoint, it makes sense to give different players their chance at taking down the leader.
Closeness in the standings — From an enjoyment standpoint, it is not fun to play way up or down in the standings, as it is more likely to create a ratings mismatch. From a competitive standpoint, it does not make sense to pair a top contender with someone that cannot reasonably catch them.
Giving players a chance — Pairings should maximize the number of people that have a chance of winning the tournament
Giving players a chance to control their destiny — Pairings should maximize the number of people that can win the tournament by winning out.
You may notice that some of these things contradict each other. For instance, you cannot maximize both limited repeats and closeness in the standings. Once a player plays all the players near them in the standings, one of the two has to give. To deal with this issue, we use an algorithm called minimum weight matching. With minimum weight matching, you assign weights to different possible pairings based on how bad you consider them to be, and then you find the “least bad” pairings that pair everybody.
Minimum weight matching might sound like a scary math topic, but it’s a relatively simple algorithm that has a lot of real world uses. In fact, it’s what the NFL uses to pick it’s weekly schedules. The NFL’s case is slightly different because instead of using it to pair teams with each other, they use it to pair matchups with time slots.
In the NFL’s case they might want a division rivalry game between two teams that were strong in the previous year (for instance something like Rams vs Seahawks for 2026) t be in one of the special time slots (Thursday night, Sunday night, or Monday night). They would assign something like this a low weight. You might think of this as being a good thing. In terms of the algorithm, it is probably better to think of it as “very low bad” because every weight is a measure of how bad something is, but the same logic would apply. They might not want a very sad matchup in that same timeslot, (something like Browns vs Raiders 2026) so they would assign a much higher weight to that.
Back to the example of tournament Scrabble, we have to assign weights to different things that we don’t like. Repeats, distance in the standings, and ability to catch each other all get weights. If you are a contender, getting paired with someone that cannot catch you is so bad that the cop system gives it an extremely high weight so it can never happen. Repeats and distance in the standings are given smaller weights in order to tweak what is “optimal” without strictly prohibiting anything. There is one last weight that tries to stop premature pairings between the highest players in the standings in order to give more players a chance at coming back.
There are a lot of practical advantages to the cop system over other systems. For instance, one of the things it does right is severely limit repeats. In a normal Swiss system tournament, you set the number of acceptable repeats. If you set the acceptable repeats to one, it means that you are allowing repeats but not threepeats or higher.
This however also means that you do not care how many individual matchups within the round are repeats. If you are repeating, then anyone in the round can repeat. Swiss systems prefer a very specific set of pairings, and “explore” in a very specific order if that specific set of pairings contains unacceptable repeats. They stop as soon as they find an acceptable answer.
Cop pairings, on the other hand, minimize the total number of repeats across one round. Cop considers one single matchup that is a repeat to be bad, two to be worse, three to be even worse, and so on and so forth. Here is an example of a tournament situation where this makes a huge difference.
At this point in the tournament, Wellington, the leader, has played all of the people that have a realistic chance of catching him. Simulations confirm that Chukwudi, the highest player in the standings that Wellington has not played, has a 0.2% chance of winning the tournament. While this is a nonzero chance, I would generally recommend treating anything below 1% as not high enough.
There are two main reasons for this. For one, the more people that you consider to “have a chance” the stretchier the pairings get. This limits the ability for the “mid” contenders to get a chance to come back by knocking out the leader. The other reason is that many rounds in Scrabble tournaments are paired two rounds back to make things go quicker. For instance, these round 22 standings are being used to pair round 24. If someone is below 1% to win a tournament they likely have to win all the rest of their games in order to win the tournament. Setting 1% as a threshold helps avoid situations where someone who is a “contender” in round 22 loses round 23 and then is paired against the leader in round 24 after they no longer have any chance at all.
Because of our self imposed restraints, there must be at least one repeat matchup in order to make the pairings. A Swiss system that allows repeats but not threepeats would work as follows:
It would start by considering pairing me with Wellington, because as the only players with 17 wins we are our own group. It would not allow this because we have already played twice. It would then add Harshan and Matthew Tunnicliffe to our win group. It would favor starting with 1 vs 3 and 2 vs 4 within that group, because Swiss systems start by trying 1 vs 1 below the midpoint and 2 vs 2 below the midpoint etc. This would work and would pair Wellington vs Harshan and me vs Matthew Tunnicliffe. It would then move on to lower groups with the same algorithm. Both of these matchups would be repeats, with the Swiss system completely ignoring the fact that Matthew Tunnicliffe and Harshan have not yet played. Kevin Fraley would be paired with Winter (also a repeat) and then then players with 14 wins and less would be paired according to the same algorithm, likely creating many more repeats.
Cop pairings improves on this by avoiding the rigid groups created in a Swiss system. While Chukwudi might not be able to reasonably catch Wellington in first place, he can reasonably catch Harshan in third. There is no reason that a pairing system should prohibit that, but it would be prohibited in a Swiss system where the two players end up in different win groups. Here is a list of the pairings for round 24 that the cop system chose for the contenders, which includes Chukwudi vs Harshan.
Only one pairing in the whole round is a repeat, yet contenders are playing reasonable opponents. This is the advantage of minimum weight matching. It threads the needle as much as possible between strictly prohibiting someone from playing a non-contender while heavily favoring non-repeat pairings between contenders.
The cop system also automatically generates logs to show you why it came up with what it did. Here are some snippets of the logs used to generate the pairings for this round.
Here is a list of the possible pairings for Wellington. The pairings with an extremely high weight are the ones between Wellington and an opponent that the computer has determined has a less than 1% chance of winning the tournament. At this point in the tournament, there are only 6 players with at least a 1% chance of winning the tournament. In addition, pairing Wellington vs me gets an extra high weight because it has already happened twice while other pairings have only happened once.
Here are the possible pairings for me. As I am in second place, there are more people that have a chance of catching my position. I have already played all of them except for Thomas Reinke. The cop algorithm would strongly prefer that I play Thomas, because it is fairest to give him his chance at catching me when all other contenders have already gotten their chance. It does so by assigning 5 digit weights to all of my other possible opponents and a much lower 729 weight to Thomas.
Going down the line we see more repeats being avoided. Harshan has three contenders possible that he has not yet played. Kevin Fraley would be the “optimal” one because he strikes a balance between the relatively stretchy pairing of Chukwudi and the “too tight” pairing of Matthew Tunnicliffe that would run the risk of locking other players out. Ultimately, the cop algorithm chooses the “suboptimal” opponent of Chukwudi, likely because it helps other players avoid repeats.
Ultimately there is no perfect answer to what the pairings should be. Different people prioritize different things in the pairings and that is fine. I do, however, believe that cop is a distinct improvement on systems like Chew pairings and Swiss pairings because it produces far less repeats while also avoiding situations where a player is matched with someone that has no reasonable chance at catching them.
It is important to remember that Chew pairings and Swiss pairings are both a product of their time. They were both made in the 20th century when computers were much slower than they are today. The fact that they had “stop” conditions that stopped running the pairing algorithm once they found something that worked would’ve been more important in the 20th century. The simulations used for cop are computationally expensive in a way that would’ve been difficult in the 20th century. Therefore, pairing systems like Chew pairings and Swiss pairings should be seen as products of their time rather than complete failures.






In a tournament like Causeway where streaming is an important component, any consideration given to pairing players to generate audience excitement?