Pari · prediction pools for Discord

Predict anything your community cares about, inside Discord.

Ask a question. People stake on outcomes and the pool sets the odds. Nobody sees your side until you claim, and your record is a calibration score rather than a pile of winnings.

Try the demo

Installs for you, in any server. Server owners can add it to a whole server instead.

Set VITE_DISCORD_CLIENT_ID at build time and this becomes the Discord authorize link.

demo · no account · nothing real

POINTSPARI · OPEN

Will this stream hit 10K viewers tonight?

locks 21:00 UTCresolves by the stream API at 23:00 UTC

Pool now, by outcome.

  • YES62% of pool · pays ~1.58x if it wins · 41 stakers
  • NO38% of pool · pays ~2.59x if it wins · 41 stakers

pool 1,000 ptstakeout 1.5%

Stake

Drag to split your stake between the two outcomes. 100% on one side is a 100% claim, and it is scored as one.

350 pts on YES returns 533 pts if YES wins · ~1.37x at this pool150 pts on NO returns 418 pts if NO wins · ~2.13x at this poolafter 1.5% takeout. The pool keeps moving until lock, so this is a projection, not a price.
  1. Open
  2. Locked
  3. Proposed
  4. Final
  5. Claimed
Check yourself: you put 100% on YES and YES wins. Did you beat the pool?

Only if the pool was less sure than you were. The pool had 62% on YES, so its Brier was 0.29 and yours was 0.00. Your edge is +0.29 on this market. If YES had lost, the pool would have scored 0.77 and you 2.00, and your edge would be −1.23. A confident call is worth more, and costs more.

  • Open source
  • Free points tier
  • Positions private until claim
  • Works inside Discord
  • Nothing to install on your machine
01PARI · 01

Three steps

A market takes about ten seconds to make.

  1. 1ASK

    Ask

    Anyone with the creator role posts a question with two to ten outcomes and a lock time, or picks a template that fills the form for them.

    /market create

    A card appears in the channel with the question, the outcomes and a countdown.

  2. 2STAKE

    Stake

    Everyone else taps a button on the card. Points cost nothing and refill daily. The reply is ephemeral, so only the staker sees it.

    /predict

    The bars move. The odds are the pool split, and they keep moving until lock.

  3. 3CLAIM

    Claim

    A steward posts the result with its source. After the dispute window closes, winners claim. Nothing is pushed to you.

    /claim

    Your form score updates, and the market goes on your record whether you won or lost.

Every command is listed on the commands page.

02PARI · 02

Private by design

The pool is public. You are not.

2things the chain has to publish. Your position is not one of them.

An order book has to show you the other side of the trade. A pari-mutuel pool does not. Everyone stakes into one pot, the pot sets the odds, and the winners split what is left after takeout. The pot has to be public, because the pot is the odds. Who put what into it does not.

Hidden

  • Who holds which position
  • The amount of each position
  • Payout amounts
  • The links between your deposit, your stake, your claim and your withdrawal

Public by necessity

  • The pool total on each outcome — the odds are the product
  • Deposits into the shielded pool: the amount and the depositor are visible at deposit time

One honest limit, from the same spec: the RPC provider you read through can see which note addresses your client asks for. Self-hosted indexing is the answer for school instances, and decoy reads for everyone else.

Status: specified, not shipped. The private-position program is designed in specs/02-stub.md and the hooks exist in the on-chain program, but they refuse to run until it is deployed. Until then, points-tier stubs are ephemeral Discord replies — only you see them in chat, and the chain records a plain position. The roadmap says exactly where this sits.

Read how the privacy works

Order book vs pool
ORDER BOOK@avabuy120@benbuy80@calsell45@dotsell210Every order shows its side and size.POOLstake 1stake 2stake 3stake 4one pot620 / 380totals onlyTotals are published. The people are not.Payout is your share of the pot, proved rather than listed.
Order book: every resting order shows size and side, so anyone can read and copy you. Pool: all stakes land in one pot, only the per-outcome totals are published, and payouts are proved rather than listed.
03PARI · 03

Form and edge

Being right is the scoreboard. Not being rich.

+6.4edge vs the pool, over 34 markets

Your form score is a calibration score: how close your allocations land to what actually happens. Your edge is the same score measured against the pool of the very same market. The pool itself scores exactly zero.

  • Ranking by profit rewards whoever staked the most, and Pari cannot see payouts anyway: they are private.
  • Ranking against the pool of the same market needs no category adjustment, because a 55% pool in esports is compared to itself and not to a 55% pool in crypto.
  • It is hard to game: going all in is a 100% claim and is scored as one, early stakes count up to twice as much as late ones, your own markets never count for you, and a market only counts if at least five other people staked on it.

Below 20 resolved markets you are shown as provisional and are not ranked. Shrinkage of ten pseudo-markets means three lucky calls cannot top a board.

How scoring works

POINTSFORM · 2026 S1@laz

form score

72

edge +6.4 vs the pool over 34 markets

  • crypto74
  • esports63
  • culture70
Season
Gold · 4,120 XP
Streak
11-day streak
Rank
#12 in this server
  1. Provisional
  2. Eligible
  3. Attested
Calibration, last 50 markets
Read it as a table
Share of markets in each confidence band where the outcome happened.
BandMarketsHappened
0-10%20
10-20%10
20-30%31
30-40%41
40-50%52
50-60%63
60-70%54
70-80%43
80-90%33
90-100%11
Sample card. Bars are the share of markets in each confidence band that actually happened.

Sample figures, drawn to show the shape of the card. They are not anybody’s record.

04PARI · 04

Mirror

Follow the pool, or follow the people beating it.

20forms in the index

A mirror pool stakes your amount using one allocation that is computed at lock, not before it. You never hold a per-outcome position of your own, and nobody can see your side early, because there is no side to see until the market is already closed.

Index pool

Follows the top twenty eligible forms on this server who actually staked on the market, weighted by their edge. Fewer than five of them in a market and it falls back to tracking the pool.

Class pool

Every enrolled member spreads a hundred chips across the outcomes before lock. The class allocation is the sum. People who do not vote contribute nothing. Built for classrooms.

  1. Join while the market is open. Leave while it is open and you get everything back.
  2. At lock, and only inside a short grace window, the allocation is computed and the stake goes in as one batch.
  3. Nobody can front-run an allocation that does not exist yet.

Past form is not future form.The index pays what the pool pays, minus takeout, unless its forms beat the pool.

Status: specified, not built.

A mirror pool, start to finish
WHILE OPENfollower 1follower 2follower 3mirror poolamounts onlyno outcome chosenAT LOCKALLOCATIONYESNOcomputed from the forms, then staked once as a batchAfter the result, each follower claims their shareof one published unit payout.
Followers contribute amounts, never outcomes. The allocation is set at lock, applied once, and published only afterwards.
05PARI · 05

Who it is for

Anything with an answer and a deadline.

POINTSUSE · 01

Your chat already argues about what happens next. Put a card in the channel and let the argument settle itself on the record.

“Will this stream hit 10K viewers tonight?”

/market create question:"Will this stream hit 10K viewers tonight?" outcomes:"Yes,No" close:4h

The card edits itself as the pool moves, so one pinned message is the whole thing.

POINTSUSE · 02

Match nights produce a hundred opinions and no memory of who was right. A market keeps the scoreboard for the scoreboard.

“Who takes game three?”

/market create question:"Who takes game three?" outcomes:"Blue,Red" close:45m

Markets lock before the event so nobody can stake on a result they already know.

POINTSUSE · 03

The small stuff: who is late, what the weather does, whether the group project ships. Points cost nothing, so the stakes are purely reputational.

“Does anyone actually book the flights this week?”

/market create question:"Does anyone book the flights this week?" outcomes:"Yes,No" close:7d

A daily points allowance means nobody is ever locked out for running low.

POINTSUSE · 04

A sixty-second question to open a lesson, a prediction before the experiment, a board for sports day, a term-long class arc. Points only, and no adult can see what any one kid picked.

“Which liquid dissolves it fastest: vinegar, water or oil?”

/market create question:"Which dissolves it fastest?" outcomes:"Vinegar,Water,Oil" close:20m

Built for ages 10 to 14. Scout troops and sports teams too — no curriculum required.

Eight ways a room uses it

06PARI · 06

Where it runs

Discord first. Everywhere a link goes after that.

1place you have to install anything. The rest are links.

Pari lives inside Discord. Everything else is a way for a market or a result to travel: a page, a board on a television, a card that unfurls when somebody pastes the link. Each surface below carries the same status vocabulary as the roadmap, so nothing here reads as a promise.

