Backoffice Console

The backoffice is a separate application from the player site, deployed on its own domain. Staff sign in with their own accounts; every screen requires authentication. What each staff member sees depends on their role (see Staff, roles and sign-in).

Working in the console

The console is built on the Untitled UI component system. Screens share one look: tables, filters, forms, dialogs and page headers all use the same components. A slim sidebar shows a strip of section icons next to the pages of the active section; either column can be folded down to icons with short names. The sections are Home, All limits, Analytics, Money, Players & risk, Casino, Sportsbook, Affiliates, Gamification (which also holds Promotions), Site Images and Administration. A staff member sees only the sections and pages their role allows. Search text, filters and the page number sit in the address, so a link to a filtered list opens the same view for a colleague.

  • ⌘K command center. Press ⌘K (Ctrl+K on Windows) from any screen to open the command center. It searches pages, players and actions, and ⌘1–5 switches between the scopes (Everything, Pages, Players, Actions and, when available, Ask AI). It also finds places inside a page: the tabs of Jobs, AI agents, Rankings and Site Images, and cards such as Quick bet, Combo bets and the cash-out pricing rules, so a search for a setting opens its page already scrolled to the card. Searching for a player shows a preview of the player's status, KYC, region and balances, with one-click links to the player record and the player's transactions. When the AI Assistant is on, an Ask AI scope answers questions in the same window.
  • Display preferences. A light or dark theme, or a setting that follows the operating system. A switch shows every money figure either exact ($10,710.14) or compact ($10.7k). The accent colour theme (purple, rose, sky, salt box, shamrock, orange or pink), the date format and the number separators (comma, period, space or apostrophe grouping) can also be chosen. These preferences are per browser.
  • Localisation-ready. Every text staff see is held in translation files, so adding a language is a translation task, not a code change. English is the only language shipped today.

Home

