What Are the Dependencies for Running the Hiring Agent?
The Hiring Agent requires Python 3.11 or newer, nine pinned Python packages (including PyMuPDF, Ollama, and Pydantic), and properly configured environment variables to execute the resume scoring pipeline.
The Hiring Agent from the interviewstreet/hiring-agent repository is a pure Python application that orchestrates PDF resume parsing, GitHub profile enrichment, and LLM-based evaluation. Understanding the dependencies for running the Hiring Agent is essential before executing the end-to-end scoring workflow on local infrastructure.
Core Runtime Requirements
The foundation of the Hiring Agent is a modern Python interpreter. According to the .python-version file in the repository root, the project targets Python 3.11 or newer. This version requirement ensures compatibility with the type hinting and async features used throughout the codebase, particularly in models.py and the LLM provider abstractions.
All dependencies are strictly pinned in requirements.txt to ensure reproducible behavior across different environments.
Python Package Dependencies
The Hiring Agent relies on nine production dependencies and one development tool, each serving a specific function in the pipeline:
PDF Processing and Extraction
- PyMuPDF (1.26.3) — Handles PDF file I/O and extracts raw text/structure from resume documents.
- pymupdf4llm (0.0.27) — Converts extracted PDF content into Markdown-formatted prompts suitable for LLM consumption, as implemented in
pymupdf_rag.py.
LLM Integration and AI Services
- ollama (0.5.1) — Client library for communicating with a local Ollama LLM server, enabling on-premise inference without external API calls.
- google-generativeai (0.4.0) — Official Google client for Gemini integration, providing an optional cloud-based LLM backend alternative to Ollama.
Data Validation and HTTP Communication
- pydantic (2.11.7) — Powers the JSON-Resume data models and schema validation defined in
models.py, ensuring type safety across the extraction and enrichment stages. - requests (2.32.4) — Standard HTTP client used by
github.pyto fetch candidate repository data and by LLM wrapper classes for API communication.
Template Rendering and Configuration
- Jinja2 (3.1.6) — Renders dynamic prompt templates stored in
prompts/templates/, allowing parameterized system prompts for different evaluation criteria. - python-dotenv (1.0.1) — Loads runtime configuration from
.envfiles, managing secrets likeGEMINI_API_KEYandGITHUB_TOKENoutside the source code.
Development Tools
- black (25.9.0) — Code formatter included for development convenience to maintain consistent style across the codebase.
Environment Configuration Dependencies
Beyond Python packages, the Hiring Agent requires specific environment variables defined in a .env file. The repository provides .env.example as a template containing:
LLM_PROVIDER— Set toollamaorgeminito select the backend.DEFAULT_MODEL— Specifies the model name (e.g.,gemma3:4bfor Ollama).GEMINI_API_KEY— Required when using the Google Gemini backend.GITHUB_TOKEN— Personal access token for GitHub API rate limits and private repository access.
Installation and Verification
To satisfy all dependencies for running the Hiring Agent, execute the following steps:
# Clone the repository and create an isolated environment
git clone https://github.com/interviewstreet/hiring-agent
cd hiring-agent
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install the pinned dependency tree
pip install -r requirements.txt
# Configure environment variables
cp .env.example .env
# Edit .env to set LLM_PROVIDER, DEFAULT_MODEL, and API keys
# Verify installation by running the scoring pipeline
python score.py /path/to/resume.pdf
Key Source Files and Dependency Mapping
Understanding which source files rely on specific dependencies helps debug installation issues:
requirements.txt— The single source of truth for all pinned package versions.pymupdf_rag.py— Importsfitz(PyMuPDF) andpymupdf4llmfor PDF-to-Markdown conversion.github.py— Depends onrequestsfor HTTP operations against the GitHub API.models.py— Usespydanticfor schema definitions andgoogle.generativeaifor Gemini model interactions.prompts/templates/— Relies onjinja2for template inheritance and variable substitution.score.py— The CLI entry point that orchestrates all dependencies into the evaluation workflow.
Summary
- Python 3.11+ is mandatory for running the Hiring Agent pipeline.
- Nine production packages are pinned in
requirements.txt, including PyMuPDF for PDF processing, Ollama for local LLM inference, and Pydantic for data validation. - Environment variables defined in
.envcontrol LLM provider selection and API authentication. - Jinja2 templates in
prompts/templates/drive the prompt engineering layer. - The Black formatter is included as a development convenience but is not required for runtime execution.
Frequently Asked Questions
Is the Hiring Agent compatible with Python 3.10 or older versions?
No. The repository explicitly requires Python 3.11 or newer as specified in the .python-version file. The codebase utilizes modern Python features for type safety and async operations that are not available in earlier versions.
Can I run the Hiring Agent without installing Ollama?
Yes, but you must configure the Google Gemini backend instead. Set LLM_PROVIDER=gemini and provide a valid GEMINI_API_KEY in your .env file. However, you still need to install the ollama Python package (0.5.1) as it remains a declared dependency in requirements.txt even if unused at runtime.
Why does the project require both PyMuPDF and pymupdf4llm?
PyMuPDF provides low-level PDF parsing and text extraction capabilities, while pymupdf4llm (version 0.0.27) offers high-level utilities specifically designed to convert PDF content into LLM-optimized Markdown prompts. The pymupdf_rag.py module uses both libraries to bridge raw document extraction and prompt engineering.
Are the dependencies for GitHub integration mandatory?
Yes, if you want to enrich candidate profiles with repository data. The github.py module depends on requests (2.32.4) to fetch public and private repository information. Without a valid GITHUB_TOKEN set in your environment, the GitHub enrichment stage will fail or operate under strict rate limits.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →