finds.dev← search

// the find

interviewstreet/hiring-agent

★ 4,896 · Python · MIT · updated Jun 2026

AI agent to evaluate and score resumes.

A Python pipeline from HackerRank that scores resumes by parsing PDFs with PyMuPDF, extracting structured data via LLM (Ollama or Gemini), enriching with GitHub signals, and outputting category scores with explanations. Aimed at recruiters or engineering teams wanting to automate first-pass resume screening. Runs fully local with Ollama or against Gemini's API.

- Local-first option via Ollama means you can run this without sending candidate data to third-party APIs, which matters for privacy-conscious teams.

- Clean separation of concerns: PDF extraction, section-by-section LLM parsing with Jinja templates, GitHub enrichment, and scoring are all distinct modules rather than one monolithic script.

- GitHub enrichment is a genuinely useful signal—fetching repos, classifying projects, and selecting top 7 by commit authorship adds something beyond what's on the resume itself.

- Jinja templates for prompts keep LLM instructions version-controllable and editable without touching Python code.

- No test suite of any substance—the README mentions 'smoke tests with minimal inputs' but there's nothing in the directory tree showing actual test files. This is a pipeline where subtle prompt regressions will silently produce different scores.

- DEVELOPMENT_MODE defaulting to True in config.py means caching and CSV export are on by default; someone deploying this in production will need to remember to flip a flag buried in a source file rather than an environment variable.

- Scoring fairness is handled entirely by prompt instructions in a Jinja template, which is not auditable or verifiable. The README claims 'objective' and 'fair' evaluation but there's no mechanism to detect or correct for demographic bias baked into the LLM itself.

- Only two LLM backends supported (Ollama and Gemini), with the provider abstraction being thin enough that adding OpenAI or Anthropic would require touching models.py and llm_utils.py in non-obvious ways—the architecture implies extensibility it doesn't quite deliver.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →