# What Programming Languages Does the Hiring-Agent Support for Evaluation?

> Discover the programming languages Hiring Agent evaluates. Support for any language on a candidate's resume, no code changes needed. Maximize your hiring efficiency.

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

---

**The Hiring-Agent is completely language-agnostic and supports evaluation of any programming language mentioned in a candidate's resume without requiring code changes or whitelist updates.**

The `interviewstreet/hiring-agent` repository implements a language-agnostic resume evaluation pipeline that processes candidate PDFs to extract technical skills. Unlike traditional hiring platforms that maintain hard-coded lists of supported technologies, this system evaluates **any programming language** that appears in the resume data, making it infinitely extensible without modifying the codebase.

## How Programming Language Evaluation Works

The system treats programming languages as free-form text data rather than validated enum values. According to the source code, the architecture relies on three key components that handle language data dynamically without restricting specific technology names.

### The Language Data Model

The schema foundation resides in **[`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)** where the **Language** Pydantic model defines two optional string fields—`language` and `fluency`. This model imposes no validation constraints on the language name, allowing it to store any programming language string from "Python" to niche or emerging technologies.

### Resume Processing Pipeline

When processing resumes, the **[`transform.py`](https://github.com/interviewstreet/hiring-agent/blob/main/transform.py)** module constructs a `JSONResume` object that includes a `languages` attribute containing a list of `Language` objects. The pipeline extracts these entries directly from the LLM-generated JSON output without filtering or normalizing the language names against a predefined catalog. The **[`README.md`](https://github.com/interviewstreet/hiring-agent/blob/main/README.md)** documents this `languages` section of the JSON Resume format, confirming the schema accepts arbitrary strings.

### Evaluation Logic

In **[`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)**, the scoring component consumes the `languages` list and processes the strings as-is. Because there is no hard-coded whitelist or validation step, the evaluator can assess expertise in Python, JavaScript, Go, Rust, or any technology that candidates include in their resumes.

## Adding Support for New Programming Languages

Since the Hiring-Agent is purely data-driven, **adding support for new programming languages requires zero code changes**. When a candidate mentions a new language like Zig or Carbon in their resume, the parser captures it automatically, stores it in the `JSONResume.languages` list, and passes it to the evaluator. The LLM simply sees the string and can generate relevant commentary in the final scoring report.

## Practical Implementation Example

The following code demonstrates how the system handles multiple programming languages using the dynamic `Language` model:

```python

# Example: building a JSONResume with a list of programming languages

from models import Language, JSONResume

resume = JSONResume(
    basics=...,               # other sections omitted for brevity

    languages=[
        Language(language="Python", fluency="Expert"),
        Language(language="JavaScript", fluency="Intermediate"),
        Language(language="Rust", fluency="Beginner"),
    ],
)

# The evaluator receives `resume.languages` and uses the strings as‑is.

```

This architecture ensures that niche or newly created programming languages receive the same evaluation treatment as mainstream technologies.

## Summary

- The Hiring-Agent stores programming languages as free-form strings in the **`Language`** model defined in **[`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)**.
- The **[`transform.py`](https://github.com/interviewstreet/hiring-agent/blob/main/transform.py)** module populates the `JSONResume.languages` field without validating against a whitelist.
- **[`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)** processes any language string present in the resume data, enabling evaluation of arbitrary technologies.
- No codebase modifications are required to support new programming languages—candidates simply mention them in their resumes.

## Frequently Asked Questions

### Does the Hiring-Agent validate programming language names against a fixed list?

No. The system does not validate or restrict programming language names. The `Language` model in **[`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)** accepts any string value for the `language` field, allowing candidates to list proprietary, domain-specific, or newly created languages without system updates.

### How do I add support for a new programming language like Zig or Carbon?

You do not need to modify the codebase. Simply ensure candidates mention the new language in their resume PDFs. The **[`transform.py`](https://github.com/interviewstreet/hiring-agent/blob/main/transform.py)** pipeline will extract the entry and store it in the `languages` list, and **[`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)** will process it automatically during scoring.

### Where is the list of supported programming languages defined?

There is no supported languages list. Unlike platforms that maintain hard-coded enums or configuration files, the Hiring-Agent uses a dynamic schema where **[`evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/evaluator.py)** works with whatever strings appear in the `JSONResume.languages` attribute populated by **[`transform.py`](https://github.com/interviewstreet/hiring-agent/blob/main/transform.py)**.

### Can the system evaluate fluency levels for any programming language?

Yes. The `Language` model includes an optional `fluency` field that accepts any string value (e.g., "Expert", "Intermediate", "Beginner"). The evaluator processes these fluency ratings alongside the language names regardless of the specific technology mentioned.