

Two levels. The lower one runs all the time and inside one company; the upper one comes together once a quarter and pits companies against each other.
| Level | What happens | Who takes part |
|---|---|---|
| Inside the company | Games online and at in-person evenings, mini-games, an internal rating | Anyone who wants to, with no selection and no limit on numbers |
| Company team | The platform picks the line-up based on a ten-week window | Six people on six boards plus two reserves |
| Division | Team matches against each other, relegation and promotion at the end of the season | Companies that are comparable by results, not by size |
| In-person final | Once a year, after the fourth season | The best teams of the division and the winner of the Engagement Cup |
The lower level is what we already have running: people play when and where they like, come to evenings and solve puzzles. The company league itself - with its own rating, divisions and seasons - can be set up in the app right now; how exactly is in the next section. Corporate formats usually have no such level at all: an employee gets a login from the captain, sits down at a computer at a set time a few times a year, and between those dates the product doesn't exist for them.
The Vibe Chess app has a Leagues section. A league there is a standing group of players: a company, an office, a club, a university. It has its own rating, its own season table with points for places and, if needed, divisions. Any user of the app can create a league; nothing needs to be switched on separately.
| What a league has | How it works |
|---|---|
| Its own rating | A separate Elo rating list. Only this league's tournaments move it: games an employee plays elsewhere don't touch the league table |
| Divisions | Labels inside the league: departments, offices, cities, branches. The table can be filtered by division, while the overall rating and season stay the same for the whole league |
| Seasons | The period the result is counted over: a quarter, half a year, a year. A closed season is saved as a snapshot of the table and stays in the league's history with its winner |
| Season points | For the place in each league tournament, plus points just for taking part - they keep people in the league between tournaments |
| Membership | Builds itself: an employee signs up for a league tournament and becomes a member, with that tournament's division. No lists to keep by hand |
| Privacy | An open league is visible to anyone in the Leagues section. A private one only to the organiser and those who play in it: others can't see it even with a direct link |
The key thing here is the separate rating. The app has one global rating for everything, and the company table would be shifted by any open tournament an employee played at the weekend in another city. A league doesn't have this problem: its number changes only from games within the league. The reverse still works - a league tournament counts towards the global rating too, because its games are real.







The league screen in the app has three tabs: Points, Members and Tournaments. Above them is a strip of divisions: All plus a chip for each department or office - tap it and only your own people stay in the table. In the list of leagues, every card shows who runs it and the person's own place if they play in it.
A removed employee is not deleted: their games and past results remain, the table simply stops showing them, and they can be brought back into the league with one button. Guests the organiser added without an account don't get into the league - just as they don't get into the global rating.



