Skip to content

The staff portal: roles and signing in ​

Staff run Jua from the staff portal at admin.juamarkets.com. It is a separate site from the customer one, with its own sign-in: a customer session never opens a staff page, even for a staff account.

The roles ​

An account's role is one of three. Everyone starts as a customer; an admin gives staff their role.

RoleSees in the portalCan
AdminEverything: Markets, Events, Create market, Disputes, Suggestions, Comments; Users, Staff, Payments and Crypto (real money only), Announcements, Telegram; Notifications, Analytics, Audit log, SettingsEverything a resolver can, plus people (roles, ID checks, suspensions, balances, commissions), announcements, the Telegram Mini App, analytics and every platform setting; and two overrides on markets: Resolve now (skipping the dispute window) and shortening a dispute window below the platform's floor
ResolverMarket work only: Dashboard, Markets, Events, Create market, Disputes, Suggestions, Comments; Notifications, Audit logCreate and edit events and markets, switch trading on and off, close, propose, finalise and reopen markets, decide disputes, accept or turn down suggestions, moderate comments. Cancelling a market (settling at 50¢) and deleting one are admin actions
CustomerNothingTrade on the site

The API enforces the roles on every request, so a resolver who types a people or money URL is refused. Taking a role away ends what that person's sessions can do at once.

A conflict-of-interest rule applies to everyone: a staff member who holds or has traded a position in a market cannot propose, finalise, resolve or cancel it. Another staff member must. (Staff accounts can still trade; whether they should is a policy question for the team.)

Signing in ​

  1. Open admin.juamarkets.com/login.
  2. Enter your email and password.
  3. Enter the current code from your authenticator app. The first time, the page shows a QR code: scan it with Google Authenticator, 1Password, Authy or any TOTP app, and enter the code it shows. Every later sign-in asks for the current code.

A staff session lasts 12 hours and is held in the portal's own cookie. Every action that settles money or changes an account (finalising or resolving a market, cancelling one, approving an ID, suspending, changing settings or roles, sending an announcement) needs a session confirmed with the authenticator code. If the portal says "Moving money needs a staff session confirmed with your authenticator…", sign out and sign in again.

Deployments on the built-in sign-in

A deployment that has not switched on Supabase Auth signs staff in with a password alone, and the Settings page says crypto.requireMfa is not in force. Real money should run on Supabase Auth with authenticator apps.

Getting a staff account ​

Two ways, both admin's work:

  • From the Staff page, for someone who already has a Jua account: Give someone a staff role → find them by username, name or email → choose Resolver or Admin → confirm. They sign in to the portal with their account's email and password. An account with no email cannot sign in to the portal until one is added.
  • From a checkout, for a new person: whoever operates the platform runs bun run db:staff <email> <admin|resolver> against the production database. It creates the account with a generated password, printed once, to hand over privately. --reset gives a new password and authenticator to someone locked out; <email> user removes a leaver. See Keys and roles.

On the Staff page an admin changes anyone's role in place (Admin, Resolver, or Remove from staff). You cannot change your own role, and the last admin cannot be removed.

Finding your way around ​

  • Dashboard: what is waiting on staff (markets awaiting an outcome, trading switched off, open disputes, proposals in their window, reported comments, suggestions; with real money, pending payments and ID reviews), the last 24 hours' trading, and the audit trail.
  • Markets and Events: every market, filterable by status; every event with its outcomes.
  • Create market: a new event with one Yes/No market or several outcomes.
  • Disputes, Suggestions, Comments: the three queues from customers.
  • Notifications: alerts and notices addressed to staff, with an unread count.
  • Audit log: every staff action and everything housekeeping did on its own. Entries cannot be edited or removed.
  • Admins also see Users, Staff, Announcements, Telegram, Analytics and Settings, and, with real money, Payments and Crypto.

Every action asks for confirmation first, in a dialog that names what will change; anything that settles money or cannot be undone is marked in red.

Pages in this guide ​

Jua Markets · Africa's prediction market.