The Six-Block Evaluation Framework in Career-Ops: A Complete Technical Guide
TLDR: Career-Ops analyzes job offers through six deterministic blocks (A–F) that evaluate role alignment, CV matching, compensation research, and interview readiness, culminating in a weighted 1–5 score that drives data-driven application decisions.
The career-ops repository by santifer implements a deterministic evaluation system for job seekers. This six-block evaluation framework automatically processes job descriptions and URLs to generate comprehensive qualification reports, eliminating subjective guesswork from career decisions by standardizing deep due diligence across every opportunity.
What Is the Six-Block Evaluation Framework?
The six-block evaluation framework is the core analytical engine of Career-Ops' "oferta" mode. When a candidate inputs a job description or URL, the system sequentially constructs six analytical blocks (labeled A through F) that form the qualitative basis for the final 1–5 evaluation score.
Each block serves a distinct purpose in the qualification pipeline, reusing data from previous stages to ensure consistency. According to the architecture documentation in docs/ARCHITECTURE.md, this framework orchestrates the entire evaluation flow from input ingestion to final report generation.
The Six Blocks Explained
The framework processes each job offer through six specialized analysis blocks defined in modes/oferta.md.
Block A – Role Summary
Block A extracts high-level characteristics from the posting. As implemented in modes/oferta.md (lines 25–34), this block generates a structured table containing the archetype, domain, function, seniority level, remote work model, team size, and a one-sentence TL;DR summary.
This initial classification determines which evaluation path the subsequent blocks will follow.
Block B – Match with CV
Block B performs granular requirement mapping between the job description and the candidate's CV. The implementation in modes/oferta.md (lines 36–53) creates a table linking each JD requirement to specific lines in cv.md, followed by a "Gaps" section that classifies missing qualifications as either hard blockers or nice-to-have items.
The gap analysis proposes concrete mitigation strategies, which directly inform the customization recommendations in Block E.
Block C – Level & Strategy
Block C positions the candidate's seniority relative to the posting requirements and defines negotiation tactics. According to modes/oferta.md (lines 54–58), this block detects the level stated in the JD and suggests a "sell senior without lying" pitch, alongside an "if they down-level me" contingency plan.
Block D – Compensation & Demand
Block D researches market-rate salary data and company compensation reputation. The system uses WebSearch to pull data from Glassdoor, Levels.fyi, and Blind, presenting findings in a cited table (see modes/oferta.md lines 60–68). This block also analyzes demand trends for the specific role category.
Block E – Customization Plan
Block E provides actionable edits to improve application success rates. As specified in modes/oferta.md (lines 69–77), this block delivers a structured table with columns for Section, Current status, Proposed change, and Why, plus the top five CV and top five LinkedIn modifications recommended to close gaps identified in Block B.
Block F – Interview Plan
Block F generates behavioral interview preparation materials. The implementation in modes/oferta.md (lines 78–96) creates a matrix mapping each JD requirement to a STAR+R story (Situation, Task, Action, Result, Reflection), including a "Story Bank" recommendation for rapid recall during interviews.
Understanding Block G and the Scoring System
While Blocks A–F form the core framework, Block G (Posting Legitimacy) operates separately. According to the source analysis, Block G classifies postings as High Confidence, Proceed with Caution, or Suspicious, but does not affect the 1–5 score.
The final score derives from a weighted average across six dimensions defined in modes/_shared.md (lines 29–38): Match with CV, North-Star alignment, Compensation, Cultural signals, Red flags, and Global factors. This scoring logic executes only after Blocks A–F complete their analysis.
Running the Evaluation Pipeline
Trigger the six-block framework using the Career-Ops CLI or OpenCode agent.
Evaluate a job posting by URL:
career-ops oferta https://example.com/jobs/12345
Process a raw job description via piped input:
cat job-description.txt | career-ops oferta
Using the OpenCode agent:
opencode run "career-ops oferta https://example.com/jobs/12345"
Each execution triggers the full A–F pipeline, writes a Markdown report to reports/{###}-{company}-{date}.md, generates an ATS-optimized PDF via generate-pdf.mjs, and records the entry in data/applications.md through merge-tracker.mjs.
Key Source Files
The framework implementation spans these critical files:
modes/oferta.md– Detailed specifications for Blocks A–F and Block G (Posting Legitimacy)modes/_shared.md– Scoring system definitions, dimension weights, and archetype listsdocs/ARCHITECTURE.md– High-level flow diagrams and block enumerationmodes/_profile.template.md– User-specific archetype customizations consumed by the frameworkgenerate-pdf.mjs– Converts final reports into ATS-compatible PDFsmerge-tracker.mjs– Processes TSV output to update the applications tracker
Summary
- The six-block evaluation framework in Career-Ops provides deterministic job offer analysis through Blocks A–F, excluding Block G which handles legitimacy checks.
- Block A generates role summaries; Block B maps CV matches and gaps; Block C defines level strategy.
- Block D researches compensation; Block E prescribes customization; Block F prepares interview stories.
- The final 1–5 score weights six dimensions defined in
modes/_shared.md(lines 29–38) to enable data-driven application decisions. - Each evaluation produces a Markdown report in
reports/, an ATS-compatible PDF, and updates the application tracker TSV.
Frequently Asked Questions
How does Block B identify gaps between a job description and my CV?
Block B constructs a requirement mapping table that links each JD item to exact lines in your cv.md file. According to modes/oferta.md (lines 36–53), the system classifies each mismatch as either a hard blocker or nice-to-have gap, then proposes specific mitigation strategies. This classification directly feeds into the customization recommendations generated in Block E.
What is the difference between the six-block framework and Block G?
The six-block framework (A–F) generates the qualitative analysis that feeds into the numerical 1–5 score. Block G (Posting Legitimacy) runs as a separate validation layer that classifies postings as High Confidence, Proceed with Caution, or Suspicious based on fraud indicators. Unlike Blocks A–F, Block G does not affect the final weighted score defined in modes/_shared.md.
How is the final 1–5 score calculated in Career-Ops?
The scoring logic resides in modes/_shared.md (lines 29–38) and computes a weighted average across six dimensions: Match with CV, North-Star alignment, Compensation, Cultural signals, Red flags, and Global factors. This calculation executes after Blocks A–F complete their analysis, ensuring the score reflects the deep qualitative evaluation rather than surface-level keyword matching.
Which file should I modify to customize how the framework evaluates specific job archetypes?
User-specific customizations for the six archetypes (defined in the framework) belong in modes/_profile.template.md. This template file allows you to adjust how Blocks A–F interpret requirements for your specific industry, seniority level, and career preferences without modifying the core evaluation logic in modes/oferta.md.
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 →