hiring-agent
CLI Toolinterviewstreet/hiring-agent
AI agent to evaluate and score resumes from PDFs.
Overview
Hiring Agent parses resume PDFs, extracts structured data using LLMs, enriches with GitHub signals, and outputs fair, explainable scores. Runs fully local with Ollama or uses Google Gemini.
README Preview
# Hiring Agent\n\nResume-to-Score pipeline that extracts structured data from PDFs, enriches with GitHub signals, and outputs a fair, explainable evaluation.\n\n\n \n \n \n \n \n \n \n \n \n\n\n---\n\n## Contents\n\n- [Overview](#overview)\n- [Architecture](#architecture)\n- [Installation and Setup](#installation-and-setup)\n - [Prerequisites](#prerequisites)\n - [Quick setup with pip](#quick-setup-with-pip)\n - [Ollama models](#ollama-models)\n- [Configuration](#configuration)\n- [How it works](#how-it-works)\n- [CLI usage](#cli-usage)\n- [Directory layout](#directory-layout)\n- [Provider details](#provider-details)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Overview\n\nHiring Agent parses a resume PDF to Markdown, extracts sectioned JSON using a local or hosted LLM, augments the data with GitHub profile and repository signals, then produces an objective evaluation with category scores, evidence, bonus points, and deductions. You can run fully local with Ollama or use Google Gemini.\n\n---\n\n## Architecture\n\n\n\n\n\n**Flow**\n\n1. `pymupdf_rag.py` converts PDF pages to Markdown-like text.\n2. `pdf.py` calls the LLM per section using Jinja templates under `prompts/templates`.\n3. `github.py` fetches profile and repos, classifies projects, and asks the LLM to select the top 7.\n4. `evaluator.py` runs a strict-scored evaluation with fairness constraints.\n5. `score.py` orchestrates everything end to end and writes CSV when development mode is on.\n\n\n\n\n**Key modules**\n\n- `models.py`\n Pydantic schemas and LLM provider interfaces.\n\n- `llm_utils.py`\n Provider initialization and response cleanup.\n\n- `transform.py`\n Normalization from loose LLM JSON to JSON Resume style.\n\n- `prompts/`\n All Jinja templates for extraction and scoring.\n\n\n\n\n\n---\n\n## Installation and Setup\n\n### Prerequisites\n\n- **Python 3.11+**\n\n The repository pins `.python-version` to 3.11.13.\n\n- **One LLM backend** (either of