CLIENT: Tuulgol Esports League🇲🇳Mongolia

Khuleg - Esports Tournament Platform from Registration to Prize Payout

Tournament Platform for a Mongolian Esports League

Designed and built a clickable tournament platform for an Ulaanbaatar amateur and semi-pro esports league: tournaments checked against each publisher's recorded licence terms, brackets and schedules, a match day board that shows who has checked in, and score reports with evidence and disputes. No betting features of any kind.

Scope of Work
Product design, UI build and clickable demo
Industry
Gaming / Esports Tournaments
SaaS
Compliance & Certifications
Mongolia Law on Personal Data ProtectionRiot community competition guidelinesValve tournament operation requirementsKrafton PUBG Mobile event termsMoonton MLBB event terms

Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.

Impact

5 Screens
Clickable end to end

Dashboard, tournament list, tournament detail with 7 tabs, match centre and match detail. Every one of the 13 tournaments and 40 matches opens its own page.

5 Limits
Publisher licence check

Prize pool cap, entry fee rule, sponsor categories, required wording and minimum player age, checked against the game's recorded terms. A draft that fails, such as a ₮36,000,000 pool against a ₮30,000,000 cap, cannot open registration.

7 States
Live match day board

Upcoming, check-in open, ready, live, awaiting result, disputed and done. A card turns amber when check-in closes within 5 minutes with a team incomplete, and red once the start time has passed.

13 Tournaments
Realistic demo data

6 games, 58 teams, 40 matches and 5 referees, with tournaments in every status from draft to cancelled and a day of 12 matches in every match state.

The Problem

Tuulgol ran its seasons on Discord servers, Google Forms, a public bracket site and a spreadsheet of bank account numbers. Admins checked ranks by asking for screenshots, had no record of which under-18 players had a guardian's permission, settled score arguments in direct messages, started matches 30 to 50 minutes late because nobody knew which teams had shown up, and took up to three months to pay prize money.

Our Solution

Khuleg covers the whole competition lifecycle in one platform: registration with rank and age eligibility checks, brackets in every common format, scheduled matches with check-in and forfeits, score reports with screenshot evidence and referee-resolved disputes, integrity reports and sanctions, stream scheduling, and prize pools paid out only after identity checks.

The Challenge: Running a League on Someone Else's Games

A community league does not own the games it runs. Every tournament has to fit the publisher's terms, every minor needs a guardian's consent, every result has to stand up to a dispute, and every prize has to reach the right person.

Publisher Terms Per Game

Riot, Valve, Krafton and Moonton each publish their own terms for community tournaments, covering prize pools, entry fees, sponsors, branding and player age. Two publishers asked Tuulgol to show its events followed those terms, and the league could not do it quickly.

Minors and Personal Data

Players under 18 may take part only with a guardian's recorded consent and only in games whose publisher rules allow their age. Mongolia's Law on Personal Data Protection applies to player and guardian data, including identity documents kept for payouts.

Results Settled in Direct Messages

Score arguments were decided in private chats with nothing written down. A fair result needs both captains' reports, screenshot evidence, the rulebook clause each side relies on and a named referee who rules with written reasons.

Match Day With No Live View

Admins could not see which players had checked in, so matches started late and forfeit rules were applied inconsistently. Across six games, several tournaments and shared stream slots, the day has to be run from one board.

Our Approach: From League Rules to a Clickable Platform

01

Spec and Rules Research

Mapped 12 roles from league director and referee to caster, player and guardian, 44 screens across the organiser console, caster desk, player hub and public pages, and the data model for games, licence records, eligibility rules, teams, tournaments, matches, score reports, evidence, disputes, sanctions and payouts. Wrote down the rules the design follows: publisher licence terms, Mongolia's personal data law, guardian consent for minors, no gambling, and prize payouts in tögrög after identity checks.

02

Clickable Demo on a Production UI Kit

Built 5 key screens on a production dashboard kit: the dashboard with season KPIs, today's matches and the tournament admin's work list, the tournament list with licence check chips and a new tournament panel, tournament detail with registrations, bracket and schedule, the match centre live board with forfeit watch, and match detail with games, score reports, evidence and lobby. All actions run on local state.

03

What a Production Build Adds

Sign-in and rank data through Riot, Steam, OpenDota and FACEIT, Discord bot pings, Twitch and YouTube schedules and embeds, identity checks through a provider such as Sumsub or Onfido, payouts through Khan Bank or Golomt Bank and Wise, and evidence in signed object storage. Staff auth by role, a full audit log, and the remaining screens: eligibility, disputes, integrity, sanctions, broadcast, payouts, privacy requests, the caster desk and the player hub.

Why It Works: Rules Checked Before Match Day

Licence Limits Block Publishing

Each tournament records the publisher terms version it runs under and shows every recorded limit as pass or blocked. A tournament that breaks one stays a draft until it is fixed, so the league can show its events follow the terms.

Check-in Problems Surface Early

The live board shows check-in ticks per player, a countdown and the lobby for every match. Forfeit watch lists teams that missed check-in with the rule that applies, and check in on behalf, extend check-in and declare forfeit each need a reason.

Every Result Has Evidence

Each game shows whether its result was reported by a team, fetched from publisher match data or set by an admin. Matching captain reports confirm after 15 minutes, conflicting ones open a dispute, and every screenshot is listed with its uploader, time and file hash.

Minors Protected by Default

A tournament is either 18+ only or open to minors with guardian consent, and the minimum age is checked against the publisher's terms. Pending consents show on the team roster, and the public pages are specified to show players under 18 by nickname only.

Related case studies

View all: Gaming
Logo
Oceanlab

Enterprise Software Engineering - Human + AI

Languages

Locations

Global Headquarters

21 Merchant Road, 3rd Floor, Singapore 058267

Main corporate office and leadership operations

North America Office

548 Market Street, PMB 12345, San Francisco, CA 94104

Client operations and business development

India Office

402 Shivalik Shilp II, SG Highway, Ahmedabad 380015

Engineering and delivery center

© 2026 - Copyright. All Rights reserved Oceanlab