# Hiring Agent Scoring Breakdown: The Four Evaluation Categories Explained

> Understand the Hiring Agent scoring breakdown. Learn how Open Source, Self Projects, Production Experience, and Technical Skills evaluation categories determine candidate assessments.

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

---

**Hiring Agent evaluates résumés across four weighted categories—Open Source (35 points), Self Projects (30 points), Production Experience (25 points), and Technical Skills (10 points)—summing capped scores with optional bonuses and deductions to generate a final assessment.**

The `interviewstreet/hiring-agent` repository implements a structured scoring system that quantifies candidate qualifications through four distinct evaluation dimensions. Understanding this scoring breakdown helps developers interpret their evaluation results and identify specific areas for improvement. The scoring logic resides in the `Scores` model definition and the results formatting utilities within the codebase.

## The Four Evaluation Categories

The evaluation system assigns points across four specific domains, each with a defined maximum point value as specified in the source code.

### Open Source (35 Points)

The **Open Source** category measures contributions to open-source projects, including pull requests, maintained repositories, and community involvement. This category carries the highest weight at **35 points**, reflecting the value placed on demonstrated public collaboration and code quality visible to the engineering community.

### Self Projects (30 Points)

**Self Projects** assesses personal side-projects, hobby work, or independent codebases that showcase initiative and technical curiosity. With a maximum of **30 points**, this category evaluates the breadth and depth of work candidates pursue outside of formal employment contexts.

### Production Experience (25 Points)

The **Production Experience** category evaluates professional, production-grade work experience from employed roles and shipped features. Worth **25 points**, this dimension focuses on the reliability and scale of code written in real-world industry environments.

### Technical Skills (10 Points)

**Technical Skills** examines the breadth and depth of relevant technical abilities, including programming languages, frameworks, and tools. At **10 points**, this category provides a baseline assessment of the candidate's stated competencies.

## How the Scoring Model Works

According to the `interviewstreet/hiring-agent` source code, the scoring architecture centers on the `Scores` model defined in [[`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)](https://github.com/interviewstreet/hiring-agent/blob/main/models.py#L24-L28). This model groups four `CategoryScore` objects, each containing three key fields:

- **`score`**: The points awarded for that category
- **`max`**: The maximum possible points (35, 30, 25, or 10)
- **`evidence`**: A string explaining the rationale for the given score

The final calculation occurs in [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py) within the `print_evaluation_results` function ([[`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py)](https://github.com/interviewstreet/hiring-agent/blob/main/score.py#L81-L85)). The system sums the capped category scores, adds any bonus points, and subtracts deductions to produce the overall evaluation result.

## Accessing Category Scores in Code

Developers can programmatically access individual category scores through the `EvaluationData` object returned by the evaluation pipeline.

```python
from models import EvaluationData

def show_category_scores(evaluation: EvaluationData):
    # Access each category directly

    print("Open Source score:", evaluation.scores.open_source.score)
    print("Self Projects score:", evaluation.scores.self_projects.score)
    print("Production Experience score:", evaluation.scores.production.score)
    print("Technical Skills score:", evaluation.scores.technical_skills.score)

# Example usage after running the evaluator

evaluation = main("example_resume.pdf")  # returns an EvaluationData object

show_category_scores(evaluation)

```

For reporting or API integration, convert the scores to a dictionary format:

```python

# Converting the scores to a dictionary for further reporting

def scores_to_dict(evaluation: EvaluationData) -> dict:
    return {
        "open_source": evaluation.scores.open_source.model_dump(),
        "self_projects": evaluation.scores.self_projects.model_dump(),
        "production": evaluation.scores.production.model_dump(),
        "technical_skills": evaluation.scores.technical_skills.model_dump(),
    }

```

## Summary

- Hiring Agent uses four weighted categories: Open Source (35 points), Self Projects (30 points), Production Experience (25 points), and Technical Skills (10 points).
- The `Scores` model in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) encapsulates these categories as `CategoryScore` objects with `score`, `max`, and `evidence` attributes.
- Final scoring sums capped category values, applies bonuses, and subtracts deductions through the `print_evaluation_results` function.
- Individual scores are accessible via the `EvaluationData` object returned by the evaluation pipeline.

## Frequently Asked Questions

### What are the maximum points for each evaluation category?

The maximum points are **35 points** for Open Source, **30 points** for Self Projects, **25 points** for Production Experience, and **10 points** for Technical Skills. These values are defined in the `Scores` model and referenced when calculating the final evaluation.

### How is the final score calculated in Hiring Agent?

The final score is calculated by summing the capped category scores (ensuring no category exceeds its maximum), then adding any bonus points and subtracting deductions. This logic is implemented in the `print_evaluation_results` function in [`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py).

### Where is the scoring breakdown defined in the source code?

The scoring breakdown is defined in the `Scores` model located in [[`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py)](https://github.com/interviewstreet/hiring-agent/blob/main/models.py#L24-L28). The display and calculation logic appears in [[`score.py`](https://github.com/interviewstreet/hiring-agent/blob/main/score.py)](https://github.com/interviewstreet/hiring-agent/blob/main/score.py#L81-L85), which handles the end-to-end evaluation flow and prints detailed results.

### What data structure stores individual category scores?

Individual category scores are stored as **`CategoryScore`** objects within the `Scores` model. Each `CategoryScore` contains a `score` (integer), `max` (maximum possible value), and `evidence` (explanatory string) that documents why the specific score was assigned.