One badminton group, one link. Players book from WhatsApp, scan a QR at the door, and their phone tells them when they're next. The coordinator runs the whole night from one screen and stops being the person everybody asks "when am I playing?"
1. The five-minute version
Tuesday — organizer opens smashq.aiopsgroup.ai/admin, creates the session, copies the link, drops it in WhatsApp.
Tuesday to Saturday — players tap Join session. Once it's full, the next taps land on the waitlist. Somebody cancels, the top of the waitlist moves up automatically and nobody has to notice.
Saturday 6:50 PM — coordinator opens the QR code on a phone and props it at the door. Players scan as they walk in. The session goes live on the first scan.
Saturday 7:00 PM to 10:00 PM — coordinator opens the court board. For every free court it shows four players, already split into teams, with a line saying why those four. Tap Start game. When they're done, tap Finish game, type the score or skip it. That's the entire job.
Saturday 10:00 PM — tap Close session. You get the summary: games played, fairness score, who still owes money.
2. For players
First time with the group
Open the link from WhatsApp and tap Pick your name. If you're already on the list, tap your name once and your phone remembers it from then on. There's no password and nothing to install.
If you're new, use New here? at the top: type your name, tap Add me, and you're on the list for good. A phone number is optional and only the organizer sees it — worth adding if someone else in the group shares your first name.
If the name you type already exists, the app won't create a second you. It shows the existing person and asks whether that's you. Say yes and you're signed in as them; say no by adding a surname or an initial. This matters more than it sounds: games played, the fairness score, ratings and history all hang off one record per person, and two records for the same player quietly breaks all four.
Turned up at the venue without booking? The QR code at the door has the same Add me box, so you can join the group and check in from the same screen.
Booking
Once the app knows who you are:
Then tap Join session.
- If there's space, you're confirmed straight away.
- If it's full, the button says Join waitlist and you'll see your number in the queue.
- Changed your mind? Cancel my slot. Do it early — it's what lets the next person in.
Booking also creates your fee record, so the coordinator can tick you off when you pay.
Checking in
At the venue there'll be a QR code on a phone or a printout by the door. Point your camera at it, tap your name, done. You're in the queue from that second.
If your phone is dead or the code won't scan, tell the coordinator — they can check you in by hand in two taps. You can also open the session link and tap I'm at the venue.
The QR code only works for tonight's session and only for 24 hours, so a screenshot from last week won't do anything.
During the session
Your session page is the answer to every question you'd normally ask the coordinator:
- Waiting with your place in the queue — "Next 1 to 2 games", "About 3 games away"
- Games you've played, Waiting how long you've been sitting, and how many people have had fewer games than you
- When you're picked, the screen switches to You're up with your court, your partner, and who you're against
The page refreshes itself every few seconds. You don't need to pull down.
Two buttons matter:
- Sit out a game — taking a break, getting a drink, phone call. You stay checked in and the engine skips you until you tap I'm back in. Sitting out also resets your back-to-back counter, so you're not penalised for resting.
- Heading home — you're leaving. Tap it before you go so the rotation adjusts for everyone still there.
Scores
Optional, always. If your group wants them, anyone in the game can add the score from the Games tab afterwards. Scores feed your win rate and your rating, so they're worth doing once the habit sticks.
Your fee
Your session page shows whether your fee is paid or pending. The coordinator marks it when you hand over the cash or send the transfer.
Your profile
Tap your name in the top right. Sessions attended, games played, win rate, recent form, your most frequent partner and opponent, and your rating.
3. For the coordinator
Everything here sits behind the group PIN. Enter it once per phone.
Before the first game
Open QR code from the session tabs and leave it on screen at the door. Check the Check-in tab now and then to see who's booked but hasn't arrived.
You can check anyone in manually from that tab, squeeze someone off the waitlist, or add a walk-in who never booked. All of it is one tap.
The court board
This is the screen you live on. Four numbers across the top: checked in, waiting, courts in use, and the fairness score. If that fairness number starts dropping, something has gone lopsided and you'll want to look at the Next players list.
Each court is either playing or open.
A playing court shows both teams and a running clock. When the game ends, tap Finish game. Type a score or tap Completed, no score — both are fine, and the engine doesn't care either way.
An open court shows the four players the engine picked, already split into Team A and Team B, with a short explanation underneath: who has the fewest games, who's been waiting longest, whether it's a fresh combination, how evenly matched the teams are.
Three buttons:
- Start game — you agree. Done.
- Switch teams — same four players, different pairing. Cycles through all three ways.
- Swap players — tap any player's name to drop them, then pick a replacement from the waiting list. Tap Reset to go back to the engine's suggestion.
You are never fighting the system. Whatever is on the card when you tap Start game is what gets played. If you changed it, that gets recorded quietly so you can look later at whether the engine keeps getting the same thing wrong.
Pairing preferences
Two people want to play together. Two people should probably not be on the same court tonight. Add either as a preference on the board — they last for this session only.
These are preferences, not rules. Fairness still wins: if honouring a "keep apart" would leave a court empty, the engine relaxes it and tells you it did.
Money
The Payments tab lists everyone with Cash, Transfer and Waive buttons. Tap one, it's recorded with your name and the time. The top of the page shows expected, collected and outstanding, and the unpaid names are listed so you can read them out once instead of chasing on WhatsApp for three days.
You can also log court hire, shuttles and anything else under Session costs to see whether the night actually broke even.
Closing the night
Tap Close session on the board. Finish or cancel any live games first — it'll tell you if something's still running.
Closing marks anyone who booked but never scanned in as a no-show, and takes you to the summary.
4. For the organizer
Creating a session
Organizer → New session. Name, date, start and end time, venue, number of courts, max players, fee, game type, points per game.
You get a short code and a link like smashq.aiopsgroup.ai/s/K4M2XP. That's what goes in
WhatsApp. The QR check-in code is generated from the same session automatically, and it
always points at whatever domain the app is served from — so it stays correct if the address
ever changes.
Game type is worth a thought:
| Type | What it does |
|---|---|
| Casual | Maximum mixing, teams only loosely balanced |
| Casual balanced | The default. Fair rotation, teams roughly even |
| Competitive | Ratings matter, teams matched as closely as possible |
| Social | Pushes hardest to avoid repeating the same four |
Fairness works identically in all four. The setting only changes how hard the engine pushes on team balance and on mixing people up.
Members
By default, anyone who opens the session link can add themselves to the group. That's the right setting for a WhatsApp group where the link only goes to people you know, and it means you're not the bottleneck on a Saturday evening. Duplicate names are refused, so nobody ends up with two records.
If you'd rather vet everyone, turn Anyone with the link can join off at the top of the Members page. New players then see "ask the organizer" instead of a sign-up box, and you add them by hand.
Names usually come straight out of the WhatsApp group. Add them under Members. Rating is optional — leave it at 1200 and it settles itself once scores start going in.
Roles: Player, Coordinator, Organizer. Anyone with the PIN can run a session; roles are for your own record keeping until proper logins arrive.
Venues
Name, address, court count. Sessions pick a venue and inherit nothing else, so you can run three courts at one place and four at another without any fuss.
Money and statistics
The organizer dashboard shows sessions run, average attendance and total collected. Statistics gives you the group leaderboard — doubles Elo, win rate, recent form, and who plays with whom most often.
Changing the PIN
Organizer → Members → Group. Type a new 4 to 8 digit PIN and save. Nobody gets signed out: a coordinator who already unlocked their phone stays unlocked until they tap Lock.
Change it when a coordinator stops helping out, and change it from the one you were given at setup before you hand it to anybody else. The PIN is currently the only thing between a curious player and the payments screen.
5. How the queue decides
Worth reading once, because somebody will ask you.
Games played is not a preference, it's a rule. Players are grouped by how many games they've had. The engine works from the bottom up: if everyone on 2 games fits on the court, they all go on. It only gets to choose when it reaches a group with more people in it than there are spots left.
Inside that group everyone has played the same number of games, so nobody is being jumped. Only then do the other four things get a say:
| What it means | |
|---|---|
| Waiting time | Longest sitting goes first |
| Rest | Played back-to-back? You drop down. Just walked off court? Four-minute breather before you're considered again |
| Fresh combinations | Avoids the same four people, weighted so last game matters more than five games ago |
| Team balance | Splits the chosen four into the two evenest pairs |
The effect over a real three-hour session: everyone ends within one game of everyone else, and average waiting time sits around seven minutes.
Someone arriving late gets priority until they catch up, but with the four-minute rest between games so they're not run into the ground. If they walk in an hour late they will finish the night behind — the clock, not the engine, is the limit there.
Why didn't I get picked? Almost always: you've had one more game than the people who did, or you came off court less than four minutes ago. Both are visible on your own screen.
6. Statuses, decoded
Booking
| Status | Meaning |
|---|---|
| Confirmed | You have a slot |
| Waitlisted | Full; you move up automatically when someone drops |
| Cancelled | You gave the slot back |
| No show | Booked, never scanned in. Recorded when the session closes |
During the session
| Status | Meaning |
|---|---|
| Available | In the queue |
| Playing | On court right now |
| Resting | Sitting out by choice; skipped until you come back |
| Left | Gone home; out of the rotation |
Payment
| Status | Meaning |
|---|---|
| Unpaid | Owes the fee |
| Paid | Cash, transfer or online, with a timestamp and who recorded it |
| Waived | No charge this time |
Fairness score
100% means everyone played exactly the same number of games. Above 88% is excellent, and in practice means a spread of one game. Below 70% means somebody got noticeably more court time than somebody else — look at the games-per-player bars in the summary to see who.
7. When things go sideways
Nobody can scan the QR. Check-in by hand from the Check-in tab. Two taps per player, and the session runs exactly the same.
A player's phone is dead all night. Fine. Nothing about the rotation depends on the player's phone — only the coordinator's screen matters. They just have to ask you when they're next, the old-fashioned way.
Someone has to leave mid-game. Tap Cancel on that court, then assign a fresh four. The cancelled game isn't counted for anyone.
Only three players free. The court card says so instead of suggesting a game. Someone resting can tap I'm back in, or you can check in a walk-in.
A game was finished by mistake. Fix the score from the Games tab. The game itself stays counted — which is the right call, since they did play it.
The wrong player got checked in. Mark them Gone in the check-in list. They leave the rotation immediately.
Somebody registered twice under slightly different names. The app blocks exact repeats, not "R Shankar" versus "Ravi Shankar". Deactivate the spare under Members and ask them to tap the original from now on.
The fairness score is dropping. Usually means a lot of people arrived late or several people are sitting out. Open Next players — the list is ordered exactly as the engine sees it, so the people at the top are the ones owed a game.
Two people keep getting drawn together. Add a Different games preference for them on the board. It lasts for tonight only.
Quick reference
| I want to | Where |
|---|---|
| Join the group for the first time | Session link → Pick your name → New here? |
| Book a slot | Session link → Join session |
| Check in | Scan the QR, or Check-in tab |
| See when I'm next | Session link → Your status |
| Start or finish a game | Court board |
| Swap a player | Court board → Swap players |
| Take money | Payments tab |
| Add a walk-in | Check-in tab → Walk-in |
| Close the night | Court board → Close session |
| See the fairness score | Summary tab |
| Create a session | Organizer → New session |
| Add a member | Organizer → Members |
| See the leaderboard | Organizer → Statistics |
| Report something broken | hello@aiops.ae |
| Open the app | smashq.aiopsgroup.ai |
This is a beta
Everything described here works and is tested, but the app has not yet survived a real Saturday with thirty people and bad venue wifi. If something behaves oddly, it is worth reporting rather than working around — mail hello@aiops.ae with what you were doing and roughly when, and it gets looked at.
The queue weights in particular are expected to want tuning once a few real sessions have been played. If the rotation feels wrong to the people actually on court, that is exactly the feedback worth sending.
Built and maintained by AIOps — vendor-independent forward deployed engineering for the GCC.