# Fit Evaluation Framework: Understanding the 5 Scoring Dimensions in AI Job Search

> Discover the 5 scoring dimensions of the AI Job Search Fit Evaluation Framework. Understand Technical Skills Match, Experience Match, Culture Fit, Location, and Career Alignment for smarter job rankings.

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: deep-dive
- Published: 2026-08-31

---

**The Fit Evaluation Framework evaluates job opportunities using five distinct dimensions—Technical Skills Match, Experience Match, Behavioral/Culture Fit, Location & Logistics, and Career Alignment & Motivation—to generate weighted fit scores that power automated job ranking.**

The **MadsLorentzen/ai-job-search** repository implements this framework to automate candidate-job matching through AI-assisted analysis. Defined in the Job Evaluation Framework document ([`.claude/skills/job-application-assistant/04-job-evaluation.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/04-job-evaluation.md)), the system scores postings after preliminary eligibility and language gates, feeding results to the `/rank` and `/apply` CLI commands.

## The Five Scoring Dimensions

After passing the initial Eligibility and Language gates, every job posting undergoes evaluation across five specific dimensions. Four dimensions use a **0-100 scoring scale**, while Location operates as a binary veto gate.

### 1. Technical Skills Match

This dimension measures alignment between required technical competencies and the candidate’s capabilities. According to the source code in [`04-job-evaluation.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/04-job-evaluation.md) (lines 53-62), scores range from **80-100** when "Core requirements are primary skills" down to **0-39** for "Fundamental mismatch." The evaluation considers both required and preferred technical skills listed in the job description.

### 2. Experience Match

The framework evaluates whether the candidate’s work history—including functions, domains, and depth—matches role expectations. As implemented in lines 67-76 of the evaluation document, **"Direct experience"** yields 80-100 points, while **"Unrelated experience"** results in 0-39 points. This assessment analyzes previous roles, industry relevance, and seniority alignment.

### 3. Behavioral / Culture Fit

Cultural and behavioral compatibility scores from **80-100** for **"Strong cultural match"** to **0-39** for **"Significant mismatch"** (lines 81-90). This dimension assesses company values, working style preferences, and organizational culture against the candidate’s profile and stated preferences.

### 4. Location & Logistics

Unlike other dimensions, Location uses a **binary Pass/Fail verdict** with optional FLAG notes rather than a numeric score. Positioned at lines 93-98 in the framework definition, this gate checks commute range feasibility, remote-work compatibility, relocation requirements, and travel intensity expectations. A **FAIL** result immediately vetoes the job from consideration regardless of other scores.

### 5. Career Alignment & Motivation

This dimension determines whether the role advances long-term career objectives. Scoring **80-100** for **"Strong alignment & growth path"** versus **0-39** for **"Dead-end or backward step"** (lines 99-107), it evaluates trajectory fit, skill development opportunities, and whether the position energizes the candidate.

## Weighted Score Calculation

The four numeric dimensions contribute to a composite fit score using specific weights defined in the framework:

- **Technical Skills Match**: 30%
- **Experience Match**: 25%
- **Behavioral / Culture Fit**: 15%
- **Career Alignment & Motivation**: 30%

The Location & Logistics dimension does not contribute to the weighted average but functions as a veto mechanism. A **FAIL** verdict excludes the job from rankings entirely, while a **PASS** with **FLAG** notes triggers warnings during the `/apply` command execution.

## Implementation in Source Code

The Fit Evaluation Framework resides in [`.claude/skills/job-application-assistant/04-job-evaluation.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/04-job-evaluation.md), which serves as the system prompt for scoring agents. The `/rank` command (defined in [`.claude/commands/rank.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/rank.md)) orchestrates batch evaluation by reading this framework and invoking scoring agents against the job database.

Results persist to [`seen_jobs.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/seen_jobs.json) with the following structure:

```python
{
  "technical_score": 85,
  "experience_score": 70,
  "behavior_score": 60,
  "location_verdict": "PASS",
  "career_score": 78,
  "strengths": ["Strong Python match", "FastAPI experience"],
  "gaps": ["Limited cloud experience"]
}

```

The `/apply` command consumes these scores to generate evaluation summaries:

```python
def format_evaluation(job, scores):
    return f"""
| Dimension          | Score | Verdict |
|--------------------|-------|---------|
| Technical Skills   | {scores['technical_score']}/100 | {'Strong match' if scores['technical_score'] > 79 else 'Review needed'} |
| Experience Match   | {scores['experience_score']}/100 | {'Direct relevance' if scores['experience_score'] > 79 else 'Transferable only'} |
| Career Alignment   | {scores['career_score']}/100 | {'Growth path' if scores['career_score'] > 79 else 'Lateral move'} |
| Location           | {scores['location_verdict']} | {' proceed' if scores['location_verdict'] == 'PASS' else 'STOP'} |
"""

```

## Summary

- The **Fit Evaluation Framework** systematically scores job opportunities across five distinct dimensions after preliminary eligibility screening.
- **Four dimensions** (Technical, Experience, Behavioral, Career) use 0-100 scales with weighted contributions (30%, 25%, 15%, 30%) to the final score.
- **Location & Logistics** operates as a binary Pass/Fail gate that can veto opportunities regardless of other scores.
- Framework definitions live in [`.claude/skills/job-application-assistant/04-job-evaluation.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/04-job-evaluation.md), while scoring execution occurs through the `/rank` command.
- Results persist to [`seen_jobs.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/seen_jobs.json) for consumption by downstream commands like `/apply` and `/interview`.

## Frequently Asked Questions

### What is the Fit Evaluation Framework?

The Fit Evaluation Framework is the scoring methodology defined in the MadsLorentzen/ai-job-search repository that objectively evaluates job postings against candidate profiles. It replaces subjective gut-feeling assessments with structured dimensional analysis across technical skills, experience, culture fit, logistics, and career trajectory.

### How is the overall fit score calculated?

The framework calculates a weighted composite from four numeric dimensions: Technical Skills Match contributes 30%, Experience Match adds 25%, Behavioral/Culture Fit contributes 15%, and Career Alignment & Motivation provides 30%. Each dimension scores 80-100 for strong matches, 40-79 for partial fits, and 0-39 for poor alignment.

### Why is Location & Logistics scored differently from other dimensions?

Location & Logistics uses a binary Pass/Fail system rather than a 0-100 scale because logistics constraints are absolute deal-breakers in job searches. A candidate cannot accept a role requiring daily office presence 100 miles away regardless of perfect technical and cultural fit, making this dimension functionally equivalent to a veto gate rather than a weighted variable.

### Which source files implement the Fit Evaluation Framework?

The framework logic resides in [`.claude/skills/job-application-assistant/04-job-evaluation.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/04-job-evaluation.md), which defines the scoring rubrics and weights. The `/rank` command ([`.claude/commands/rank.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/rank.md)) executes the scoring process, while [`seen_jobs.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/seen_jobs.json) stores persistent results. The [`README.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/README.md) provides workflow context, and [`CHANGELOG.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CHANGELOG.md) tracks framework updates.