# How to Process a Resume with Hiring Agent: CLI Command Guide

> Learn the basic CLI command to process a resume with Hiring Agent. Use python score.py /path/to/resume.pdf to trigger a full evaluation. Get started now!

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

---

**Run `python score.py /path/to/resume.pdf` to process a resume with Hiring Agent and trigger the complete evaluation pipeline.**

Hiring Agent is an open-source Python pipeline that transforms PDF resumes into structured, fairness-aware evaluations. The tool orchestrates extraction, LLM parsing, GitHub enrichment, and scoring through a single command-line entry point. Understanding the basic CLI command to process a resume with Hiring Agent enables local candidate evaluation using either Ollama or Gemini backends.

## The Basic CLI Command to Process a Resume

The entry point for the end-to-end workflow is [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py). Invoke the script with a single argument pointing to your PDF file:

```bash
python score.py /path/to/resume.pdf

```

Replace `/path/to/resume.pdf` with the actual file location on your system. This command initiates the full pipeline regardless of whether you configured the backend to use local Ollama models or cloud-based Gemini APIs.

The script requires environment variables defined in a `.env` file, including `LLM_PROVIDER` and `DEFAULT_MODEL`. Ensure these are configured before execution.

## What Happens When You Run the Command

Executing the CLI command triggers a five-stage pipeline defined across the repository's core modules.

### PDF Extraction and Text Conversion

First, [`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py) converts the PDF pages into Markdown-like text. This extraction phase handles the initial document parsing, preparing the raw content for structured analysis.

### LLM-Powered Resume Parsing

Next, [`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py) processes the extracted text by calling a local or remote LLM using Jinja templates stored in `prompts/`. The output is normalized by [`transform.py`](https://github.com/interviewstreet/hiring-agent/blob/main/transform.py) into a standardized `JSONResume` object that conforms to the project's schema requirements.

### GitHub Profile Enrichment

Then, [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) scans the parsed resume for GitHub profile URLs. When found, the module fetches the user’s public repositories and selects the most relevant projects to enrich the candidate profile with verifiable open-source contributions.

### Fairness-Aware Evaluation

The [`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py) module applies scoring rules across fairness-aware categories including open-source contributions, production experience, and technical skills. This step produces objective metrics designed to reduce bias in the assessment process.

### Output Generation and CSV Logging

Finally, [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) prints a human-readable summary to the console. When `DEVELOPMENT_MODE=True` is set in the environment, the script also appends a CSV row to `resume_evaluations.csv` and caches intermediate JSON files to the `cache/` directory.

## Complete Workflow Example

Activate your virtual environment and invoke the pipeline:

```bash

# Activate the virtual environment

source .venv/bin/activate

# Process a resume with Hiring Agent

python score.py examples/resume.pdf

```

Typical console output includes:

```

✅ PDF extracted → cache/resumecache_resume.json
🔎 GitHub profile found: johndoe
📊 Evaluation:
  open_source: 8.5   (strong contributions)
  production: 7.0   (several shipped features)
  technical_skills: 9.0
...
CSV row appended to resume_evaluations.csv

```

The output confirms successful extraction, enrichment, and scoring while logging structured data for further analysis.

## Environment Configuration Prerequisites

Before running the CLI command, create a `.env` file in the project root with the following variables:

```bash
LLM_PROVIDER=ollama  # or 'gemini'

DEFAULT_MODEL=llama3.1:latest
DEVELOPMENT_MODE=True

```

These settings determine which backend powers the LLM calls in [`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py) and whether the system persists results to CSV.

## Summary

- **Run `python score.py <pdf_path>`** to execute the complete Hiring Agent pipeline from the command line.
- **Pipeline stages**: PDF extraction ([`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py)), LLM parsing ([`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py)), GitHub enrichment ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py)), and fairness-aware scoring ([`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)).
- **Output**: Console summary plus CSV logging when `DEVELOPMENT_MODE=True`.
- **Configuration**: Requires `.env` variables including `LLM_PROVIDER` and `DEFAULT_MODEL`.

## Frequently Asked Questions

### What is the exact command to process a resume with Hiring Agent?

The exact command is `python score.py /path/to/resume.pdf`. This invokes the orchestration script located in the repository root, which automatically triggers extraction, parsing, enrichment, and evaluation stages without requiring additional flags.

### Which file handles the CLI argument parsing in Hiring Agent?

The [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) file handles CLI argument parsing and orchestrates the entire workflow. It accepts the PDF path as a positional argument and coordinates calls to [`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py), [`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py), [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py), and [`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py) in sequence.

### Can I use Hiring Agent with local LLMs instead of cloud APIs?

Yes. Set `LLM_PROVIDER=ollama` in your `.env` file to route LLM calls to a local Ollama instance. The [`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py) module and [`prompts/template_manager.py`](https://github.com/interviewstreet/hiring-agent/blob/main/prompts/template_manager.py) support both local and remote backends, allowing offline processing when using local models.

### Where does Hiring Agent store the evaluation results?

When `DEVELOPMENT_MODE=True`, Hiring Agent appends evaluation results to `resume_evaluations.csv` in the project root. Intermediate JSON cache files are written to the `cache/` directory, while final console output displays the structured scores immediately after processing.