Pokémon Community Charity Stream-A-Thon

Raffle, Auction & Giveaway Transparency

Last updated: March 2026

Our Commitment to Fairness

Every raffle and giveaway run during Charity Stream-A-Thon uses automated, deterministic systems to calculate entries and select winners. No administrator manually picks or adjusts results. This page documents exactly how each system works so that donors, streamers, and viewers can verify the process independently.

Participation in any raffle or giveaway is a voluntary benefit of donating to St. Jude Children's Research Hospital through Tiltify. No purchase is necessary to participate where prohibited by law. Raffle prizes have no cash value and cannot be exchanged or transferred.


Donation Data — Where It Comes From

All donation data is sourced exclusively from the Tiltify public API using OAuth2 authenticated requests tied to the official Charity Stream-A-Thon team campaign. No donation data is entered, modified, or fabricated by event staff.

The following fields are read from each donation record:

FieldDescription
Donor nameAs entered by the donor on Tiltify
Donation amountIn USD, as processed by Tiltify
TimestampThe exact UTC time the donation cleared
CampaignWhich streamer's campaign the donation was made through
Donor commentOptional message left by the donor

Note:Anonymous donations are excluded from all raffles and auctions. Donors who submit their name as “Anonymous” or leave it blank are not entered into any pool. If you wish to be eligible, ensure your Tiltify display name is set before donating.


Regular Raffle Wheel

The regular raffle wheel is used throughout the event for ongoing prize drawings. It is operated by individual streamers during their broadcasts.

Entry Calculation

Each donation earns raffle entries based on its amount. The base rate is $10 USD = 1 entry:

entries = floor(donation_amount / 10)

Examples: $10 = 1 entry  ·  $25 = 2 entries  ·  $100 = 10 entries. Amounts below $10 receive no entries.

Entry Cap

A configurable maximum entries-per-donor cap may be applied at the streamer's discretion. When a cap is in effect, no single donor can hold more than the capped number of entries in a single drawing, regardless of donation size. The cap in effect is displayed on-stream when active.

Double Spots

Streamers may optionally enable a Double Spots setting. When active, donors who reach the maximum entry cap receive double that capped amount instead of being hard-capped. This setting is disclosed on-stream when in use.

Winner Selection

The pool is a flat array where each donor appears once per entry ticket. A winner is drawn by:

winner = pool[ floor(Math.random() × pool.length) ]

Math.random()uses the browser's built-in cryptographically seeded pseudo-random number generator (CSPRNG). Every ticket has an equal and independent probability of selection:

P(win) = donor_entries / total_pool_entries

No administrator can influence or replay the random draw. The result is final the moment the wheel animation completes.


Finale Raffle Wheel

The Finale Wheel is a separate, tiered drawing held at the end of the event for grand prizes. It draws from the full event donation pool— all donations made to any participating streamer's campaign across the entire event window.

Donation Aggregation

Unlike the regular wheel, the Finale Wheel aggregates all donations from the same donor before calculating entries:

total_effective = sum( amount_i × multiplier_i )   for all donations by this donor
entries         = floor( total_effective / 10 )

This allows donors who give in smaller increments throughout the event to accumulate entries, provided their combined total reaches $10 or more. Donors whose aggregate total remains below $10 receive no entries.

Donor identity is matched by display name as reported by Tiltify. Two different people who happen to share the same display name would have their donations combined. We recommend donors use a unique Tiltify display name to ensure accurate attribution.

3× Entry Windows

During designated bonus periods — announced live on stream — all donations made within that time window earn triple entries:

multiplier = 3   if  window_start <= completed_at <= window_end
multiplier = 1   otherwise
Full Entry Formula — Example
DonationAmountIn 3× Window?Effective Amount
Donation 1$20No$20
Donation 2$10Yes ×3$30
Donation 3$5No$5
Total Effective Amount$55 → 5 entries
Manual / Free Entries

No purchase is necessary to enter the Finale Raffle. Any person may request one (1) free entry into the Finale Wheel pool without making a donation. Free entry requests must be submitted in accordance with the method described at charitystreamathon.com/terms.

In addition, administrators may add names directly to the pool in limited circumstances. All manual and free entries count as exactly 1 ticket, are not subject to 3× window multipliers, and are not affected by donation aggregation rules. When manual or free entries are present in a draw they are disclosed on-stream prior to the spin.

