How to Install and Run Interviewstreet Hiring Agent Locally
Clone the repository, install Python 3.11+ dependencies from requirements.txt, configure your .env file for Ollama or Gemini, and execute python score.py /path/to/resume.pdf to process résumés.
The Interviewstreet Hiring Agent is an open-source Python pipeline that automates résumé evaluation using LLMs and fairness-aware scoring rules. This guide explains the complete local installation and execution workflow based on the interviewstreet/hiring-agent source code, covering both local Ollama inference and Google Gemini cloud setups.
Prerequisites
Python Environment
You need Python 3.11 or higher to run the Hiring Agent. The repository pins the version to 3.11.13 in the .python-version file, ensuring compatibility with the Pydantic schemas and async features used throughout the codebase.
LLM Backend
Choose one of two inference options:
- Ollama – Run models locally (recommended for privacy).
- Google Gemini – Use the cloud API (requires an API key).
Installation and Setup
Clone and Install Dependencies
Run the following commands to set up the project environment:
git clone https://github.com/interviewstreet/hiring-agent
cd hiring-agent
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
Configure Ollama for Local Inference
If you selected Ollama, pull a compatible model before running evaluations:
ollama pull gemma3:4b
Alternative models include gemma3:12b and gemma3:1b, depending on your hardware constraints.
Environment Variables
Copy the example configuration and edit the required variables:
cp .env.example .env
Edit .env to set:
LLM_PROVIDER–ollama(default) orgeminiDEFAULT_MODEL– e.g.,gemma3:4borgemini-2.5-proGEMINI_API_KEY– Required only whenLLM_PROVIDER=geminiGITHUB_TOKEN– Optional, but increases GitHub API rate limits for profile enrichment
Running the Hiring Agent
Execute the CLI
The entry point is score.py. Pass a path to a résumé PDF to start the evaluation:
python score.py /path/to/resume.pdf
Pipeline Execution Flow
When you run the command, score.py orchestrates the following sequence:
- Extraction –
pymupdf_rag.pyconverts PDF pages to Markdown-like text using PyMuPDF. - Parsing –
pdf.pyinvokes LLM calls with strict Jinja templates fromprompts/templates/to populate the JSON-Resume model defined inmodels.py. - Enrichment –
github.pyfetches candidate repositories and selects top projects. - Evaluation –
evaluator.pyapplies fairness-aware scoring rules to generate the final assessment. - Output – Results print to stdout. When
DEVELOPMENT_MODE=Trueinconfig.py, the system appends a CSV row toresume_evaluations.csvand caches intermediate JSON incache/.
Programmatic Example
Automate the setup and execution in Python:
import subprocess
import os
# Clone and install
subprocess.run(["git", "clone", "https://github.com/interviewstreet/hiring-agent"])
os.chdir("hiring-agent")
subprocess.run(["python", "-m", "venv", ".venv"])
# Activate and install dependencies (Linux/Mac example)
subprocess.run(["bash", "-c", "source .venv/bin/activate && pip install -r requirements.txt"])
# Configure environment
os.environ["LLM_PROVIDER"] = "ollama"
os.environ["DEFAULT_MODEL"] = "gemma3:4b"
# Run evaluation
result = subprocess.run(
["python", "score.py", "sample_resume.pdf"],
capture_output=True,
text=True
)
print(result.stdout)
Replace sample_resume.pdf with your actual file path.
Summary
- Python 3.11+ is required to run the Hiring Agent locally.
- Install dependencies via
pip install -r requirements.txtafter cloning the repository. - Configure
.envto choose between Ollama (local) or Gemini (cloud) inference providers. - Execute
python score.py <pdf_path>to trigger the full pipeline from extraction to fairness-aware scoring. - Enable
DEVELOPMENT_MODEinconfig.pyto persist results to CSV and cache intermediate JSON files.
Frequently Asked Questions
What Python version is required for Interviewstreet Hiring Agent?
The codebase requires Python 3.11 or higher, with the repository specifically pinning version 3.11.13 in the .python-version file to ensure compatibility with the Pydantic models and async patterns used in modules like models.py and llm_utils.py.
Can I run the Hiring Agent without an internet connection?
Yes, if you use Ollama as your LLM_PROVIDER with a locally cached model such as gemma3:4b. However, the github.py enrichment step requires internet access to fetch candidate repositories, and Gemini mode obviously requires an API connection.
Where are the evaluation results saved?
By default, results print to stdout only. When DEVELOPMENT_MODE is set to True in config.py, the pipeline additionally appends a CSV row to resume_evaluations.csv and stores intermediate JSON artifacts in the cache/ directory for debugging.
Which source file orchestrates the entire pipeline?
The score.py file serves as the CLI driver and orchestrator. It coordinates pymupdf_rag.py for text extraction, pdf.py for section parsing, github.py for profile enrichment, and evaluator.py for final scoring.
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 →