Case Study: Pyramids Queue
One operator was running a 500-player esports circuit out of a spreadsheet, a Discord server, and a group chat. We replaced it with four systems on one database.
The problem, in the client’s words
Pyramids Queue runs the MENA circuit for Wild Rift, feeding into Rift Legends, the EMEA league. Cup 7 had 536 players, 195 matches, and seven streamers producing 4,394 hours of watch time.
All of it was coordinated by hand. Registration was people posting rosters into a Discord channel. Standings were a spreadsheet somebody updated between matches. The results a broadcaster read on air came from a different place than the ones on the website. Nobody could answer “where are we” without asking three people.
The cost was not the tools. It was that one person was the integration layer between them, and that person could not take a week off.
What we built
Four systems, sharing one Postgres database. That last part is the whole design.
PyramidsQ Bot
A Discord bot that registers teams from a pasted roster, reads a Toornament bracket screenshot, creates a private channel per match with both team roles in it, DMs every player a direct link, posts the rules, fires a ready check ten minutes before kickoff, and reads the end-of-game scoreboard into per-player statistics.
Nexaro Teams OS
The staff platform. 57 screens across tasks, approvals, reporting, directory, chat, and a 36-screen esports module covering tournaments, matches, incidents, prize pools, staff shifts, broadcast logs and fantasy.
pyramidsqueue.com
The public site. Schedule, standings, player statistics, rosters, prizes, rules, and an explainer of how MENA feeds the EMEA league. Sixteen pages, five of them live from the database on a sixty second refresh.
The database
One Postgres instance behind all four, with row level security as the boundary between seven separate competitive circuits.

The result a match takes
- 1A moderator runs one command in the match channel with the end-of-game screenshot.
- 2The bot posts the score to the results channel, writes the series score to the database, and reads the scoreboard image into per-player rows.
- 3Standings on the public site update within a minute. Player statistics do not. They wait.
- 4A staff member checks the extracted rows against the screenshot in Teams OS and approves them. Then they appear.
Nobody retypes anything. Nobody reconciles two sources.

The decision that defines the system
Automation removes typing, never judgement.
Anything a model extracted is held unverified until a person approves it, and the filter that enforces that lives in a database view rather than in a page, so no future feature can bypass it by querying differently.
That distinction is not decoration. Wild Rift scoreboards print no champion names, only a circular portrait, so the champion field is image recognition rather than text. The model is instructed to return blank when unsure. A blank column a referee fills in is a minor annoyance. A confidently wrong one that reaches a public leaderboard is an argument, and after that nobody trusts any of the numbers.
Match scores are treated differently and publish immediately, because a score is a number a moderator typed. There is nothing to verify.
Multi tenancy, from day one
Seven circuits run on one deployment: Türkiye, Spain, Italy, France, DACH, CIS and MENA. Each sees only its own data, and that is enforced by row level security in the database rather than by a filter in application code, so a missing where clause in a future feature cannot leak another circuit’s data.
White label throughout. Your name, your colours, your domain. The customers of a customer never see us.
A new tournament, department or workflow is a settings change. No branch, no redeploy, no per-customer codebase to maintain.
Proof
Pyramids Cup 7 ran on this end to end. Pyramids Cup 8 opened on it in September 2026.

Why it did not become shelfware
Because the team that built it uses it every week to run a real tournament. Every awkward edge in the product exists because something went wrong on a live match day and had to be fixed by the following week. That is also why the roadmap has not drifted into features nobody asked for.
See the live artefact
Pyramids Cup 7 ran on this system end to end. The public site is live now.