# Which Programming Languages Are Used in the Hiring-Agent Project: Complete Breakdown

> Discover which programming languages power the Hiring Agent project. Explore the interviewstreet/hiring-agent repository's Python 3.11+ codebase and Jinja2 templates for prompt generation.

- Repository: [HackerRank/hiring-agent](https://github.com/interviewstreet/hiring-agent)
- Tags: deep-dive
- Published: 2026-07-12

---

**The Hiring Agent repository by InterviewStreet is implemented exclusively in Python 3.11+, with the entire codebase consisting of `.py` modules and Jinja2 template files for prompt generation.**

Understanding the technology stack behind open-source hiring tools helps developers contribute effectively and integrate them into existing workflows. The **interviewstreet/hiring-agent** project relies entirely on Python for its core logic, PDF processing, LLM integrations, and GitHub data enrichment. This analysis examines the specific language implementation, key source files, and practical usage patterns found in the repository.

## Primary Programming Language: Python 3.11+

The repository advertises **Python 3.11+** support explicitly through its README badge, and every executable module uses Python syntax. According to the interviewstreet/hiring-agent source code, no other programming languages such as JavaScript, Go, Rust, or Java appear in the project structure.

The Python codebase handles diverse responsibilities:

- **Resume parsing and scoring** via [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) and [`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py)
- **LLM provider abstractions** through [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) and [`llm_utils.py`](https://github.com/interviewstreet/hiring-agent/blob/main/llm_utils.py)
- **GitHub profile enrichment** using [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py)
- **Fairness-constrained evaluation** in [`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)

All source files utilize standard Python 3.11+ features and type hints, ensuring modern language compatibility.

## Repository Structure and Key Python Modules

The project organizes functionality into distinct Python modules, each serving a specific purpose in the hiring pipeline.

### Core Pipeline Orchestration

**[`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py)** serves as the CLI entry point that orchestrates the end-to-end scoring pipeline. This module coordinates PDF extraction, LLM inference, and final evaluation scoring.

**[`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)** implements the fairness-constrained scoring logic, ensuring that candidate assessments meet specific bias-mitigation criteria.

### Document Processing

**[`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py)** manages PDF-to-Markdown conversion and section parsing, preparing resume content for LLM consumption.

**[`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py)** provides low-level PDF extraction capabilities using PyMuPDF, handling the initial document ingestion from binary PDF files.

### Data Integration

**[`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py)** retrieves GitHub profile and repository data, then classifies projects to enrich candidate profiles with public coding history.

**[`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)** defines Pydantic schemas and LLM provider abstractions, creating a factory pattern for switching between different AI providers like Ollama.

### Utility Components

**[`llm_utils.py`](https://github.com/interviewstreet/hiring-agent/blob/main/llm_utils.py)** contains helper utilities for LLM interaction, including prompt formatting and response parsing logic.

**`prompts/templates/*.jinja`** files store Jinja2 templates used for dynamic prompt generation. These are data files interpreted by the Python code rather than separate programming languages.

## Code Examples

Below are practical implementations demonstrating how these Python components interact within the hiring pipeline.

### Running the End-to-End Scoring Pipeline

Use the [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) module as the primary entry point for processing candidate resumes:

```python

# score.py – entry point

from score import main

if __name__ == "__main__":
    # Provide a path to a resume PDF

    main("/path/to/resume.pdf")

```

### Extracting PDF Content

The [`pymupdf_rag.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pymupdf_rag.py) module provides direct PDF extraction capabilities:

```python
from pymupdf_rag import PDFExtractor

extractor = PDFExtractor()
markdown = extractor.to_markdown("/path/to/resume.pdf")
print(markdown)

```

### Interacting with LLM Providers

Configure AI providers through the factory pattern in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py):

```python
from models import LLMProviderFactory

provider = LLMFactory.create(provider_name="ollama", model="gemma3:4b")
response = provider.chat(messages=[{"role": "user", "content": "Summarize this resume"}])
print(response)

```

### Fetching GitHub Data

Enrich candidate profiles using the GitHub integration module:

```python
from github import GitHubEnricher

enricher = GitHubEnricher(token="YOUR_TOKEN")
profile = enricher.fetch_user_profile("octocat")
repos   = enricher.fetch_user_repos("octocat")
print(profile, repos)

```

## Summary

- **Python 3.11+** is the sole programming language used in the interviewstreet/hiring-agent project
- The repository contains **no JavaScript, TypeScript, Go, Rust, or Java** code
- **Jinja2 templates** in `prompts/templates/*.jinja` serve as data files for prompt generation, not as executable code
- Key modules include [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) (orchestration), [`pdf.py`](https://github.com/interviewstreet/hiring-agent/blob/main/pdf.py) (document processing), [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) (LLM abstractions), and [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) (data enrichment)
- All functionality—from PDF parsing to fairness evaluation—runs within the Python ecosystem

## Frequently Asked Questions

### Is Hiring-Agent built with multiple programming languages?

No. According to the interviewstreet/hiring-agent source code, the project uses **Python exclusively**. While Jinja2 template files exist for prompt generation, they are data files interpreted by Python rather than separate programming languages.

### What Python version does Hiring-Agent require?

The repository requires **Python 3.11 or higher**, as explicitly indicated by the README badge and modern type hint syntax used throughout the codebase in files like [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) and [`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py).

### Are the Jinja template files considered a programming language?

No. The `*.jinja` files in `prompts/templates/` are **templating data files** used by the Python Jinja2 library for dynamic prompt generation. They contain markup syntax for variable substitution but do not execute as standalone code.

### Does Hiring-Agent include a JavaScript frontend?

No. The project contains **no JavaScript or TypeScript** files. It operates as a Python-based backend service and command-line tool, with no browser-based frontend components in the repository.