# Dependencies for Running the Hiring-Agent Project: Complete Setup Guide

> Get the complete hiring-agent project setup guide. Discover required dependencies including Python 3.11+, PyMuPDF, Ollama, and Pydantic, plus essential environment variables.

- Repository: [HackerRank/hiring-agent](https://github.com/interviewstreet/hiring-agent)
- Tags: how-to-guide
- Published: 2026-07-04

---

**The Hiring-Agent project requires Python 3.11 or newer and nine pinned Python packages—including PyMuPDF, Ollama, and Pydantic—defined in [`requirements.txt`](https://github.com/interviewstreet/hiring-agent/blob/main/requirements.txt), plus environment variables configured via `.env.example` to run the resume scoring pipeline.**

The `interviewstreet/hiring-agent` repository is a Python-based resume evaluation pipeline that extracts structured data from PDFs and scores candidates using local or cloud-based LLMs. Understanding the **dependencies for running the hiring-agent project** ensures you can install the correct versions of libraries for PDF parsing, API communication, and model interaction.

## Core Runtime Requirements

The application is built as a pure Python 3.11+ application with strict version pinning to ensure reproducible behavior across environments.

### Python Version

The project requires **Python 3.11 or newer**, as specified in the `.python-version` file at the repository root. This version ensures compatibility with the type hints and async features used throughout the codebase.

### Dependency Management

All production and development dependencies are centralized in [`requirements.txt`](https://github.com/interviewstreet/hiring-agent/blob/main/requirements.txt) at the repository root. You must install these using `pip` before executing any pipeline scripts.

## Production Dependencies Explained

The [`requirements.txt`](https://github.com/interviewstreet/hiring-agent/blob/main/requirements.txt) file pins nine critical packages that handle document processing, LLM communication, and data validation:

- **PyMuPDF 1.26.3** — Parses PDF files and extracts text/structure in [`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py)
- **pymupdf4llm 0.0.27** — Converts PDF content into LLM-compatible prompts and markdown
- **ollama 0.5.1** — Client library for connecting to local Ollama LLM servers
- **google-generativeai 0.4.0** — Official SDK for Google Gemini API integration (optional backend)
- **pydantic 2.11.7** — Defines data schemas and validation for the JSON-Resume model in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)
- **requests 2.32.4** — HTTP client powering GitHub profile fetching in [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) and LLM API wrappers
- **Jinja2 3.1.6** — Renders prompt templates stored in `prompts/templates/`
- **python-dotenv 1.0.1** — Loads runtime configuration from `.env` files

## Development Dependencies

- **black 25.9.0** — Code formatter for maintaining consistent style across the codebase (development convenience only)

## Installation Guide

Follow these steps to install all **dependencies for running the hiring-agent project** locally:

1. Clone the repository and navigate to the project directory:

```bash
git clone https://github.com/interviewstreet/hiring-agent
cd hiring-agent

```

2. Create and activate a Python virtual environment:

```bash
python -m venv .venv
source .venv/bin/activate

```

On Windows systems, use `.venv\Scripts\activate` instead.

3. Install the pinned dependencies:

```bash
pip install -r requirements.txt

```

4. Configure environment variables:

```bash
cp .env.example .env

```

Edit the `.env` file to set `LLM_PROVIDER=ollama` (or `gemini`), `DEFAULT_MODEL=gemma3:4b`, and other required variables.

## Configuration Requirements

Beyond Python packages, the application requires specific environment variables defined in `.env.example`. Critical variables include:

- `LLM_PROVIDER` — Set to `ollama` or `gemini`
- `DEFAULT_MODEL` — Specifies the model name (e.g., `gemma3:4b`)
- `GEMINI_API_KEY` — Required when using Google Gemini backend
- `GITHUB_TOKEN` — Enables GitHub profile enrichment in [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py)

## Integration with Source Files

The dependencies wire directly into specific modules:

- [`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py) imports PyMuPDF and pymupdf4llm to convert resume PDFs to markdown
- [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) uses the `requests` library to fetch candidate repositories
- [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) relies on Pydantic for schema validation of extracted resume data
- [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) orchestrates the pipeline using Jinja2 templates from `prompts/templates/`

## Summary

- **Python 3.11+** is mandatory as specified in `.python-version`
- Install nine pinned packages via [`requirements.txt`](https://github.com/interviewstreet/hiring-agent/blob/main/requirements.txt) including PyMuPDF, Ollama, and Pydantic
- Configure runtime settings by copying `.env.example` to `.env`
- Execute the pipeline with `python score.py /path/to/resume.pdf` after dependencies are installed

## Frequently Asked Questions

### What Python version does hiring-agent require?

The project requires **Python 3.11 or newer**, as defined in the `.python-version` file. This ensures compatibility with modern type hints and library features used in the codebase.

### Is Ollama required or can I use other LLM providers?

Ollama is optional. The `ollama` package (0.5.1) supports local model hosting, but you can alternatively use `google-generativeai` (0.4.0) for Gemini by setting `LLM_PROVIDER=gemini` in your `.env` file.

### Why does the project need both PyMuPDF and pymupdf4llm?

**PyMuPDF** (1.26.3) handles low-level PDF text extraction, while **pymupdf4llm** (0.0.27) provides higher-level utilities specifically for converting PDF content into LLM-ready prompts and structured markdown formats.

### Where are the prompt templates stored and what renders them?

Prompt templates live in `prompts/templates/` and are rendered using **Jinja2** (3.1.6), allowing dynamic injection of candidate data before sending to the LLM backend.