Shipped runs today · Building is in progress and visibly incomplete · Planned is specified with nothing running · Exploring is research, not a commitment

A real share card
A Pari share card: a ticket with a stub column reading PARI, TEST POINTS and market #12 on pari-house, and a body with the question "Will this stream hit 10K viewers tonight?", the lock time, a YES row at 62% of pool paying about 1.58x with 26 stakers, the pool total, and the lifecycle strip.
Rendered by the repository’s own card renderer (packages/share) from the same market as the demo above, at 1200×630. The square and story sizes exist too, for the surfaces that want them.
  • 01DISCORD

    Discord

    The product. Markets, cards with stake buttons, claims, form, leaderboards — all inside the channel.

    Slash commands over HTTP, no gateway connection and no privileged intents. One click to add.

    Shipped

  • 02WEB

    Web

    Grandstand: market pages, the purse, the board, your form. Live on the test network today.

    Reads the chain directly rather than a database. Being finished, and the roadmap says so until it is.

    Building

  • 03TV AND STREAM OV

    TV and stream overlay

    The board route at 1920, for a living-room screen or an OBS browser source. Read-only, no interaction.

    Minimum 32 px type and 7:1 contrast so it reads from three metres. Verified in the design lab gates.

    Shipped

  • 04SHARE CARDS

    Share cards

    A market or a result as a ticket image at 1200×630, 1080×1080 and 1080×1920, so a pasted link unfurls properly.

    One renderer in TypeScript (packages/share) and the same renderer in Rust behind an Open Graph service (crates/billboard), checked against each other fixture by fixture.

    Building

Every surface, in detail

07PARI · 07

Two tiers

Start free. Most servers never need anything else.

The points tier is the whole product with no money in it. The stakes tier adds settlement on Solana and is for age-verified servers and adults. Nothing nudges you from one to the other.

POINTSFREE

Free

$0

Points tier, for any server.

  • Points markets, binary and multi-outcome
  • Three open markets at a time
  • Templates, leaderboards, Linked Roles
  • Daily points allowance, never purchasable, never transferable

Points have no cash value. Conversion to money is refused at the program level on points-only and school instances.

Available

SOLPRO

Pro

$19 / month

Stakes tier, for age-verified servers.

  • Stakes tier in SOL or USDC, 21+ servers only
  • Unlimited markets and scheduled markets
  • Webhooks and server analytics
  • Five discovery boosts a month

Pro+ at $49 / month adds a custom card skin, the API tier, CSV export and twenty boosts. Schools and organisations are quoted.

Planned

Prices are set in specs/11-operations.md, charged in SOL or USDC, and marked planned because no billing is built yet. Stakes-tier pool fees are separate from the plan: 1% protocol takeout and 0.5% creator takeout at resolution, and a 2% fee if you exit a position before lock.

08PARI · 08

Roadmap

What runs today, and what does not.

Statuses below are checked against the repository, not against a wish list. "Shipped" means there is code running; "Building" means it is in progress and visibly incomplete; "Planned" means it is specified and nothing runs yet.

  1. 01

    Points markets in Discord

    Shipped

    • Slash commands, cards that edit themselves, templates
    • Pari-mutuel pools, binary and multi-outcome, 2 to 10 outcomes
    • Daily points allowance, floor and streak
    • On-chain program deployed to a mainnet fork, six seeded markets across the whole lifecycle

    You can run markets in a server today.

  2. 02

    Identity and retention

    Building

    • Form score and streaks
    • Seasons and XP
    • Linked Roles gated on form, season tier and streak

    A record that follows you between servers.

  3. 03

    Activity and premium

    Planned

    • The full board inside Discord as an Activity
    • Server dashboard
    • Plans and billing

    A board you can open without leaving the channel.

  4. 04

    Stakes tier

    Building

    • Vaults, takeout split, claims and the 2% early exit, all measured on the fork
    • The purse: a key made in your browser, no signup
    • Age-verified servers only
    • Mainnet deployment

    Settle in SOL or USDC where it is allowed.

  5. 05

    Private positions

    Planned

    • Positions as notes, spent by proof instead of by signature
    • Batched totals and fixed denominations so a single stake never moves the board on its own
    • Claim by proof

    Stake without anyone being able to copy you.

  6. 06

    Mirror pools

    Planned

    • Index pool following the top twenty forms
    • Class pool with a chip vote
    • Allocation computed at lock, never before

    Follow a method instead of a person.

  7. 07

    Silks portfolios

    Planned

    • Named publishers with a public form
    • Eligibility bar and an automatic stop
    • Positions still private, revealed only as an allocation

    Follow a specific caller, with guardrails.

