School Lottery Fundraiser
School Lottery Fundraiser
Fundraiser Draw System
Loading…
Working…

School Manager

Classes β„Ή
Summary by teacher. Enrolled = total students on roster. Participating = students with any donation amount. Rate = participation %. Click any column header to sort.

Teacher Enrolled Participating Rate Online Cash Total

Students β„Ή
Every student on the roster. Click Online or Cash cells to edit amounts directly β€” changes are tracked as manual adjustments. Click column headers to sort.

# Student Teacher Online Cash Total Exclude β„Ή
Tick to remove this student from the lottery draw. Their donation still counts toward class totals and stats.
Notes β„Ή
Free-text notes per student. Not used in any calculations.
Tx β„Ή
Opens the full transaction history for this student β€” every import batch row that makes up their total. Individual transactions can be removed.
Adj

Lottery Draw

Reveal Controls β„Ή
Controls which columns appear in the Winners table and during the live draw spinner. Hide student names for a dramatic reveal β€” show only the ticket code, make the winner come forward, then reveal their name. Toggle these at any time during or after the draw.

Winners β„Ή
Filled in after a draw is run. Shows each prize number and winner details based on your Reveal Control settings. Re-open a completed draw by clicking Run Draw again.

Students

# Student Teacher Amount Base β„Ή
Every student on the roster gets 1 free base ticket regardless of donation amount.
Extra β„Ή
Bonus tickets earned from donations: floor(Total Amount Γ· $ per ticket). Adjust the $ per ticket setting in the sidebar to change how many extras each student earns.
Total Odds % β„Ή
This student's share of the total ticket pool as a percentage. Always reflects the full school pool even when filtered to one class. Example: 6 tickets out of 3,200 total = 0.1875%.
⚠ Tickets have not been calculated yet. Click Recalculate Tickets to generate the pool before running a draw.

Full Ticket Pool (shuffled) β„Ή
The complete list of all lottery tickets in their shuffled draw order. Each ticket has a unique code (e.g. KR-048271). The draw picks winners from this pool using the seed. This table is your pre-draw audit β€” it can be downloaded via the Audit CSV button.

# Ticket Code Student Teacher Ticket

Fundraiser Manager

Quick Addβ„Ή
Add a single student directly without importing a file. The Teacher field autocompletes from existing classes. If you enter an Online or Cash amount it is recorded as a manual transaction. Clear the name after each entry β€” teacher stays filled for fast batch entry within the same class.

Import History β„Ή
Every data import is listed here as a batch β€” filename, date, mode, and row count. Expand a batch to see individual rows. You can delete a single transaction row or an entire batch. Deletions immediately update all amounts, stats, and ticket counts.
β€” expand any batch to review or remove individual rows

Import Wizard

Mode: (none)

How To Use School Lottery Manager

A complete guide to setting up, managing, and running your school fundraiser lottery.

⚑ Quick Start β€” From Zero to Draw
1
Name your fundraiser β€” Go to Fundraiser Manager and enter a name and description. This appears on printed tickets and audit files.
2
Load your school roster β€” On School Manager, click Load School Data and import a CSV or Excel file with student names and teachers.
3
Import donation data β€” Click Load Cash/Online to import fundraising amounts. Use Accumulate to add on top of existing, or Reset & Re-sum to replace.
4
Review amounts β€” Check the student table. Edit any cell directly. The teacher summary shows class-by-class totals and participation rates.
5
Go to Lottery Draw β€” Set the dollar-per-ticket value, click Recalculate Tickets to generate the ticket pool, then click Run Draw.
6
Download the Audit CSV β€” After the draw, download the audit file which records the seed, all winners, the full ticket pool, and every transaction.
🏫 School Manager

The central hub for student data, amounts, and class management.

Importing Data
Load School Data
Imports a fresh student roster β€” names and teacher assignments. Replaces all existing student records. Use this at the start of a fundraiser.
Merge School Data
Adds new students from a file without removing existing ones. Useful if a class was missed in the initial load.
Load Cash/Online
Imports fundraising amounts. Choose Accumulate to add on top of existing totals (e.g. a second collection round), or Reset & Re-sum to wipe all transactions and start fresh from this file.
Column Mapping

When importing, the wizard shows your file's raw columns and lets you map them to the correct fields. The system tries to auto-detect common column names. You can map a single column to both Online and Cash if your file has a single "Amount" column.

