Automated weekly tool that cross-references the rodeo entry list against the UPRA card numbers and suspended list, then generates a polished Excel report with all matches, fines owed, and totals.
RodeoChecker/
├── .github/
│ └── workflows/
│ └── weekly_report.yml ← GitHub Actions: runs every Monday 8 AM CT
├── reference_data/
│ ├── card_numbers.xlsx ← UPRA member card list (update occasionally)
│ └── suspended_list.xlsx ← UPRA suspended list (update occasionally)
├── watched_folder/
│ └── (drop weekly alpha sheet here)
├── reports/
│ └── (generated reports saved here)
├── engine.py ← Matching + Excel report logic
├── RodeoChecker.py ← Desktop GUI app (Mac/Windows)
├── run_setup.sh ← One-time Mac setup script
└── README.md
Best for running the report yourself with a GUI.
- Clone or download this repo
- Run setup once:
This installs dependencies and creates a Rodeo Checker app on your Desktop.
bash run_setup.sh
- Every week:
- Drop the new alpha sheet into
watched_folder/ - Double-click Rodeo Checker on your Desktop
- Click ⚡ RUN REPORT
- The Excel report opens automatically
- Drop the new alpha sheet into
The workflow in .github/workflows/weekly_report.yml runs whenever you trigger it — no fixed schedule.
Setup (one time):
- Push this repo to GitHub (keep it private for sensitive data)
- Make sure the two reference files are committed in
reference_data/
Each time you need a report:
- Commit the new alpha sheet to
watched_folder/ - Go to Actions → Weekly Rodeo Report → Run workflow → Run workflow
- The report is saved to
reports/and appears as a downloadable Artifact
The generated Fines_Card_Verification_YYYY-MM-DD.xlsx has three sheets:
| Sheet | Contents |
|---|---|
| ⚑ Summary | Stat boxes (entrants, flagged, suspended, total $) + full flagged table |
| 📋 All Matches | Every card number and suspension match with offense and amount |
| ✅ Fine Totals | Fines only — one row per offense, subtotal per person, grand total |
- 🔴 Red rows — Person matched on the Suspended List (fines owed)
- 🟡 Amber rows — Person matched on Card Numbers list only
- 🟦 Navy bars — Subtotal per person / Grand total row
- 🟢 Green cell — Dollar total
Each TeamRoping entry on the alpha sheet lists two contestants — the header
(Rider Last/First Name) and the heeler (the extra name columns after Entry
Time). Both are checked independently against the card numbers and suspended
lists, and each appears in the report labeled TeamRoping (Header) /
TeamRoping (Heeler) so they're never missed.
The card numbers and suspended list only change occasionally.
Via Desktop App: Click the Update… button next to the file in the app.
Via GitHub: Replace the file in reference_data/ and commit/push.
To pick up engine fixes/features on an existing local copy:
git pull --rebaseIf you're running the Desktop App copy (not a git clone), just replace
engine.py with the latest version from this repo and re-launch the app —
no need to re-run run_setup.sh unless the Desktop shortcut itself is broken.
- Python 3.10+
pandasopenpyxl
Install manually:
pip install pandas openpyxlThis repo should be set to Private on GitHub since it contains contestant names and financial data.