The rail scrolls sideways — 7 phases in all.

The web app that reads the chain is being finished, not finished. The roadmap will say so until it is.

Last updated ChangelogAsk for it — link not configured yet

Opens a thread in the community server.

09PARI · 09

Open source

The part that holds your stake is the part you can read.

Apache-2.0licence on the protocol

The split matters when something goes wrong. Markets, pools and claims live in the on-chain program, so a market that is open stays open and a market that is final stays claimable whether or not our services are up. The protocol fee goes to a program constant, not a configurable address, so a self-hoster who forks the program is forking the fee switch too — that is the boundary, and it is in code rather than in a policy.

Nothing requires a database to be correct. Odds history rebuilds from the chain’s own events, leaderboards live on-chain, and the indexer is a cache.

Open source

  • The on-chain programs
  • The circuits and the IDL
  • The TypeScript and Rust SDKs
  • The bot framework and the market templates
  • The embeddable odds widget

Run by us

  • The hosted bots
  • The web app
  • The indexer and public API
  • The wallet service
  • Dispute council operations
10PARI · 10

Questions

The ones people actually ask.

Is it free?
Yes. The points tier costs nothing: points markets, templates, leaderboards and Linked Roles, with three markets open at a time. Points are not purchasable and not transferable, so there is nothing to spend. Paid plans exist for the stakes tier and are not built yet.
Do I need a wallet?
Not for the points tier, and not to read anything. There is no account, no email and no login. For the stakes tier you either make a purse in your browser, locked by a passphrase we never see, or connect a wallet you already have as a signer.
Who can see my stakes?
The pool totals on each outcome are public, because they are the odds. Your individual position is not. In Discord the confirmation is ephemeral, so only you see it. The on-chain privacy layer that hides positions from the chain itself is specified and not yet deployed; the roadmap says so.
Is this safe for my server?
The points tier has no money in it at all and is the default. Stakes are refused to members without an age-verified role. Anyone can report a market, mods can hide one, and banned terms are refused when a market is created.
What do mods control?
Four roles: admin sets the tier, currency, takeout and channels; steward resolves markets and rules disputes; creator posts markets; everyone else stakes. Mods can flag or hide a market, mute a member from staking, require approval for new markets, and export the server’s records.
How is a result decided, and what if it is wrong?
By a price feed, an on-chain read, an external API, or a named steward — whichever the market was created with, shown on the card. A steward posts the result with its evidence, a dispute window opens, and anyone can challenge it with a bond. A council rules and the losing bond is slashed.
Does Pari set the odds?
No. The odds are the pool split. If 62% of the pool is on YES, YES shows 62%, and it moves every time someone stakes, right up to lock. There is no market maker and no order book. Payout is your share of the pool after takeout, so it is known only at the end.
Can kids use it?
On the points tier, which is the default and has no money in it. School instances are points-only: the program refuses to enable conversion to money on them, stakes buttons require an age-verified role, markets are sealed until lock, and staff see score bands and participation, never a student’s position.
How do I remove the app?
Server Settings, then Integrations, then Pari, then Remove. The commands disappear immediately. Markets already on chain stay claimable by the people who staked in them, because the program does not depend on the app being installed.
What happens if you shut down?
The programs, the SDKs and the bot framework are Apache-2.0, so anyone can run them. Markets, pools and claims are on chain, not in our database, so an open market stays open and a final one stays claimable. The indexer is a cache and can be rebuilt from the chain.
POINTSADD · PARI

Install

Put a market in your server.

Free tier, nothing to install on your machine, and a Discord command you can undo in two clicks.

Adding it for yourself puts the commands in your pocket: they work in any server that allows them, and in DMs. Adding it to a server lets it post and edit the market cards everyone taps.

Set VITE_DISCORD_CLIENT_ID at build time and this becomes the Discord authorize link.

Telegram — Coming soon. The Telegram mirror is specified and not built.

Run it in a class or a clubRead the source