a simple python tool that screens resumes using a local model. runs on your machine, no API costs, no data leaving your device. built it for a hiring workflow, figured others might find it useful. nothing fancy — just works.
screens resumes against a job description using a local LLM. no API key, no upload, no data leaving your laptop. point it at a folder of PDFs, give it a JD, get back a ranked list with reasoning.
most resume screeners send everything to a third-party API. that’s fine for a lot of things, but candidate CVs are personal data — and a small hiring team shouldn’t need legal review just to filter applications. running the model locally side-steps the whole conversation.
the screener prompt is ~30 lines. most of the code is parsing PDFs and printing tables.
git clone https://github.com/varsani-akshit/local-resume-screener
cd local-resume-screener
./screen --jd job.txt --resumes ./pdfs/
it’ll churn through a folder of 50 CVs in a few minutes on an M-series laptop.
most of the value isn’t in the model — it’s in the prompt and how you structure the output. the model is happy to hallucinate “5 years experience” when the resume says nothing of the kind. forcing it to quote the exact span of the resume that supports each claim killed almost all of that.