Game Mechanics

Pull game

Pull is the buyer-curated mystery-stack game. Buyer picks 2-5 cards themselves, pays a price set by the average, and the server randomly picks ONE of those cards to ship. The buyer assembles their own pool of "things they'd be happy with" and takes their shot.

The math

Pull pricing is averaged across the buyer's stack:

Example: stack of 5 cards at $40 / $50 / $60 / $30 / $20:

Why buyers love it

The provably-fair flow

  1. Buyer commits a stack via /api/play/pull
  2. Server generates seed (32 bytes random)
  3. Server hashes seed (SHA-256) + anchors on Solana
  4. Server reveals seed + computes winner: seed[0] % stackSize
  5. UI animates a card-shuffle reveal, lands on the winner
  6. Stripe captures pullPrice
  7. Order created for the winning card; the other cards in the stack stay in inventory

Eligibility rules

RuleDefaultWhy
Stack size min21-card stack is just a direct buy with extra steps
Stack size max5Above 5 the odds get too dilute to feel exciting
Stack avg floor$15Shipping economics — server's fee + USPS floor
Per-card pullEligibletrue (default)Operator can opt a specific card out of Pull via Strategist
⚠ The avg-≥-$15 rule is the gotcha

Sub-$5 cards drag the average DOWN sharply. To include a $1 card in a 5-card stack averaging ≥$15, the other four cards need to total ≥$74 (avg $18.50). That's why city lots exist as the better path for low-value bulk inventory — the operator pre-bundles them so the math works.

Sub-$15 cards in Pull

Sub-$15 cards CAN appear in Pull stacks — they just need higher-value partners. A buyer building a 2-card stack with one $5 + one $25 card averages $15, clears the floor. The Pull-tray drawer in ToT shows the running average live as the buyer adds cards.

Lots in Pull

Pull-eligibility on lots is gated by pull_lots_max_eligible (default 5). A lot of 6+ cards is too unwieldy to be a single Pull "option" — buyer can't process "I'm picking from 6 lots, each of which has its own card mix." Lots ≤ 5 cards are eligible; bigger lots are flip-only.

Operator settings

In SlabTrack Strategist commit, three knobs control Pull behavior:

FieldDefaultWhat it does
pull_singles_eligibletrueWhether new singles default to pullEligible
pull_lots_max_eligible5Lots up to this size are pull-eligible; bigger are flip-only
flip_eligible_floor15Sub-floor singles route as Pull-only (no solo flip)

Code references