Student Table
Search box
Filter by student name or teacher in real time. The count badge shows how many are displayed vs total.
Inline editing
Click any Online or Cash cell to edit the amount directly. Changes create a "manual adjustment" transaction so the edit history is preserved.
Exclude checkbox
Checking Exclude removes that student from the lottery draw. Their data remains intact β€” they just won't receive tickets.
Notes field
Free-text notes per student. Not used in calculations.
πŸ“‹ Tx button
Opens the transaction history for that student β€” shows every import batch row that contributed to their total, with the ability to remove individual transactions.
Column headers
Click any column header to sort. Click again to reverse. Sort state is preserved when switching tabs.
Class Summary Table

Shows each teacher's class with enrolled count, participating count, participation rate %, online total, cash total, and grand total. A totals row at the bottom summarises the whole school. Click a class name in the sidebar to filter the student table to that class only.

Summary Stats

The stats cards at the top update automatically as data changes. They show the totals and leaders for the current filter (all classes, or a single class). Top Student, Top Class by Raised, and Most Participants update dynamically.

Export & Reload
Export Class
Exports the currently filtered class (or all students if no filter) to a CSV file.
Export All
Exports every student regardless of filter.
Reload Session
Re-imports a CSV previously exported from this tool. Useful for restoring a session from a backup file.
πŸ“‹ Fundraiser Manager

The home base for your fundraiser's identity and complete history.

Name & Notes
Enter a fundraiser name (e.g. "Spring Lottery 2025") and any notes. The name appears in the browser tab header, on printed ticket PDFs, and at the top of the audit CSV.
Stats cards
Shows school-wide totals, participation rates, averages, and leader boards β€” the same layout as School Manager but always for the whole school regardless of any class filter.
Import History
Every import batch is listed here with filename, date/time, mode, and row count. Expand any batch to see individual rows. You can delete a single row transaction or an entire batch. Deletions update all amounts and stats immediately.
Reset ALL Data
Permanently deletes all students, transactions, and import history. Requires confirmation. Use this to start a brand new fundraiser.
🎲 Lottery Draw

Everything needed to run a fair, auditable, and exciting draw.

Ticket Calculation

Each student receives 1 base ticket plus 1 additional ticket for every N dollars raised, where N is the "Dollar per extra ticket" setting. A student who raises $25 with a $5/ticket setting earns 1 + 5 = 6 tickets total.

Ticket codes are in the format XX-NNNNNN (two letters + six digits, e.g. KR-048271). Codes are seeded and deterministic β€” the same seed always produces the same codes for the same pool of students. This is important for printed tickets.

Settings
Dollar per extra ticket
How much a student must raise to earn each additional ticket. Default is $5. Changing this and recalculating resets the ticket pool.
Optional Seed
Type any text here to fix the random seed. Same seed + same data = identical tickets and draw every time. Leave blank for a random seed each recalculation. The seed is always recorded in the audit CSV.
Number of prizes
How many winners to draw.
Prevent repeat winners
When checked, once a student wins a prize all their remaining tickets are removed from the pool for subsequent prizes.
Recalculate Tickets

Builds the full ticket pool from current student data and shuffles it using the seed. The result appears in the Full Ticket Pool table showing each ticket's code, student, teacher, and "X of Y" position. If a draw has already run, recalculating will warn you with the previous seed and offer to download the audit CSV before resetting.

Reveal Controls

These checkboxes control which columns appear in the Winners table on this page. This is useful for live events β€” you can hide the student name and only show the ticket code, so the winner must come forward and identify themselves before their name is revealed. Toggle the controls during or after the draw to progressively reveal information.

Class Filter

Use the class buttons in the sidebar to filter the student table by teacher for easier reviewing. This does not affect the lottery draw β€” the draw always uses the full school pool. Odds shown are always the student's share of the complete pool.

Running the Draw

Click Run Draw. You'll be asked to choose a draw mode:

πŸ– One by One
The spinner draws each prize sequentially with an automatic pause between each winner. Best for a controlled reveal where you announce each winner before moving on.
β–Άβ–Ά Auto (Sequential)
All prizes are drawn back to back automatically with a shorter pause between each. Good for drawing many prizes quickly.

During the draw, the spinning ticket code lands on the winner's code. The winner is added to the running list. After all prizes are drawn, a Congratulations banner and confetti animation play. Closing and re-opening the draw shows the results without re-running.

Audit CSV

After the draw completes, the ⬇ Audit CSV button becomes available (both on the lottery page and in the draw modal). The audit file contains: fundraiser name and seed, a winners list, the complete shuffled ticket pool with codes, and every donation transaction with its import source. This file is the complete record of provenance for the draw.

πŸ–¨ Printing Tickets

After generating tickets (Recalculate Tickets), click πŸ–¨ Print Tickets PDF to open the print dialog. Choose a layout and scope, then click Generate PDF.

