How the A-F Evaluation System Uses Weighted Dimensions to Score Job Offers in Career-Ops
Career-Ops evaluates every job posting by generating a six-block A-F report that feeds five weighted input-output dimensions, calculating a final 1-5 global score where each dimension contributes exactly 20%.
The open-source Career-Ops framework transforms unstructured job descriptions into actionable ratings through its A-F evaluation system. Defined in modes/ua/oferta.md and modes/_shared.md, this pipeline orchestrates LLM workflows to analyze postings against your profile data and compute a comparable score that drives recruitment decisions.
The Six-Block A-F Report Structure
The evaluation begins with a structured report containing six evidence blocks that capture distinct aspects of a job opportunity:
Block A – Role summary extracts the domain, function, seniority level, and reporting structure. This metadata identifies which archetype from your modes/_profile.md applies, feeding the North Star alignment dimension.
Block B – CV match generates a line-by-line mapping between the job description requirements and statements in your cv.md. This evidence directly populates the Match con CV dimension by quantifying skill and experience alignment.
Block C – Level & strategy contains your self-assessment of seniority versus the role requirements. This block influences both the North Star dimension (archetype fit) and the Red flags dimension (level mismatches).
Block D – Compensation & demand pulls market salary data via web search and compares it against benchmarks from Glassdoor or Levels.fyi, generating a normalized score for the Comp dimension.
Block E – Personalisation plan suggests specific CV and LinkedIn edits. Once applied, these modifications improve your evidence base for the Match con CV dimension in subsequent evaluations.
Block F – Interview plan builds STAR-plus-R stories that confirm your ability to address the job requirements. Completing these stories mitigates risks flagged in the Red flags dimension.
The Five Input-Output Weighted Dimensions
After generating the six blocks, the system computes five input-output (IO) dimensions that consume the block evidence. Each dimension outputs a normalized score that feeds into the final aggregation.
Match con CV
This dimension measures alignment between the job description's required skills, experience, and proof-points with the candidate's cv.md and optional article-digest.md. Block B provides the primary evidence, while Block E supplies post-optimization improvements.
North Star Alignment
Defined by your target archetypes in modes/_profile.md, this dimension scores how closely the role matches your career trajectory. Block A (role metadata) and Block C (level assessment) provide the input data for this calculation.
Comp
The compensation dimension compares the role's salary or total compensation against market benchmarks. Block D supplies the raw market data and normalization logic defined in the "Scoring System" section of _shared.md.
Cultural Signals
This dimension captures qualitative factors including company culture, growth trajectory, stability, and remote work policies. Evidence for this dimension is extracted across multiple blocks, particularly from Block A (company context) and Block D (demand signals).
Red Flags
Explicit blockers or warning signs—such as unrealistic requirements, ghost posting indicators, or level mismatches—are captured here. Block C identifies potential mismatches, while Block F (interview plan completion) can mitigate these flags by confirming capability.
How the Global Score Is Calculated
The system computes the Global score as a weighted average of the five IO dimensions. According to the canonical rules in modes/_shared.md, the weights are hard-coded to be equal, with each dimension contributing 20% to the final figure.
The calculation follows this aggregation logic:
// Pseudocode excerpt showing the weighted aggregation
const dimensions = {
matchCV: computeMatchCV(),
northStar: computeNorthStar(),
comp: computeCompensation(),
culture: computeCultureSignals(),
redFlags: computeRedFlags(),
};
const globalScore = Object.values(dimensions).reduce((sum, v) => sum + v, 0) / 5;
// Result: decimal between 1.0 and 5.0 (e.g., 4.2/5)
The resulting decimal (e.g., 4.2/5) maps to recommendation tiers defined in the "Score interpretation" section of _shared.md, guiding whether to pursue, research further, or decline the opportunity.
Running the Evaluation Pipeline
The A-F workflow is orchestrated through the ua/oferta.md mode, which can be invoked via CLI:
# Run full evaluation using Gemini backend
node gemini-eval.mjs --mode oferta path/to/job-description.txt
# Alternative: Generic CLI entry point (works with any LLM backend)
career-ops evaluate --file path/to/job-description.txt
Both commands execute the six-block generation sequence and then trigger the scoring routine. The workflow mandates saving the report and registering a tracker entry upon completion.
Summary
- Career-Ops uses a six-block A-F report (Blocks A through F) to structure evidence extracted from job descriptions and candidate profiles.
- Five input-output weighted dimensions—Match con CV, North Star alignment, Comp, Cultural signals, and Red flags—consume this evidence.
- Each dimension carries an equal 20% weight in the final calculation, producing a 1–5 global score that drives recruitment recommendations.
- Core configuration resides in
modes/_shared.md(scoring rules) andmodes/ua/oferta.md(workflow orchestration), while profile data is stored inmodes/_profile.mdandcv.md.
Frequently Asked Questions
What is the difference between the A-F blocks and the IO dimensions?
The A-F blocks are evidence containers generated during the analysis phase—structured outputs that capture role summaries, CV mappings, and interview plans. The IO dimensions are scoring algorithms that consume this evidence to produce normalized ratings. Blocks feed dimensions; dimensions feed the global score.
Can I customize the weights for different dimensions?
Currently, the weights are hard-coded to equal 20% per dimension in modes/_shared.md. The architecture supports inheritance across language-specific modes, but the canonical implementation uses uniform weighting to ensure consistent comparability across all evaluated opportunities.
Where does the system store the North Star archetype definitions?
Candidate-specific target archetypes are defined in modes/_profile.md. This file is referenced by Block A (Role summary) and Block C (Level & strategy) when calculating the North Star alignment dimension, ensuring the evaluation measures fit against your stated career goals rather than generic criteria.
How does the evaluation handle missing salary data in a job posting?
Block D (Compensation & demand) triggers web search queries to gather market benchmarks from sources like Glassdoor and Levels.fyi when explicit compensation data is absent. The Comp dimension then normalizes this external data against the role's level and location to generate a comparable score, preventing null values from skewing the global average.
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 →