Admin Dashboard › Welcome
Getting Started
Welcome to the
OddSphere Admin Panel
This guide walks you through every section of the moderator dashboard — what it does, when to use it, and what to watch out for. Work through each section in order, then complete the knowledge check at the end.
⚠️
This is a virtual credits platform. No real money is involved. Users bet with VC (Virtual Credits). Still treat all actions as consequential — changes affect real users' balances and experience.
The Pending Indicator

The top-right corner always shows a ● N PENDING button in orange when there are users awaiting approval. This is your first priority when you log in — head to Users and approve or review any pending accounts before anything else.

Section 1 of 6
Races 🏇
Races come from two sources: automatic scraping (Mauritius and Hong Kong) and manual creation. Understanding which type you're dealing with determines how you manage odds and settlement.
Race Sources
SourceMarketWhen ScrapedOdds Behaviour
Auto 🇲🇺 Mauritius (MRU) Thursdays — races appear automatically in the admin panel Live odds update every 5 minutes on race day
Auto 🇭🇰 Hong Kong (HK) Scraped and available in the admin panel Scraped as tote/parimutuel odds — must be manually converted to fixed odds before going live to users
Manual Any Created by a moderator via + Create Race Odds set at creation; remain fixed unless you edit them
How Scraped Odds Work (MRU)
  1. 1
    Races appear automatically on Thursdays
    You don't need to create them. Check the Upcoming tab on Thursday mornings — scraped MRU races will be listed with current odds pulled from the tote.
  2. 2
    Odds refresh every 5 minutes on race day
    The system automatically updates all runner odds every 5 minutes while the race meeting is live. Users see the most current odds available.
  3. 3
    Manual edit locks the odds permanently
    If you manually overwrite any odds on a scraped race, the automatic 5-minute updates stop for that race. The odds you set will stay fixed. Only do this intentionally.
  4. 4
    Bets close and results settle automatically
    The system stops accepting bets at race time and settles results automatically upon completion. You do not need to manually settle scraped MRU races.
Hong Kong Races — Converting to Fixed Odds

HK races are scraped as tote (parimutuel) odds, which fluctuate based on the betting pool. Before making a HK race visible to users, you must convert to fixed odds manually:

  1. 1
    Find the HK race in Upcoming
    It will appear automatically once scraped. Keep it hidden from users until odds are set.
  2. 2
    Click Edit and update each runner's odds
    Replace the tote values with your fixed odds. Once saved, these odds are locked — the scraper will not overwrite them.
  3. 3
    Show the race to users
    Once fixed odds are in place, set the race to visible. Settlement is automatic once results come through.
Creating a Race Manually

Use + Create Race for any race not covered by the scraper — special events, alternate markets, or test races.

  1. 1
    Click + Create Race (top right)
    Fill in race name, date, time, and runners with their fixed odds.
  2. 2
    Set visibility
    Save as hidden to prepare in advance, or set live immediately. Odds on manually created races are always fixed — they won't auto-update.
  3. 3
    Confirm and save
    The race appears in Upcoming and is logged in the Audit trail.
The Two Views
TabWhat You'll SeeWhat You Can Do
UpcomingAll scheduled races (scraped + manual)Edit odds, hide, delete, view bets
Past RacesCompleted races with resultsReview settlement, audit history
⚠️
Editing odds on a scraped race locks them permanently. The 5-minute auto-update will stop. Only overwrite odds if you intend to fix them for the rest of that race meeting.
🚫
Deleting a race also deletes all open bets on it. Only delete if a race is genuinely cancelled. To temporarily hide it from users, use the Hide option instead.
Section 2 of 6
Football ⚽
Football is fully manual — there is no scraping or API at this stage. You create every game, manage its visibility, and settle it yourself using the 90-minute final score.
Creating a Game

All games are entered by hand. Click + Create Game (top right) and fill in the teams, date, time, stage/group label, and fixed odds for all three markets (Home Win, Draw, Away Win).

