# Career-Ops A-G Evaluation Blocks: Structure and Implementation Guide

> Understand the career-ops A-G evaluation blocks structure. Learn how each block scores risk factors for job posting legitimacy and alignment, generating a 1-5 rating.

- Repository: [Santiago Fernández de Valderrama/career-ops](https://github.com/santifer/career-ops)
- Tags: how-to-guide
- Published: 2026-08-22

---

**The career-ops framework evaluates job postings through seven sequential blocks (A-G) defined in [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md), each scoring specific risk factors from role alignment to posting legitimacy before generating a composite 1-5 rating.**

The A-G evaluation blocks form the core analytical pipeline of the `santifer/career-ops` repository, transforming raw job descriptions into structured risk assessments. Each block examines a distinct dimension of an opportunity, from cultural fit to compensation transparency, producing discrete scores that aggregate into a final hiring recommendation.

## Block A — Role Summary

**Block A** extracts fundamental position metadata and performs initial cultural screening. According to [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md), this section captures the job title, seniority level, and work-authorization requirements while evaluating cultural alignment through predefined screening criteria.

The block implements a **hard cap mechanism**: if the posting fails mandatory "require" criteria (specified in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md)), the block score cannot exceed a threshold regardless of other positive signals. This ensures deal-breaker conditions surface immediately in the evaluation pipeline.

## Block B — Match with CV

**Block B** compares the job description against the candidate’s CV, identifying alignment proof-points and contradictory evidence. The evaluation logic scans for resume excerpts that directly support or conflict with stated requirements.

When contradictory evidence emerges, the block flags specific discrepancies with annotated "flag" lines, enabling downstream scripts to weight mismatch severity programmatically.

## Block C — Skills Gap

**Block C** quantifies competency shortfalls using the `jd-skill-gap.mjs` classifier. Unlike simple keyword matching, this block parses required technical skills and cross-references them against the candidate’s documented experience.

Missing competencies generate a structured gap list that directly influences the block’s 1-5 rating. The classifier implementation resides in `jd-skill-gap.mjs`, which the evaluation pipeline invokes during batch processing.

## Block D — Compensation

**Block D** parses advertised salary ranges and evaluates pay transparency compliance. The block checks whether compensation data meets regional transparency mandates and compares ranges against the candidate’s target thresholds.

Ambiguous or missing compensation metadata triggers specific risk flags, ensuring financial expectations align before interview investment occurs.

## Block E — Company Health

**Block E** aggregates public organizational data including funding rounds, revenue trajectories, and employee count trends. This block surfaces stability signals and growth trajectory indicators derived from external data sources.

Red flags such as recent layoffs, leadership turnover, or liquidity concerns are explicitly catalogued here to inform the candidate’s risk calculus.

## Block F — Interview Red-Flags

**Block F** analyzes the posting for process friction indicators that typically predict poor interview experiences. Drawing from [`interview-redflag.md`](https://github.com/santifer/career-ops/blob/main/interview-redflag.md) heuristics, the block identifies vague timelines, excessive screening rounds, or non-standard evaluation criteria.

These signals help candidates anticipate administrative burden and interviewer preparedness before committing to the application process.

## Block G — Posting Legitimacy

**Block G** verifies active posting status and authenticity cues using Playwright-based live checks (`check-liveness.mjs` and `liveness-core.mjs`). The block assigns a **legitimacy tier**: `high_confidence`, `proceed_with_caution`, or `suspicious`.

This verification prevents candidates from investing effort in stale listings or fraudulent postings, with the tier classification feeding directly into the final risk summary.

## How the Scoring System Works

Each block produces an independent 1-5 score based on its specific rubric. After Blocks A through G complete, the pipeline generates a **Risk Summary** section that condenses critical signals—particularly from Block A (culture screen) and Block G (legitimacy)—into an actionable composite.

The final output aggregates these seven scores into a single recommendation: proceed, discard, or investigate further. According to [`docs/ARCHITECTURE.md`](https://github.com/santifer/career-ops/blob/main/docs/ARCHITECTURE.md), this structured approach ensures repeatable evaluations across high-volume job searches.

## Implementation Files and Code Examples

The A-G framework resides primarily in [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md), with supporting logic distributed across specialized modules. The batch processing template in [`batch/batch-prompt.md`](https://github.com/santifer/career-ops/blob/main/batch/batch-prompt.md) references each block header for automated evaluations.

Execute a full A-G evaluation via the command line:

```bash

# Run complete A-G block analysis on a specific job URL

node oferta.mjs https://jobs.example.com/12345

```

Extract specific block data for downstream processing:

```bash

# Isolate Block A output in JSON format

node parse-report.mjs --block A --output json reports/042-acme-senior-engineer.md

```

Key implementation files include:

- **[`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md)** — Central definition of all seven evaluation blocks and scoring rubrics
- **[`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md)** — Shared rules governing score caps and cross-block dependencies
- **`jd-skill-gap.mjs`** — Block C skill-gap detection algorithm
- **`check-liveness.mjs`** / **`liveness-core.mjs`** — Block G posting verification engine
- **[`docs/ARCHITECTURE.md`](https://github.com/santifer/career-ops/blob/main/docs/ARCHITECTURE.md)** — High-level pipeline documentation

## Summary

- **Seven structured blocks** (A through G) evaluate distinct risk dimensions of job postings, from cultural fit to compensation transparency.
- **Source definitions** reside in [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md), with specialized logic implemented in `jd-skill-gap.mjs` and `check-liveness.mjs`.
- **Scoring mechanism** assigns 1-5 ratings per block, with hard caps triggered by mandatory criteria failures in Block A.
- **Risk Summary** synthesizes critical signals from Blocks A and G to produce the final hiring recommendation.
- **Command-line interface** supports both full evaluations and targeted block extraction via `oferta.mjs` and `parse-report.mjs`.

## Frequently Asked Questions

### What file contains the A-G evaluation block definitions?

The complete A-G block specifications are defined in **[`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md)** within the `santifer/career-ops` repository. This file contains the markdown headers "## Block A — Role Summary" through "## Block G — Posting Legitimacy" along with their respective scoring rubrics and evaluation criteria.

### How is the composite score calculated from individual blocks?

Each block generates an independent 1-5 rating based on its specific heuristics. The pipeline then aggregates these seven scores into a final recommendation tier (apply, discard, or investigate) through the **Risk Summary** section, which prioritizes signals from Block A (culture screen) and Block G (legitimacy verification) as primary decision drivers.

### What distinguishes Block C from other skill assessment methods?

Block C leverages the **`jd-skill-gap.mjs`** classifier to perform semantic analysis of required competencies rather than simple keyword matching. This implementation identifies nuanced skill gaps—such as framework-specific experience versus general language familiarity—that generic keyword scanners often miss.

### Which blocks influence the final Risk Summary?

While all seven blocks contribute to the composite score, the **Risk Summary** explicitly emphasizes signals from **Block A** (cultural alignment and mandatory criteria failures) and **Block G** (posting legitimacy tier). These two blocks carry disproportionate weight because culture mismatches and fraudulent listings represent the highest-cost evaluation errors for candidates.