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
1Name your fundraiser β Go to Fundraiser Manager and enter a name and description. This appears on printed tickets and audit files.
2Load your school roster β On School Manager, click Load School Data and import a CSV or Excel file with student names and teachers.
3Import donation data β Click Load Cash/Online to import fundraising amounts. Use Accumulate to add on top of existing, or Reset & Re-sum to replace.
4Review amounts β Check the student table. Edit any cell directly. The teacher summary shows class-by-class totals and participation rates.
5Go to Lottery Draw β Set the dollar-per-ticket value, click Recalculate Tickets to generate the ticket pool, then click Run Draw.
6Download 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.