Inspiration
ThunderHacks 2026 Main Track — the brief was Version 2.0: take something that exists and make it better. Every student here has run the internship hunt by hand: ten career pages in tabs, a spreadsheet, a shared list of apply links. We rebuilt the process, not just the list.
What it does
The next version of the student job hunt. A live feed of Canadian internship and co-op postings that shows what's open right now, remembers where you stand, and tells you when to follow up. No account needed.
How we built it
A Go crawler reads the Greenhouse, Lever and Workday job-board APIs concurrently, deduplicates results, and writes to a single SQLite file in WAL mode. A Go server polls with a rowid cursor and pushes new postings and close notices to the browser over WebSockets, implemented with the Go standard library, no framework. A posting not seen on a complete crawl is marked closed; a failed or interrupted crawl never closes anything. Status lives entirely in the browser — export/import moves it between devices.
Challenges we ran into
Proving Version 1.0 was actually broken, not just annoying, meant measuring it: we audited every apply link in the shared 2026 list against the employer's own job board to count how many were already dead. Getting safe closed-detection right took care, since a false "closed" is worse than a stale "open" — the system only marks something closed after a complete, uninterrupted crawl.
Accomplishments that we're proud of
Close detection is measured, not guessed: a 200 from the employer's API means open, a 404/410 means closed. The app needs no account, reads only public job-board data, and works entirely in the browser — any campus could run it with zero integration.
What we learned
We learnt how to work on GitHub together.
Log in or sign up for Devpost to join the conversation.