Milestone Goals System

The Finale Wheel is divided into milestone prize goals. Each milestone is drawn independently from the same full donor pool. Winning one milestone does not remove a donor from other milestone draws.

Winner Selection
winner = pool[ floor(Math.random() × pool.length) ]

Charity Auctions

Charity auctions run on a dedicated platform at auction.charitystreamathon.com. All bids are placed via Twitch chat commands, and winning bids are fulfilled through a verified donation to the streamer's Tiltify campaign.

How Auctions Are Created
SettingDescription
Starting bidThe minimum opening bid amount ($1.00 minimum)
DurationHow long the auction runs (30 seconds to 20 minutes)
Quiet periodA 30–60 second anti-snipe window at the end of the auction
Max extensionsThe maximum number of times the quiet period can extend the auction
Bid commandThe Twitch chat command used to place bids (e.g. !bid)
Item valueOptional declared retail value of the item
Minimum bid thresholdOptional minimum percentage of item value required to open bidding
How Bidding Works

Bids are placed by typing the bid command followed by a dollar amount in chat (e.g. !bid 25). Rules enforced on every bid:

  • The auction must be active or in an extended quiet period
  • The opening bid must meet or exceed the configured starting bid
  • Each subsequent bid must exceed the current highest bid by at least $1.00
  • Only one bid holds the winning position at any time — the database update is atomic
  • All bids are timestamped and permanently stored for audit purposes
Anti-Sniping — Quiet Period
if bid placed within quietPeriodSecs of expiresAt:
    expiresAt = expiresAt + quietPeriodSecs
    extendCount += 1
Winner Determination

When an auction ends, the winner is the bidder whose bid holds the isWinning flag — always the highest valid bid at the moment the auction closes.

Donation Validation
StageMethodResult
1 — WebhookTiltify sends a real-time notification. The system verifies authenticity (HMAC-SHA256), then attempts to match it to a pending win.PENDING → MATCHED
2 — Cron fallbackEvery 30–60 seconds, the system fetches recent campaign donations and re-attempts matching against pending wins.PENDING → CONFIRMED
3 — Manual reviewStreamers and administrators can manually match a Tiltify donation record to a pending win. All manual actions are logged.Any → CONFIRMED

For a donation to be automatically matched:

  • The donor's name on Tiltify matches the winning bidder's Twitch display name or login
  • The donated amount is equal to or greater than the winning bid amount
  • The donation timestamp is after the auction ended
  • The Tiltify donation has not already been matched to a different auction win
Donation Status Flow
StatusMeaning
PENDINGAuction ended, winner determined, awaiting donation from winner on Tiltify
MATCHEDA Tiltify donation has been automatically linked — awaiting confirmation
CONFIRMEDDonation verified; item fulfillment can proceed
FAILEDNo qualifying donation was received within the review window, or the win was voided
Audit Trail

Every action in the auction system is logged — all bids, every status change, all moderation actions, and the identity and timestamp of any administrator or streamer who takes a manual action.

Shipping & Personal Data

Winners of physical items are asked to submit a shipping address through the auction platform. All addresses are stored encrypted using AES-256-GCM encryption and are accessible only to the fulfilling streamer and administrators. Address data is deleted after fulfillment.


General Disclaimers

  • No purchase necessary. Donations are made to St. Jude Children's Research Hospital, a registered 501(c)(3) charity. Raffle participation is a voluntary benefit.
  • No cash value. All prizes are awarded as-is with no cash equivalent, exchange, or transfer option.
  • Void where prohibited. Participants are responsible for compliance with their local laws.
  • Technical limitations. Entry calculations depend on data accuracy as reported by Tiltify. In the event of a discrepancy, administrators will make reasonable efforts to reconstruct accurate entry counts.
  • Administrator discretion. Event staff reserve the right to disqualify entries, void draws, or modify rules in cases of fraud, abuse, or system error. Any such action will be communicated transparently on stream.
  • Data privacy. Donor names displayed on-stream are sourced from the public Tiltify donation feed. If you prefer not to have your name displayed, set your Tiltify account to anonymous — noting that this will also make you ineligible for raffle entry.

Questions or Concerns

If you have a question about how entries were calculated for your donation, or wish to dispute a draw result, please reach out via our contact page within 7 days of the event.