Challenge
Docs>Concepts>The Challenge ladder

The Challenge ladder

Claiming a Challenge unlocks a harder one worth twice as much, published for everyone who got that far and priced on the players who did.

What it is for

A Challenge pays one prize per player, for life. The players who reach that wall first are the best ones, and from that moment they are worth nothing on that Challenge ever again: a claimed-out player has money, skill and appetite, and nothing left to buy.

The ladder is what they buy next. A harder bar, twice the prize, unlocked by the claim they already made.

There is nothing to configure and nothing to build. Challenge spawns each rung, measures its bar from the players who claimed the one below, prices it, and stops the ladder when the next doubling would pass your integrity tier ceiling.

The player rules

  1. Claiming rung n unlocks rung n+1 for that player. Nothing else unlocks it.
  2. One claim per player per rung. The ordinary win lock, unchanged.
  3. A score claims only the rung it was bought on. A rung 1 winning run that would also have beaten rung 2's bar claims nothing on rung 2: the player did not buy a rung 2 attempt, and rung 2's bar may not have existed when they scored. No retroactive claims, no skipping rungs.
  4. Locked rungs are visible, unpriced. The island shows "claim Fewest Moves to unlock" rather than a bar and a prize, because there is nothing yet to promise.

The unlock is not stored anywhere. "Has this player unlocked rung n" is exactly "has this player claimed rung n-1", which is the same award lookup the win lock already reads. A second copy of that fact would be free to drift from the refusal a player actually meets.

How a rung comes into existence

A rung is an ordinary Challenge row with two extra fields: parent_challenge_id, and rung counting from 1. It inherits the metric, the unit, the direction, the drift band, the tier ceiling, the solvency breaker, the sandbag response, the daily cap and the win lock, because all of those already act on a Challenge row and none of them need to learn what a rung is.

A single sweep, every 15 minutes, does both halves of the work.

Spawn

As soon as a Challenge is live and has no child, the sweep creates one: locked, unpriced, fee 0, prize 0, in status calibrating. There is no separate "locked" status, because calibrating already means "this exists, it has no bar, and it cannot charge", and the database enforces the last part.

A Challenge has at most one child, guaranteed by a unique index rather than by the sweep's timing.

Nothing spawns above a Challenge that is not live, above one that pays nothing (twice nothing is nothing, and an unclaimable parent unlocks nothing), or where the doubled prize would clear your tier ceiling.

Pricing

A locked rung opens when the population below it is big enough to measure:

  • 25 claimants of the parent, and
  • 500 capped scores contributed by them.

Capped means after each player's share of the sample has been taken down to 1%, floor 3, so 500 capped scores implies on the order of 2,000 raw scores spread across those players. A rung is a promise to a small, strong population, and it should be slow.

25 is deliberately far below the 200 distinct players an ordinary Challenge needs, because the two numbers are bought with different currencies. Two hundred free-play players is a morning of traffic; 25 people who have each already claimed a paid Challenge in your game is a population that can take months to produce.

The parent must still be live at pricing. Pricing a child off the players who beat a bar the drift monitor stopped trusting would launder a suspension into a new product.

Where the numbers come from

QuantityRule
PrizeTwice the parent's prize, stopped by your tier ceiling
Fee12.5% of the prize, the platform's standard ratio
Target pass rateHalf the base rate, applied once at the step onto the ladder
BarThe target percentile of the claimants' own scores at this metric

The prize doubles. The ladder's height is therefore set by your integrity tier rather than by a constant. A $9 rung 1 on tier C gives $18, $36 and $72, and stops there, because $144 is over the $100 ceiling and a rung nobody could ever be paid for is worse than no rung. The ceiling is re-read at pricing rather than carried from spawn, because a program can be demoted in between and the ceiling that governs a payout is the one in force when Challenge pays.

The fee is 12.5% of the prize, which is also the break-even pass rate. Fee ratio, break-even and the solvency breaker are one number said once.

The target pass rate is halved once, at the step onto the ladder, and inherited unchanged after that. Rung 2 of a 10% Challenge targets 5%, and so does rung 3, and so does rung 4. The halving prices adverse selection: the players who come back to attempt a rung are not a random draw from its claimants, they skew hard toward the ones most likely to beat it. That fact is equally true at every rung rather than compounding up the ladder. Halving per rung would put rung 5 at 0.6%, which is not a Challenge, it is a lottery with a bar.

The bar is placed by the same two functions every other calibration path uses, on a different population: every score at this metric by players who claimed the parent, capped at 1% per player, reduced to one best score per player, cut at the target percentile. There is no new statistic. Scores on sibling Challenges that measure the same metric count too, because a game measuring one distribution twice should not have half of it thrown away.

A priced rung carries calibration_source: "rung_derived", which puts it on the go-live ramp: half its prize for its first 200 paid attempts, then the full prize automatically. A win during the ramp is topped up to the full prize once the drift monitor confirms the bar held. Its bar was measured by Challenge from paid, adjudicated outcomes, so it is not subject to the provisional ceiling. See Calibration.

The rung's player-facing name is built from the ladder's root name and its number, so rung 4 of "Fewest Moves" is "Fewest Moves Level 4", not a name with three suffixes on it.

Where locked rungs are, and are not

SurfaceLocked rungs
The islandListed, marked locked, with the Challenge that unlocks them named
GET /v1/challengesAbsent

Not a disagreement. GET /v1/challenges is a menu you render as offers, and everything it returns is something POST /v1/attempts will accept for that player: a Challenge they have claimed is finished, a rung they have not unlocked is not open yet, and one filter handles both. Your own page is not Challenge's to put a "you cannot have this" card on.

The island is a Challenge surface, so it can draw a locked card and sell the ladder with it, which is the entire commercial point of the feature.

You do not have to read rung or parent_challenge_id at all. They are on the Challenge object for partners who want to render a ladder themselves. If you build a menu some other way and offer a locked rung anyway, the attempt answers rung_locked and nothing is charged. The message names the Challenge that unlocks it. The refusal is temporary, unlike challenge_already_claimed: it clears the moment that player claims the parent.

Exposure, stated plainly

A player's lifetime take from a full tier C ladder is $9 + $18 + $36 + $72, which is $135, each amount behind its own fee and its own bar, each bar measured on a population that has already proved it can clear the one below.

At the halved target the expected margin per attempt is the fee minus 5% of the prize, which is 60% of the fee. That surplus is not free money. It is the price of the selection skew, and the drift monitor still owns the runtime truth: a rung whose realised pass rate crosses its 12.5% break-even suspends itself exactly like any other Challenge.

Related

  • Challenges: the win lock, the status machine, and the Challenge object
  • Calibration: the ramp, the drift monitor and the other three bar-placing paths
  • Programs and keys: the tier ceiling that decides how tall a ladder can be

Source: https://www.withchallenge.com/docs/challenge-ladder.md Docs index for AI agents: https://www.withchallenge.com/llms.txt

Ready to integrate?

Put a Bounty in your game in minutes.

Challenge for Players

Create an account, deposit funds, and compete for real money in games you already play.

Challenge for Developers

Add Challenge to your game and start earning from every match. Integration takes minutes.