Points in a game and season points are different things. In a game everything is as usual: a win is 1, a draw ½, a loss 0. These add up to a place in the tournament table, and for the place the league awards season points.
| Place in the tournament | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Season points | 25 | 20 | 16 | 13 | 11 | 10 | 9 | 8 | 7 | 6 |
On top of that, everyone who came and finished gets points for taking part - 2 by default, and the organiser sets their own number in the league settings. So the tournament winner takes 27 points, tenth place 8, and eleventh and below 2. That is enough for an employee who comes to every tournament to overtake, by the end of the season, someone who won once and disappeared.
The league rating works on the Elo system: between equal opponents a win gives about 16 points, for a strong player against a clearly weaker one almost nothing.
The line-up is calculated from a ten-week qualification window. Everything a person played inside the corporate circuit counts: online games, games at in-person evenings, internal tournaments. As soon as the line-up starts being picked by hand, everyone else stops playing - so here transparency matters more than convenience.
| Board | Who takes it | Why this way |
|---|---|---|
| 1-3 | Top 3 by the internal rating of the window | Team strength and fair sport |
| 4 | The best of those who have played fewer than twenty games | The debutant's board: the company has to bring on new players |
| 5 | The best by mini-game points | A way in for those who don't play chess |
| 6 | The best by in-person games in the window | Draws people to live meetups |
Boards four to six are the key mechanic of the whole league. A company can't win with three strong employees: to fill the remaining three boards decently, it has to involve newcomers, puzzle fans and those who come to the evenings. The line-up is visible to everyone in the company and recalculated live - a person can see they are two wins away from a place in the team.
A place in the division table is made up of four parts. This is the central decision of the whole design: the team's result decides more than half, but not everything.
| What we count | Weight | How it is counted |
|---|---|---|
| Team strength | 55% | Points for division matches |
| Reach | 25% | The share of employees who played at least one game in the window |
| Offline | 12% | How many people came to live meetups |
| New people | 8% | How many employees played the first game of their life |
Reach is counted as a share, not a headcount: otherwise a large company would always win, purely because of its size. The share is taken from the headcount stated in the contract, and understating it to gain points doesn't pay - the fee is calculated from the same headcount.
That is why there are two cups. The League Cup is for strength, by the sum of everything above. The Engagement Cup is only for reach, offline and new people. A sixty-person company won't beat a bank on strength, but it can easily beat it on the share of people taking part.
You can't take a tournament table to whoever signs off the budget and ask for another year. So once a quarter the company gets a report - and it is made up not of places but of the things usually measured with surveys.
| Figure in the report | Where it comes from |
|---|---|
| How many employees played at least once, and what share of the headcount that is | Game history |
| How many came back in the second month and the third | The same, by windows |
| How many new acquaintances between departments | The graph of opponent pairs |
| How many people made it to in-person meetups | Events and seating at the boards |
| Who played the first game of their life | Titles |
| How participants' ratings grew | Rating and table snapshots |
The headline figure here is acquaintances between departments: not a feeling from a survey but a fact - how many pairs of people who didn't know each other before played each other.
The report is delivered as figures only and by department, with no surnames and no results of any particular person. Otherwise employees would stop playing the day they found out their manager can see their losses.
Corporate chess is sold in two ways, and the difference between them determines not the price but how many people in the company will play.
| Model | What happens in practice | Who ends up playing |
|---|---|---|
| Payment per registered player | Every new participant adds to the bill, so the company registers its strongest | A handful of people out of the whole staff |
| Payment per company per year | The bill doesn't depend on how many play, so involving people pays off | Everyone who wants to |
We work on the second one: the company pays for a year, with no limit on the number of participants. The cost depends on headcount and is quoted on request. The basic plan includes a closed circuit with the company's logo, the internal rating and qualification, four league seasons, mini-games, titles, the quarterly report, the regulations and closing documents.
Priced separately are a turnkey in-person evening, a tournament at a conference or company party, branded equipment and an international circuit for companies with offices abroad - the interface exists in eleven languages.
From a phone and whenever it suits them. A division match isn't squeezed into one morning: a round is spread over a week, each match is played on its own day, and the time is agreed by the two captains within an 18:00-21:00 window in the visiting team's local time. That removes two objections at once - "it's a working day for us" and "our office is seven time zones away".
The time control in a match is 10 minutes plus a 5-second increment per move, two games against each opponent with colours reversed. The twelve games of a match take about an hour.
We don't do video surveillance with roll calls, although it does occur in corporate formats. It scares off exactly the people the whole thing is for. Fair play rests on other things: move-time statistics from the game log, in-person matches in the play-offs and the final, and the fact that people play under their own names among colleagues, not anonymously.
The league is signing up its first companies, and the first season is free for them - in exchange for the right to name the company among the participants and to get a testimonial. The goal of the first season is not money but three figures that can then be shown to the next companies: the reach share, the return rate in the second month and the number of new acquaintances between departments.
While there are few teams in a division, it is more honest to call things by their names: the first season is played not as a division with relegation but as a round robin of everyone against everyone, and the full inter-company stage is launched once there are enough teams. The internal level works from day one - it doesn't depend on how many companies have joined.
What we need from the company: the headcount for calculating the fee and the reach, a decision on whether to split people into divisions by department or office (an employee joins the league by themselves when they sign up for the first tournament), and agreement on data processing - inside the circuit a person is visible by name, and only numbers go outside.
You can put the mechanics together on your own - we have written about them separately and hide nothing: team scoring and boards, a tournament between departments, how many rounds a team needs and how a match between companies works.
How to build a club league season out of stages and count the points: a chess club league.
The difference is not in the rules but in the routine between stages: pairings, scoring, the overall table, messages to players. That is where the enthusiast who carries a league alone burns out. The Leagues section in the app takes this routine over: it handles the pairings and the tournament table by itself, and recalculates the league rating and season points after every finish.
A year-long format with two levels. Inside the company there is a qualification all year round: employees play online and at in-person evenings, solve puzzles, and the platform keeps an internal rating. Once a quarter a company team is picked by that rating, and the teams play matches against each other. Once a year there is an in-person final.
The company pays for a year, with no limit on the number of participants: the bill doesn't grow because two hundred people started playing instead of eight. The cost depends on the company's headcount and is quoted on request. The first season is free for the first companies.
The platform picks it based on a ten-week window; a captain doesn't appoint it. Boards one to three go to the strongest by internal rating, board four to the best of those who have played fewer than twenty games, board five to the best at mini-games, board six to the best at in-person games. So a company can't win with three strong employees.
A quarterly report: the share of staff who played at least once, the return rate in the second and third month, the number of new acquaintances between departments, how many people made it to in-person meetups, who played the first game of their life and how ratings grew. Figures and department breakdowns only, with no surnames and no results of any particular person.
No. Board five of the team goes to the best at mini-games, not at games, and employees who played the first game of their life carry a separate weight in the team score. It pays for a company to have beginners start, not only those who already play.
A round is spread over a week, each match on its own day, and the captains agree the time within an 18:00-21:00 window in the visiting team's local time. You can play from a phone. No working time needs to be set aside.
Yes. The Vibe Chess app has a Leagues section: you create a league, split it into divisions by department or office if you like, and create league tournaments - Swiss or round robin. The app handles the pairings, the tournament table, the league rating and season points by itself, and employees join the league by signing up for their first tournament.
No. The league has its own rating list, and only this league's tournaments move it. The global rating in the app does take league tournaments into account - their games are real.
With divisions. These are labels inside one league: each league tournament can have a division, and an employee who signs up for it goes into that division. The league table can be filtered by division, and a tournament for the whole league, such as a super final, is held without a division.
The organiser taps Close the season. The table is saved as a snapshot and stays in the league's history with its winner, season points reset to zero, and the league rating is kept. While the league has an unfinished tournament, the season won't close.
Yes, with the Private league switch. Only the organiser and those who play in it can see it; it isn't shown to anyone else even with a direct link. The league's tournaments themselves still appear in the app's general feed.
Pairings are computed by bbpPairings, an open-source engine implementing the Dutch system by FIDE rules: score groups, floats on an odd field, colour alternation. Free to use.
The bot is constantly improved based on real tournaments. If you need a feature that isn't there yet, message the developers right inside the bot with the /support command. Many features appeared exactly because organizers asked for them, and useful ideas get added quickly.
How to run a single company tournament yourselves, with screenshots - a corporate tournament in the app. Related - matches between companies, turnkey corporate tournaments, chess for HR, chess team building, chess at a company sports day. Tie-breaks - the Buchholz score.
At the board since childhood: hazy about his rating, precise about every rook he has blundered. Counts an evening as a good one if the opponent stayed to talk afterwards instead of rushing off to check with an engine. Message →