What are you submitting?
Safety Tickets
Training Matrix
Role Requirements
Defines what each role requires. Click a cell to toggle it. Changes flow to every employee in that role.
✓ required for this role · N/A not required
Per-Employee Overrides
Exceptions for individual people. Click a cell to override the role default. Change a person’s role using the dropdown.
✓ role default (required) · N/A not applicable · ★ override (forced required) · ! override (forced N/A on a role-required ticket)
Upload Ticket
Snap the front of the ticket. Gemini Flash OCR reads the expiry, issuer, and cert number — you just review.
Reading ticket…
OCR is extracting the expiry date, issuing body, and cert number.
Days before expiry. Slack DM + manager channel post.
Compliance Table
📅 Today's Slack digest — preview
These reminders would post today based on each ticket's per-ticket reminder-day settings. In production this runs from a scheduled task at 07:00 America/Edmonton.
Activity Log
Every leadership action against roles, overrides, and the matrix. Newest first. Last 50 entries.
Ticket Binder — Step 1 of 3
Pick who's in the binder.
Step 2 of 3 — Pick tickets
Custom ticket selection
Check the tickets you want in the binder. Rows show what each person currently has on file.
0 tickets selected
Step 3 of 3 — Review
Leader PIN
Demo PIN is 123456. 15-minute unlock.
Incorrect PIN.
Bundle tickets into one QR
Pick which tickets to bundle. Anyone with the QR can view them for 24 hours.
4 tickets selected
💥 Remind everyone in Red
Preview every Slack DM that will be sent. Nothing is sent until you confirm.
#safety-tickets💬 Send Slack reminder
Preview what will be sent. Nothing is sent until you confirm.
#safety-tickets