New installations open with a setup checklist above the questions. Five steps are required: take payments, set withdrawal limits, turn on identity checks, set up outgoing email from a real sender address, and turn on something to play. The optional steps are a sportsbook feed, recommended market defaults (required once a feed is on, because its markets stay hidden without them), the rewards switches, the registration and sports banners, payment fee rates (without a rate a provider's cost goes unbooked), a real affiliate payout provider and customer support chat. Nothing is stored for the checklist. Each step ticks itself off from the platform's configuration, so it can never disagree with what is set up. It can be hidden and reopened from the Home header.

Below it, the page answers five questions. Where a question has a status, it carries a verdict of ok, warning or failing:

  1. Is the platform live? When the last bet was placed and the last one settled, how many players were active in the last hour, today's sign-ups and deposits, the health of the database, cache and analytics store, any job whose last run failed, and whether exchange rates are still updating (fiat rates older than 40 minutes or crypto rates older than 5 minutes fail the check, because stale rates end in refused deposits, bets and payouts).
  2. Is it making money today? Net gaming revenue so far against the usual figure for that weekday, casino and sportsbook GGR and hold, bonus cost, deposits and withdrawals, payouts waiting for review, and open chargebacks.
  3. Are player funds covered? Per currency, what is held at payment providers plus the bank's client account, against what is owed to players, as a surplus or a shortfall. A shortfall links to the Bank page, where the client account can be funded.
  4. Is it set up? An on/off grid of every feature (casino, sportsbook, deposits, withdrawals, KYC, bonuses, gamification, affiliates, stake limits, AI agents and more). It also lists setup gaps, for example no live payment provider, a currency players hold that nothing can pay out, no withdrawal limits, no stake limits, no recommended markets for a live feed, markets waiting for review, or games without artwork. A withdrawal limit gap is flagged as failing, since without one any player can cash out any amount.
  5. Are providers, feeds and settlement healthy? Game providers that have gone quiet, rounds stuck for over an hour, odds feeds that have stopped syncing, and finished events still holding open bets.

The thresholds are computed by the server. Every issue links to the screen where it is fixed. Home reads the main database, so it works without the optional analytics store.

All limits

A read-only page beside Home that lists every cap on what players can stake, win, withdraw and earn, grouped into Sports, Casino, Payments, Promotions, Affiliates and AI. Nothing is edited there: each row links to the page that changes it, and limits fixed in code are marked as such. It answers questions that cross sections, such as what caps a given player.

Analytics

Revenue (dashboard), Bets vs wins, Deposits vs withdrawals. Each page leads with selectable metric cards and a bar chart of the selected metric, with the prior period drawn behind it. The cards are NGR, net deposits, active players and first-time depositors, each with its change against the prior period and the figures it is made of. The charts, the headline sparklines and the pages below read the optional ClickHouse analytics copy. Without it, the headline figures still show but the charts show an "unavailable" state. Covered in Money & Reporting.

Pulse. What is happening right now: active players, bets, handle and deposits in the last hour against the usual figure for that hour. It also shows today's active players by hour against an eight-week average, and what is being bet on most.

Activity by hour. A weekday-by-hour heatmap of player activity, in any time zone, to plan promotions and staffing.

Popularity. Sports popularity per sport, and casino popularity by game, tag, provider or studio. Both are exportable to CSV.

Game analyzer. How players treat one game or one provider: who plays it, how many are new to the casino, how many come back the next day and on day 7, repeat play, session length, RTP against the theoretical figure, and the other games the same players play. A comparison view sets a game against the median of its tags, its provider or all games, or beside games you choose.

Simulated players are counted like any other player in these reports. Pulse, Activity, Popularity and the Game analyzer exist only on the analytics copy.

Money

Payments (deposits and payouts, with a detail page per payment), withdrawal limits, player tips (a switch and limits for cash sent between players), a withdrawal review queue, payment providers (with their fee rates and rolling reserves), settlements, the bank, chargebacks and currencies.

The Bank page shows where settled money sits and how much of it is the operator's. For each currency it shows the surplus or shortfall: held at payment providers plus the bank's client account, less what is owed to players. Staff with the bank power can take profit out of the client account (only the surplus, so players stay covered), fund it back, and record capital put in or taken out. Settlements choose the bank a payment provider's money lands in or is paid from. A history lists every transfer and who made it. A bank is set up from the command line, not the console, and moving money needs a bank adapter: only a development mock ships (see Integrations).

Two ledger views are available. All movements searches raw ledger entries. Account view shows per-account statements. The ledger-invariants card shows the result of the last scheduled integrity check, and a drift check runs on demand. Covered in Money & Reporting and Money Core: The Ledger.

Players & risk

Players. Search the list by email, name, username or player id. The list is paged, 50 players at a time. Selecting players shows a Grant benefit action that rewards them in one step (see Player Cohorts & Email Campaigns). The player record has tabs for Overview, Transactions, Bets, Game sessions (each session opens to its casino rounds), Gamification, Ranking (for staff with Rankings access), KYC, Audit and Actions. The overview shows one table with a row per currency: balance, plus deposited, withdrawn and net-deposit totals. The header says when the player last played and what they played. The Actions tab lets staff suspend or reactivate the account, freeze or release funds, and post a manual balance adjustment. Adjustments require a reason and are recorded in the staff audit log.

Cohorts and Email campaigns. Saved player groups, benefit grants to them with a measured holdout, and email campaigns with consent built in. They have their own page: Player Cohorts & Email Campaigns.

VIP. My VIPs lists the players a VIP host looks after, and VIP candidates is a suggestion list of players who may be worth inviting (by theoretical loss, account age and recent activity, never players with responsible-gaming warning signs). A person decides; staff with the VIP power grant or remove the status from the player's page.

KYC queue. Verification cases parked for human review are listed for staff to approve or reject, with a mandatory reason. See KYC & Identity Verification.

Jurisdictions and blocked regions. One page per country: what a player must verify before each action (with amount thresholds for deposits and withdrawals, and the optional identity check before opening a reward box), which provider verifies them, and an optional hold on a player's first withdrawal. A country states only what it changes and follows the default for everything else. Every edit needs a written reason and is audited, and the default cannot be removed. Blocked regions lists the countries closed outright. See Verification and Access Rules.

Casino

Create game providers (OnlyPlay and qooob can be added from the Game Providers page by entering the credentials the provider issued, then syncing the catalog), trigger a catalog sync, upload provider logos and per-game artwork, enable and disable games, and manage tags. A game's RTP can be set one by one or imported from a CSV of external id, RTP rows per provider, and the games list can be filtered to games missing an RTP. Casino settings hold the minimum win amount that appears in the public feed, the default RTP by category (the house-edge default used for a game with none of its own), bonus-term defaults and the lobby controls. The Jackpots page creates jackpots and their tiers, turns each jackpot on or off (and has one switch that stops all jackpots), and edits each jackpot's minimum stake and eligible games; editing a tier changes its rates and seed amount (see Jackpots). The casino Page constructor builds the casino lobby, the home page and the casino navigation from sections (see Rankings & Discovery). On local and staging installs, a Qooob test scenarios page forces the next bet or win callback for one player to fail, so qooob can test its error handling; it has its own power and is unavailable in production.

Sportsbook

Manual resolve. A queue of events that settlement could not resolve, biggest payout first, filterable by why each one waits (needs a result, by hand only, ready to close). Opening an event settles it in three steps:

  1. Final result, written the way the sport scores it: football at full time with optional extra time and penalties, ice hockey by regulation plus overtime or shootout, basketball's final with the regulation score if it went to overtime, tennis as games per set (with retirement or walkover), sets/frames/maps for darts, snooker and esports, and the winner for MMA and boxing. The last live score prefills it. A sport without a score form is graded market by market.
  2. From the result: the markets the result settles on its own (1X2, match winner, both teams to score, double chance, draw no bet). On a retired or walked-over tennis match each market shows the rule it settles by, and staff can change it per market.
  3. Grade the rest: every other market, outcome by outcome, such as goalscorers. Totals and handicaps show a suggested grade that staff accept first, because the line's unit (sets or games, for example) is not always known.

One action settles everything that is ready, after a confirm that shows what it pays and refunds. Markets left ungraded stay open, and the event closes once nothing on it is open. Staff can also void events one at a time or in bulk with a single reason; the void runs in batches with progress shown, and it is safe to re-run.

All bets. A searchable, sortable grid of every sports bet.

Markets. The market catalog, one provider and sport at a time: which markets players see, what they are called and where they sit. A market a feed sends for the first time arrives hidden and waits under Unreviewed until staff review it.

Cash-out. The switch, margins, minimums and how long a price stands for early payouts on open bets. Changing them needs the cash-out power.

Rankings. The ranking console: how events, competitions and sports are scored per region, the levers that steer the ranking (every lever needs a reason, and global ones need a second approver) and each player's ranking tab. See Rankings & Discovery.

Page constructor. Sportsbook pages and their layouts, the sportsbook navigation, preview-as-a-viewer and per-section results. Manage access edits, publishes and activates.

Events. Events are managed through a sport-and-competition tree with a sport filter. Staff can boost or suspend an event, settle a market manually and void a bet.

Catalog. Managed one bookmaker at a time: pick a bookmaker, then toggle which of its sports, categories and competitions are visible in the lobby and drag entries to reorder them. Clicking a sport opens a drawer to set its logo and lobby banner.

Betting. Choose which odds provider is live, add a supported data feed as a new provider (with a warning before switching to one that has no events yet), and watch feed health and odds coverage. The page also holds the switches for combo bets and for Quick bet (one-tap singles with a timed undo), and each provider's feed silence limit and live coverage window.

Stake limits. Caps on sportsbook bets: the most a player may stake on one slip, the most over a rolling 24 hours, and the most a bet may pay out. The USD limit is the base for every currency, and a limit in another currency overrides it for that currency only. A limit can be set for all players or one player, and a player limit can only lower the global one. With no limit of a kind, that kind is uncapped. Casino play never counts against these limits.

The all-bets list counts at most 10,000 rows, so paging stays fast as betting volume grows. Past that, the total shows as "10,000+" and staff page through with Next.

Rewards, affiliates and creative

Promotions. Author bonus terms and assemble them into promotions, including banner uploads with a hero focal-point picker. Publish, pause, and issue to players.

Gamification (its own section). Opens on an overview that describes, in plain sentences, what the rewards programme currently does, with a link from each point to the page that changes it. The tiers, streaks and missions switches are off by default. The pages are:

  • Tiers. XP rates, the daily XP cap and the tier ladder, with a level-up prize for each tier.
  • Streak. The reward-day ladder for each vertical.
  • Missions.
  • Benefits. One catalog of everything a player can get (free bets, boosts, bonus money, XP, cash rewards and always-on price boosts), defined once and picked by rewards, missions, streaks, promotions and grants. See Benefits.
  • Rewards. A catalog of fixed prizes and mystery boxes built from benefits.
  • Bonus terms. The rules behind bonus money (amount set in USD with a preview in each wallet currency, wagering, max bet, max win), edited in five steps.
  • Leaderboard.

On the player record, the Gamification tab explains why a player did or did not receive a reward. From there, staff can grant a catalog reward or revoke an unused one, with a reason. Every change that affects what players are awarded requires a reason and is audited. Covered in Gamification & Rewards.

Messages (under Players & risk). Send a notification to every player. It stays in their notifications for 30 days.

Affiliates. The partner list with the sub-affiliate proposals queue, each partner's page (Money, Performance, Campaigns, Account tabs), campaign terms with their dated history, audited pause and resume, the bills page with the payout processor, and the allow-listed landing pages (Destinations). See Operator Tools.

Site images. Generate and manage promotional artwork. See Site Images & Generated Art.

Administration

Staff and Roles. Create staff accounts by emailed invite, send a password reset link, disable access, and define roles. See the next section.

Jobs. Every scheduled task, grouped into category tabs (money, gaming, sports, promotions, affiliates, media, agents, system). Each job has its run history and logs, and controls to trigger, retry, pause, resume or change its schedule at runtime. Covered in Scheduled Jobs & Automation.

AI agents. The switch and spend caps for the AI engine, the findings inbox, the assistant and the history of every run. Covered in AI Assistant.

Audit log. A searchable view of the staff audit trail, filtered by staff member, action, result, entity and date range. Actions and results have readable labels, and an entry expands to show what it changed.

Staff, roles and sign-in

Roles. Administration > Roles defines what each team can see and change. Access is granted per area, as View or Manage: Home & analytics (view only), Money, Players & risk, Player cohorts, Email campaigns, All limits (view only), Rankings, Constructor, Casino, Sportsbook, Promotions & messages, Gamification, Affiliates and Creative. Role changes apply on the staff member's next request. Administration itself (staff, roles, jobs, AI agents, audit log) is admin only and cannot be granted. The built-in admin role has everything and cannot be deleted.

On top of area access, eleven sensitive powers are granted separately and each use is audited:

Power Allows
See player personal data Full names, payout addresses and KYC documents. Without it they are masked (email stays visible)
Export CSV Download tables and reports
Grant bonuses Give rewards, free bets and promotions, including cohort grants and campaign gifts
Approve withdrawals Release or reject payouts held for review
Adjust balances Manual credits and debits on a player wallet
Manage VIP status Make players VIP and remove the status, with a reason
Be a VIP host Be assigned as a VIP's host and see one's own VIPs, without needing Players access
Approve ranking levers Be the second approver for ranking levers that are global or override the algorithm (never one's own)
Move money in the bank Take profit out of the client account, fund it, and record capital in and out
Run provider test scenarios Use the qooob test page, on local and staging only, without other access
Manage cash-out Change the cash-out switch, margins, minimums and quote terms

Two-factor sign-in. Staff can sign in with a password, a passkey, or a password plus a code from an authenticator app, and manage these on the Sign-in & security page. Each role has a Require two-factor sign-in switch, off by default. When it is on, a member's password alone only starts the sign-in: they must also use an authenticator app or a passkey, and are walked through setting one up if they have none. Admins can reset a member's authenticator app and passkeys (the member is signed out everywhere and emailed) for someone who lost their device.

The staff audit log

Staff actions are recorded in an append-only table, enforced by a database trigger — not by application code that could be bypassed or refactored away. The row cannot be edited or deleted after insert.

Actions are split into two tiers. Tier 1 covers money and player entitlements. Examples are balance adjustments, fund freezes, manual payouts, payout approvals, voided bets, manual results, bonus and reward grants, gamification changes, region blocks and payment-provider money settings. These demand a reason, enforced centrally rather than left to each screen. Tier 2 covers access and configuration, recorded best-effort without a mandatory reason.

A tier-1 entry can be written inside the action's own transaction, so a rolled-back change leaves no misleading success record — but that is passed in per call site rather than guaranteed by the tier, and not every tier-1 site does it. Treat the reason requirement as the reliable guarantee and the transactional coupling as site-by-site.

The vocabulary defines about 185 staff actions, roughly half in each tier. More than a hundred call sites record them, across player management, payments, sportsbook trading, promotions, gamification, affiliates, casino, KYC, regions, jobs and settings. Recording is explicit at each call site, so a new staff action is audited only if its developer adds the call.

Scope & Roadmap

Implemented. Every screen listed above, with authentication, CSRF protection and admin-gating on sensitive routes. Configurable staff roles with per-area access and eleven sensitive powers. Optional two-factor sign-in with authenticator apps and passkeys. The Home status page and setup checklist, the analytics section, the ⌘K command center, the audit log viewer, cohorts and email campaigns, the AI agents page, the operator bank, the All limits overview, the market catalog, cash-out settings, the ranking console, the page constructor for the sportsbook, casino and home pages, and jackpot management.

Partial. The analytics charts and the Pulse, Activity, Popularity and Game analyzer pages need the optional ClickHouse analytics store (see Architecture & Deployment). The console is ready for translation, but only English ships. Audit coverage depends on each call site recording its action. Two-factor sign-in is a per-role switch that is off by default, so a new installation's staff sign in with a password alone until an admin turns it on.

Not built. There is no maker-checker separation and no four-eyes approval on large payouts: the payout review queue takes a single staff approval. There is no single chronological player timeline for support agents. The player record's tabs cover the same ground separately.

results matching ""

    No results matching ""