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. Multiple smaller donations from the same person are combined:

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 instead of the standard rate. The multiplier is applied per individual donation based on its timestamp:

multiplier = 3   if  window_start <= completed_at <= window_end
multiplier = 1   otherwise

A donor may have some donations inside a 3× window and others outside. Each donation earns its own multiplier independently before being added to that donor's aggregate total. Bonus windows are set in advance and applied automatically — no manual adjustment is made after the fact.

Full Entry Formula — Example
Donation Amount In 3× Window? Effective Amount
Donation 1 $20 No $20
Donation 2 $10 Yes ×3 $30
Donation 3 $5 No $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. Only one free entry is permitted per person per event, regardless of how many requests are submitted.

In addition, administrators may add names directly to the pool in limited circumstances such as offline donations, sponsor contributions, or other staff-approved exceptions. 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 — a donor can theoretically win multiple milestones.

If a result is disputed or a winner is unreachable, the milestone may be redrawn at administrator discretion. Any redraw is announced publicly on stream.

Winner Selection

Identical to the regular wheel — a flat array where each donor appears once per entry ticket, drawn by:

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

The draw is executed live on stream with the animation visible to all viewers.


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. No money changes hands through the auction platform itself — it is purely a bidding and tracking tool.

How Auctions Are Created

Auctions are created and configured by streamers or administrators before going live. All settings below are fixed before the auction opens and cannot be changed once active:

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 (see below)
Max extensionsThe maximum number of times the quiet period can extend the auction (optional cap)
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 the streamer's Twitch chat (e.g. !bid 25). The auction bot reads all chat messages in real time and processes valid bids automatically.

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

Bidders who have been banned globally or by the specific streamer are rejected immediately and notified in chat. Bans may be temporary or permanent and are applied before any bid is accepted.

Anti-Sniping — Quiet Period

To prevent last-second bids from winning without giving other participants a chance to respond, every auction has a quiet period. If a bid is placed within the quiet period of the auction's scheduled end time, the clock is automatically extended by the quiet period duration:

if bid placed within quietPeriodSecs of expiresAt:
    expiresAt = expiresAt + quietPeriodSecs
    extendCount += 1

Extensions continue until no bid is placed during the quiet period, or until the configured maximum number of extensions is reached. The current extension count and deadline are announced in chat after each extension.

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. This flag is maintained atomically: every time a new valid bid is accepted, the previous winner's flag is cleared and the new bid is marked winning in the same database transaction. There is never more than one winning bid.

The system announces the winner in chat along with the final amount and instructions to donate via the streamer's Tiltify campaign page.

Donation Validation

Winning the auction does not complete the transaction — the winner must follow through with a real donation on Tiltify for the win to be confirmed. The platform uses a three-stage process to match and verify donations:

Stage Method Result
1 — Webhook Tiltify sends a real-time notification when a donation is processed. The system verifies the authenticity of the notification using a cryptographic signature (HMAC-SHA256), then attempts to match it to a pending auction win. PENDING → MATCHED
2 — Cron fallback Every 30–60 seconds, the system fetches all recent campaign donations from the Tiltify API and re-attempts matching against any still-pending wins. This catches cases where a webhook was delayed or missed. PENDING → CONFIRMED
3 — Manual review If automated matching fails, streamers and administrators can manually match a Tiltify donation record to a pending win by entering the donation details. All manual actions are logged with the reviewer's identity and timestamp. Any → CONFIRMED

For a donation to be automatically matched to a win, all of the following must be true:

  • The donor's name on Tiltify matches the winning bidder's Twitch display name or login (compared after stripping punctuation and spaces)
  • 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 streamer or admin confirmation
CONFIRMEDDonation verified by streamer or administrator; item fulfillment can proceed
FAILEDNo qualifying donation was received within the review window, or the win was voided by an administrator
Audit Trail

Every action in the auction system is logged. This includes all bids (including non-winning bids), every status change on a donation record, all moderation actions (bans, manual matches, overrides), and the identity and timestamp of any administrator or streamer who takes a manual action. These logs are retained for the duration of the event and are available to administrators for dispute resolution.

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. Winners may request deletion of their data at any time via the platform's data deletion request system.


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, not a condition of any purchase or transaction.
  • 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 regarding charity raffles and giveaways.
  • Technical limitations. Entry calculations depend on data accuracy as reported by Tiltify. In the event of a data discrepancy, platform outage, or API error, administrators will make reasonable efforts to reconstruct accurate entry counts. Final entry counts are at administrator discretion in such cases.
  • Administrator discretion. Event staff reserve the right to disqualify entries, void draws, or modify rules in cases of fraud, abuse, system error, or circumstances outside our control. 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. Include your Tiltify donor name and the relevant donation details.