How the Five Dimensions of Job Fit Are Scored: A Complete Technical Guide
The AI job search assistant scores job postings across five dimensions—Technical Skills, Experience, Behavioral Fit, Career Alignment, and Location & Logistics—to generate a weighted overall score from 0-100 that maps to fit bands like "Strong Fit" or "Good Fit."
The job-fit evaluation system resides in the MadsLorentzen/ai-job-search repository, specifically defined in .claude/skills/job-application-assistant/04-job-evaluation.md. After a posting passes the initial Eligibility and Language gates, the scoring agent applies a structured rubric to assess compatibility across five distinct dimensions, translating qualitative job requirements into quantitative metrics that drive the /rank and /apply command recommendations.
The Five Dimensions Defined in 04-job-evaluation.md
The scoring rubric defines five evaluation dimensions. Four return numeric scores (0-100) while one acts as a binary gate.
Technical Skills Match (30% Weight)
This dimension assesses alignment between required technical competencies and the candidate's capabilities. The scoring bands are:
- 80-100: Core requirements are primary skills
- 60-79: Most requirements match, with 1-2 learnable gaps
- 40-59: Partial match, significant up-skilling needed
- 0-39: Fundamental mismatch
Experience Match (25% Weight)
Rather than comparing exact job titles, this evaluates work history depth, scope, and functional relevance:
- 80-100: Direct experience in the same domain and role type
- 60-79: Related experience with clear transferable skills
- 40-59: Adjacent experience requiring case-making
- 0-39: Unrelated experience
Behavioral and Culture Fit (15% Weight)
This measures alignment between the candidate's behavioral profile and company culture:
- 80-100: Culture strongly matches behavioral preferences
- 60-79: Mixed signals but mostly compatible
- 40-59: Some friction areas exist
- 0-39: Significant culture mismatch
Career Alignment & Motivation (30% Weight)
This evaluates whether the role advances long-term career goals:
- 80-100: Strongly aligned with career direction, clear growth path
- 60-79: Good role but only partially aligned
- 40-59: Decent job but doesn't build toward goals
- 0-39: Dead-end or backwards step
Location & Logistics: The Binary Gate
Unlike other dimensions, Location & Logistics operates as a Pass/Fail check that is not weighted in the final average. It can, however, veto a job posting entirely:
- PASS: Within commute range, remote-friendly, or sponsor-available
- FAIL: Requires relocation (deal-breaker)
- FLAG: Frequent travel requiring discussion
Calculating the Weighted Overall Score
The final score is a weighted average of the four numeric dimensions. According to the source code in 04-job-evaluation.md, the formula is:
overall = round(0.30 * technical + 0.25 * experience + 0.15 * behavior + 0.30 * career)
The Location gate is excluded from this calculation. If Location returns FAIL, the job is disqualified regardless of other scores.
Mapping Scores to Fit Bands
The overall score determines the recommendation band used by the /rank and /apply commands:
- Strong Fit: ≥ 75 (Recommended for immediate application)
- Good Fit: 60-74 (Apply with minor caveats)
- Moderate Fit: 45-59 (Consider with significant reservations)
- Weak Fit: 30-44 (Generally skip unless strategic)
- Poor Fit: < 30 (Avoid)
These thresholds guide the assistant's recommendation to apply, apply with caveats, or skip the posting.
Implementing the Scoring Logic
The repository includes Python-style logic that mirrors the agent's evaluation process. Here is the implementation referencing the scoring weights defined in the markdown rubric:
def weighted_score(scores):
"""Calculate the weighted overall fit score."""
tech = scores["technical"]
exp = scores["experience"]
beh = scores["behavior"]
career = scores["career"]
return round(0.30 * tech + 0.25 * exp + 0.15 * beh + 0.30 * career)
def classify_fit(overall):
"""Map overall score to a fit band."""
if overall >= 75:
return "Strong Fit"
if overall >= 60:
return "Good Fit"
if overall >= 45:
return "Moderate Fit"
if overall >= 30:
return "Weak Fit"
return "Poor Fit"
# Example evaluation
posting = {
"technical": 78, # falls in 60-79 band
"experience": 85, # falls in 80-100 band
"behavior": 62, # falls in 60-79 band
"career": 55, # falls in 40-59 band
"location": "PASS"
}
overall = weighted_score(posting)
fit_band = classify_fit(overall)
print(f"Overall: {overall}/100 → {fit_band}")
# Output: Overall: 71/100 → Good Fit
Key Files in the Repository
Several files orchestrate this scoring system:
.claude/skills/job-application-assistant/04-job-evaluation.md: Defines the five dimensions, score bands, weightings, and fit thresholds..claude/commands/rank.md: Implements the/rankcommand to evaluate and sort job postings using these dimensions..claude/commands/apply.md: Uses scoring results to determine whether to draft application materials and what recommendations to provide..claude/commands/setup.md: Guides users through personalizing the rubric, such as definingYOUR_PRIMARY_SKILLS.tests/test_rank_command.py: Validates that the framework reads the evaluation tables correctly and confirms the language gate functionality.
Summary
- The five dimensions of job fit are Technical Skills (30%), Experience (25%), Behavioral Fit (15%), Career Alignment (30%), and Location/Logistics (binary gate).
- Each numeric dimension scores 0-100 against specific rubric bands defined in
04-job-evaluation.md. - The Location & Logistics dimension acts as a veto gate; a FAIL result disqualifies the job regardless of other scores.
- The weighted overall score rounds to the nearest integer and maps to fit bands: Strong (≥75), Good (60-74), Moderate (45-59), Weak (30-44), and Poor (<30).
- The
/rankand/applycommands consume these scores to generate actionable job search recommendations.
Frequently Asked Questions
What are the five dimensions of job fit scored by the AI job search assistant?
The five dimensions are Technical Skills Match, Experience Match, Behavioral/Culture Fit, Career Alignment & Motivation, and Location & Logistics. The first four return numeric scores from 0-100, while Location operates as a Pass/Fail gate that can block applications requiring relocation.
How is the final job fit score calculated from the five dimensions?
The final score is a weighted average of four numeric dimensions: 30% Technical Skills, 25% Experience, 15% Behavioral Fit, and 30% Career Alignment. The Location dimension is excluded from the mathematical average but can veto the entire evaluation if marked FAIL. The result is rounded to the nearest integer and classified into bands like "Strong Fit" (≥75) or "Good Fit" (60-74).
Can the scoring weights be customized in the ai-job-search repository?
Yes. While the default weights are defined in .claude/skills/job-application-assistant/04-job-evaluation.md, the .claude/commands/setup.md file guides users through personalizing the rubric. You can adjust dimension definitions, score bands, and primary skill mappings to match your specific career profile and preferences.
Why is Location & Logistics treated differently from other job fit dimensions?
Location & Logistics serves as a binary eligibility gate rather than a weighted score because geographic constraints are typically deal-breakers rather than gradable preferences. A FAIL result (requiring unwanted relocation) immediately disqualifies the posting, while a PASS allows the other four dimensions to determine the final fit score. This prevents high-scoring technical matches from overriding fundamental logistical constraints.
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →