Job hunting is a part-time job on top of your job. The worst part isn't the interviews, it's the daily grind of refreshing a dozen career pages, copy-pasting the same details, and rewriting the same cover letter with a new company name.
So I built a small tool to do the repetitive 80% and leave the 20% that actually needs me.
What it does
Every morning it:
Scans 7 job platforms (Lever, Greenhouse, Ashby, SmartRecruiters, Workday, Indeed/Google via JobSpy, Hiring.cafe).
Scores each opening against my resume from 0 to 100 with an LLM.
For anything above my threshold, drafts a tailored cover letter and a "why this company" answer.
Sends me one Slack card per role, with the apply link.
Then in Slack I tap the link and apply, react ✅ to mark it applied (it tracks the pipeline), or react 📞 to get interview prep, STAR stories mapped to likely questions, back in the thread. A weekly report summarizes how many roles I saw, scored, and applied to.
The one rule: keep a human in the loop
The tool does not auto-submit applications. That was deliberate. Blasting auto-filled applications is bad for employers and bad for you. The tool removes the toil (finding, scoring, drafting, tracking); I still make every apply decision and do every interview.
How it's built
- Python, with a thin client per platform, so adding a board is one small file.
- A pluggable AI backend: a local model for free, or the Anthropic API for speed.
- Deduplication by job id and by title+company, a per-company cap per run, and platform balancing so a single board doesn't crowd out the rest.
- A cron job runs the daily scan; a Slack bot watches reactions.
What I learned
- Scoring against your actual resume, not just keyword matching, cuts the noise dramatically.
- The Slack "one card per role, react to act" loop is what made me actually keep up with it.
- Keeping a human in the loop made it something I trust to run every day.
Try it
It's open source (MIT): https://github.com/shubhamkumbhalkar/lever-auto-apply
PRs welcome, especially new platform clients. If you try it, tell me what breaks.




Top comments (0)