💡
Save new games as Hidden first. Review the odds, then use Show to make them visible to users when you're ready.
Game Status Lifecycle
Hidden Open Suspended Settled / Void
StatusMeaning
HiddenGame exists but users cannot see it. Use for preparation.
OpenVisible to users. Bets can be placed.
SuspendedVisible but no new bets accepted. Use at kickoff to close the market.
Settled ✓90-minute result entered manually. Winning bets paid out.
VoidGame cancelled or postponed. All bets refunded.
Action Buttons on Each Game
Show Suspend Edit Settle Void
  • Show — makes a hidden game visible (sets to Open)
  • Suspend — closes the market without hiding the game; use at kickoff
  • Edit — update teams, date, time, or odds before the game goes live
  • Settle — enter the 90-minute score and trigger payouts
  • Void — cancel the game and refund all bets
How to Settle a Game
  1. 1
    Suspend the game at kickoff
    Click Suspend when the match starts. This stops users from placing new bets while the match is in progress.
  2. 2
    Wait for the 90-minute final score
    Settlement is based on the 90-minute score only. Extra time, penalties, and golden goals do not count. Always confirm the official full-time result before settling.
  3. 3
    Click Settle and enter the result
    Select the winning outcome (Home / Draw / Away) based on the 90-minute score. Confirm to trigger payouts to all winning bettors.
⚠️
90 minutes only. Extra time and penalty shootouts do not affect settlement. A match that ends 1–1 after 90 minutes is settled as a Draw, even if one team wins on penalties.
🚫
Settling is irreversible. Double-check the final score before clicking Settle. If you make an error, escalate to your platform administrator immediately — there is no undo.
Section 3 of 6
Users 👥
The Users tab is your member management hub. New registrations require manual approval, and you can edit any user's balance, freeze their account, or grant moderator access from the User Detail panel.
Pending Approvals

Any new user who registers appears at the top of the Users tab under PENDING APPROVAL, highlighted in orange. The count also shows in the top-right ● N PENDING indicator throughout the dashboard.

  1. 1
    Review the applicant's name and email
    Check it looks legitimate before approving.
  2. 2
    Click Approve to grant access
    The user moves to the active list with a starting balance. They receive a notification via Telegram.
The User List
ColumnWhat It Shows
UserDisplay name + Telegram ID or email
BalanceCurrent virtual credit (VC) balance
StatusACTIVE or frozen

Click Edit next to any user to open the User Detail panel. You can also search by name or email using the search bar at the top of the list.

User Detail Panel — Overriding a Balance

When you click Edit, a panel opens showing the user's current balance, total bets placed, and fields to make changes.

👤 User Detail
Ax
tg:8640717302
ACTIVE
Balance
2,000
Total Bets
0
Override Balance
2000
Reason (Required)
e.g. Beta re-credit
Cancel Freeze Save

  1. 1
    Check the current Balance and Total Bets
    These are read-only displays showing the user's live state. Confirm you have the right user before making any change.
  2. 2
    Enter the new amount in Override Balance
    Type the full new balance — this replaces the current amount entirely. For example, if the user has 1,500 VC and you want to add 500, enter 2000, not 500.
  3. 3
    Enter a Reason (mandatory)
    This field is required. Write a clear reason such as "Beta re-credit", "Bonus top-up", or "Correction for failed settlement". This is logged in the Audit trail.
  4. 4
    Click Save
    The balance updates immediately and the action is logged under the user's account in the Audit trail.
Freezing and Other Actions
ActionWhat It DoesWhen to Use
Freeze Suspends the user account — they can no longer place bets or access the platform Suspected abuse, disputed activity, or at admin instruction
Grant Moderator Upgrades the user's role from User → Moderator Only when explicitly authorised — moderators can create/edit races and manage users
🗑 Delete User Permanently removes the account and all associated data Only at admin instruction — this cannot be undone
Creating a User Manually

Use + Create User to add a user directly without them going through the registration flow. Useful for staff testers or pre-approved members.

⚠️
Override Balance replaces — it doesn't add. Always do the maths first. If a user has 1,200 VC and you want to credit 800, enter 2000 in the field. Entering 800 would set their balance to 800, not add it.
⚠️
Only adjust balances with authorisation. Every change is logged with your admin email and the reason you entered. If a user claims a discrepancy, check the Audit log before making any changes.
Section 4 of 6
Report 📊
The Report tab gives you a daily snapshot of platform activity. Use it to monitor how many bets were placed, how much was staked, and how the house performed.
Reading the Daily Report
MetricWhat It Means
BetsTotal number of bets placed on the selected day
StakedTotal VC wagered by all users on that day
House NetNet VC gained or lost by the house (positive = house profit; negative = users won more)
MarginHouse net as a percentage of staked amount
Navigating Dates
  1. 1
    Use the calendar on the left
    Click any date to load that day's report. Dates marked with a ● purple dot are race days — days where at least one race was held.
  2. 2
    Export if needed
    Use the ↓ CSV or ↓ PDF buttons (top right of the data panel) to download the day's report for record-keeping or sharing.
💡
If a day shows 0 bets and 0 staked, either no races ran that day or users didn't bet. Check the Audit log for that date if something seems off.
Section 5 of 6
Message 💬
The Message tab lets you communicate with all users. You can send broadcast announcements, check received messages, or set up the Telegram bot integration.
Two Views: Inbox and Broadcast
TabPurpose
InboxMessages received from users
BroadcastSend a message to all users simultaneously
Sending a Broadcast Message
  1. 1
    Go to Broadcast → Compose
    Enter a Subject (e.g. "Weekend races now live") and your message body.
  2. 2
    Optionally tick Schedule message
    Set a future date/time if you want the message sent automatically later. Check Scheduled to see pending scheduled messages.
  3. 3
    Click Send to All Users
    The message is delivered immediately via Telegram to all registered users.
Telegram Bot Setup

The Register /start Webhook button at the bottom of the Broadcast page links the Telegram bot so users automatically get a welcome reply when they type /start in Telegram. This only needs to be done once during initial setup. Do not re-register unless instructed by your admin.

⚠️
Broadcasts go to every user. Proof-read carefully before sending. There is no recall or unsend option once delivered.
Section 6 of 6
Audit Log 📋
The Audit log is a permanent, chronological record of every action performed by any admin on the platform. Use it to verify what happened, when, and who did it.
What Gets Logged
Action TypeIndicatorExample
RACE DELETEDRed dot"test — race and open bets deleted"
RACE CREATEDGreen dot"test — created and set live"
RACE HIDDENOrange dot"HKU Handicap — hidden from users"
USER APPROVEDUser account approved by moderator
GAME SETTLEDMatch result entered, payouts triggered
Filtering by Category

Use the filter tabs at the top to narrow the log:

Races Football ⚽ Users

Each entry shows the action label, the item affected, a short description, the admin email who performed it, and a timestamp.

💡
When in doubt, check here first. Before contacting another moderator or making a corrective change, look up the relevant action in the Audit log to understand exactly what happened and when.
Knowledge Check
Let's check what you know 🎓
Eight questions covering every section. Answer all of them to complete your onboarding.
0 of 8 answered
Q1 — A user registers and is waiting to join the platform. Where do you go first?
Q2 — A scraped MRU race has odds you want to fix. You manually overwrite them. What happens next?
Q3 — A football match ends 1–1 after 90 minutes, then one team wins on penalties. How do you settle it?
Q4 — A Hong Kong race has been scraped and appears in the Upcoming list. What must you do before making it visible to users?
Q5 — A user has 1,200 VC. You've been authorised to credit them 500 VC. What do you enter in the Override Balance field?
Q6 — You want to cancel a horse race that has open bets on it. What should you be aware of before clicking Delete?
Q7 — You're about to send a broadcast message to all users. You realise you've made a typo after hitting Send. What can you do?
Q8 — A user disputes that their balance was changed without their consent. How do you investigate?