Layout Options
One page per student
Each student gets their own page listing all their ticket codes in a clean table sorted alphabetically. Includes their name, class, amount raised, ticket number (e.g. "3 of 7"), pool position, and a QR code. If a student has many tickets the page spills to a second sheet. Sorted by teacher then student name for easy distribution by class.
Ticket stubs
32 stubs per page (4 columns Γ— 8 rows) with dashed cut lines. Each stub shows the fundraiser name, student name, teacher, ticket code, and ticket position. Print and cut apart to give each student a physical stub for the draw bowl.
By class
One section per teacher showing all students in that class and their ticket codes. Each student has a header row with their name and amount, followed by their codes with positions. If a class is large it automatically continues on the next page. Good for distributing to teachers to hand out to students.
Alphabetical codes

Within each student's ticket list, codes are always sorted alphabetically (AA-000000 β†’ ZZ-999999). This makes it easy for a winner to find their ticket code quickly during the draw.

Print settings tip

All PDFs use a white background to minimise ink usage. When printing from your PDF viewer, set margins to None or Minimum for best results. For stub sheets, use a paper cutter rather than scissors for cleaner cuts.

πŸ”’ Data Integrity & Reproducibility
Seeds and reproducibility

The seed is the master key to the draw. Every ticket code assignment and every winner selection is derived mathematically from the seed + student data. Given the same seed and the same student data you will always get the same tickets and the same winners. This means:

  • If you type a fixed seed before recalculating, you can print tickets in advance and trust they'll match the draw.
  • The audit CSV records the seed, so any draw can be independently verified by anyone with this tool and the same student data.
  • If you leave the seed blank, a random one is generated and stored β€” it's shown in the recalculate warning dialog and always saved to the audit CSV.
Warnings when data changes

If you edit student amounts or import new data after tickets have been generated, a warning dialog appears. It shows the current seed and offers a download of the current audit before you proceed. Proceeding invalidates the ticket pool β€” you'll need to recalculate with a new seed before running a draw.

Transaction history

Every amount in the system is built from individual transactions, never a single overwrite. Each import batch records its filename, date, mode, and every row it contained. Manual edits via the inline cells create their own "manual adjustment" batch. You can inspect or remove any individual transaction without affecting others. This means the full history of how every dollar was recorded is always available.

πŸ’‘ Tips & Best Practices
  • Name your fundraiser first β€” the name appears on every PDF and CSV export, making files easier to identify later.
  • Use the seed field for a live event β€” set a seed, publish it before the draw as a transparency measure, then run. Anyone can verify the result is not manipulated.
  • Print tickets the day before β€” generate tickets with a fixed seed, print the PDF, then run the draw the next day with the same seed. Students get their physical stubs in advance.
  • Use Reveal Controls for drama β€” set it to show only Ticket Code, so the announcer reads out the code and the winner has to come forward. Then reveal Teacher, then Name.
  • Multiple import rounds β€” use Accumulate mode for each new collection period. Each import appears separately in the history so you can track which students paid in each round.
  • Import History on Fundraiser Manager β€” review every import batch before the draw to catch duplicates or data errors. You can delete individual rows or whole batches.
  • Export before Reset β€” the Reset ALL Data button on Fundraiser Manager is permanent. Always export or download the audit CSV first if you need a record.
  • The Exclude checkbox β€” useful for staff children, prize donors, or anyone who should not be in the draw. Their donation still counts toward class totals and stats.
πŸ“Š Column & Field Reference
Online
Sum of all online payment transactions for this student.
Cash
Sum of all cash payment transactions for this student.
Total
Online + Cash combined.
Base
The 1 free ticket every enrolled student receives regardless of donation amount.
Extra
Additional tickets earned from donations: floor(Total Γ· dollar-per-ticket).
Total Tickets
Base + Extra. This is how many entries the student has in the draw pool.
Odds %
This student's total tickets as a percentage of the full school ticket pool. Always reflects the whole-school pool even when filtered to one class.
Rate
Participation rate for a class: (students with any donation) Γ· (total enrolled) Γ— 100%.
Ticket X of Y
In the ticket pool table and PDFs, this shows which of a student's tickets this is. E.g. "3 / 7" means the 3rd of 7 tickets belonging to this student.
Pool Position
Where this specific ticket falls in the shuffled draw pool. The lower the number, the earlier it appears in the shuffled order β€” this has no effect on who wins since the winner is selected by RNG.

Import BatchRow #Date OnlineCashNotes
Student Name
Update donation amount
Online: $0.00  Β·  Cash: $0.00  Β·  Total: $0.00
Amount to add:

Ready to Draw?

Choose how you want to run the draw:

πŸ–¨ Print Tickets

Choose a layout then generate the PDF.

Prize #1
β€”β€”
Winners So Far