Hiring Agent Resume Scoring Categories: The 4 Components Explained

The Hiring Agent evaluates résumés across four distinct categories—Open Source (35 points), Self-Projects (30 points), Production Experience (25 points), and Technical Skills (10 points)—with each category capped at specific maximums defined in the scoring logic.

The interviewstreet/hiring-agent repository implements a structured evaluation system that breaks down candidate assessments into measurable components. Understanding these resume scoring categories is essential for developers integrating with the API or customizing the evaluation pipeline. Each category tracks specific evidence of technical capability, with weights designed to prioritize demonstrated code quality over self-reported skills.

The Four Resume Scoring Categories

The scoring system divides evaluation into four weighted dimensions, each represented by a CategoryScore object. According to the source code in models.py (lines 225-229), these categories are defined as attributes of the Scores model.

Open Source (35 Points)

The highest-weighted category, Open Source, awards up to 35 points for contributions to public repositories and community projects. This category emphasizes verifiable code contributions and collaborative development experience.

Self-Projects (30 Points)

The Self-Projects category caps at 30 points, recognizing independent development work and personal portfolio pieces. This captures initiative and practical application of technical skills outside professional contexts.

Production Experience (25 Points)

Production Experience carries a 25-point maximum, evaluating professional work history and enterprise software development. This category assesses the scale and impact of code deployed in live environments.

Technical Skills (10 Points)

The Technical Skills category provides up to 10 points for demonstrated proficiency in specific technologies and tools. While the lowest-weighted category, it ensures baseline competency alignment with role requirements.

How Category Maximums Are Enforced

In score.py (lines 81-85), the category_maxes dictionary hard-codes these limits to ensure consistent evaluation across candidates:

category_maxes = {
    "open_source": 35,
    "self_projects": 30,
    "production": 25,
    "technical_skills": 10,
}

During evaluation, the agent calculates raw scores for each category, then applies min(actual_score, category_maxes[category]) to ensure no category exceeds its defined ceiling. The following example demonstrates how the capping logic displays results:


# Inside score.py → print_evaluation_results

os_score = evaluation.scores.open_source
capped_score = min(os_score.score, category_maxes["open_source"])
print(f"🌐 Open Source: {capped_score}/{os_score.max}")

Accessing Category Scores Programmatically

The EvaluationData object exposes category scores through its scores attribute, which contains CategoryScore instances for each dimension.

Retrieving Individual Category Scores

from models import EvaluationData

def print_category_scores(eval_data: EvaluationData):
    scores = eval_data.scores
    print(f"Open Source:      {scores.open_source.score}/{scores.open_source.max}")
    print(f"Self Projects:    {scores.self_projects.score}/{scores.self_projects.max}")
    print(f"Production:       {scores.production.score}/{scores.production.max}")
    print(f"Technical Skills: {scores.technical_skills.score}/{scores.technical_skills.max}")

Creating Evaluation Data with Category Scores

from models import CategoryScore, Scores, BonusPoints, Deductions, EvaluationData

eval_data = EvaluationData(
    scores=Scores(
        open_source=CategoryScore(score=30, max=35, evidence="Contributed to 3 OSS projects"),
        self_projects=CategoryScore(score=25, max=30, evidence="Built a personal web app"),
        production=CategoryScore(score=20, max=25, evidence="2 years at Acme Corp"),
        technical_skills=CategoryScore(score=8, max=10, evidence="Proficient in Python, SQL"),
    ),
    bonus_points=BonusPoints(total=5, breakdown="Extra certifications"),
    deductions=Deductions(total=0, reasons=""),
    key_strengths=["Strong problem-solving", "Effective communication"],
    areas_for_improvement=["Increase cloud experience"]
)

print_category_scores(eval_data)

Summary

  • The Hiring Agent uses four resume scoring categories: Open Source (35 points), Self-Projects (30 points), Production Experience (25 points), and Technical Skills (10 points), totaling 100 possible points.
  • Category maximums are defined in score.py within the category_maxes dictionary at lines 81-85.
  • Each category uses a CategoryScore object storing the achieved score, maximum limit, and supporting evidence.
  • Scores are capped during evaluation to ensure fair comparison across candidates with different experience profiles.

Frequently Asked Questions

What is the highest weighted resume scoring category?

Open Source carries the maximum possible points at 35, making it the most heavily weighted category in the Hiring Agent evaluation system. This reflects the repository's emphasis on verifiable, collaborative code contributions.

How does the Hiring Agent prevent categories from exceeding their maximum points?

The scoring logic in score.py applies a hard cap using min(actual_score, category_maxes[category]), ensuring no category exceeds its defined limit regardless of candidate achievements. This normalization maintains consistent scoring across evaluations.

Where are the resume scoring categories defined in the codebase?

The categories are defined as attributes of the Scores class in models.py (lines 225-229), while their maximum values are stored in the category_maxes dictionary in score.py (lines 81-85). Both files must be referenced to understand the complete scoring schema.

Can I customize the point values for each scoring category?

Yes, by modifying the category_maxes dictionary in score.py and updating the corresponding max values in the CategoryScore objects within models.py. However, this requires synchronizing both files to maintain consistency across the evaluation pipeline.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →