stagiaire-bot
Escaped the labA zero-cost watchdog that logs into UdeM’s medical placement portal every 15 minutes and emails the moment a stage slot opens up.
Medical students refresh the Université de Montréal placement portal by hand, hoping a clinical stage slot opens before someone else grabs it. That is a job for a robot.
A GitHub Actions cron wakes the bot every ~15 minutes — free, forever, no server. Playwright logs in through the university’s CAS single sign-on, navigates to the capacity table, and scrapes every row across every page. The available slots get serialized and hashed; if the SHA256 fingerprint matches last run, the bot goes back to sleep without a peep.
Only when slots exist and the fingerprint changed does an email go out over Gmail SMTP. State persists to a JSON file so the next run remembers. The entire architecture is a scheduler, a browser, a hash, and an inbox — which is exactly as much architecture as the problem deserves.