# Block G Posting Legitimacy Signals for Detecting Ghost Jobs in Career-Ops

> Discover Block G legitimacy signals for detecting ghost jobs. Learn how career-ops uses jurisdiction checks, licensing, AI buzzwords, and freshness analysis to flag fraudulent listings.

- Repository: [Santiago Fernández de Valderrama/career-ops](https://github.com/santifer/career-ops)
- Tags: deep-dive
- Published: 2026-08-19

---

**Block G evaluates nine discrete qualitative signals independently of the numeric 1-5 score to flag ghost jobs, scams, and fraudulent listings through jurisdiction checks, agency licensing, AI buzzword validation, and posting freshness analysis.**

The `santifer/career-ops` repository uses Block G as its dedicated posting-legitimacy section to surface evidence that a job posting may be a ghost, scam, or duplicate. Unlike the quantitative 1-5 global score, Block G produces a separate qualitative assessment rendered as ✅, ⚠️, or — flags in the final report. Understanding these Block G posting legitimacy signals for detecting ghost jobs helps candidates and auditors identify fabricated or stale listings before applying.

## What Is Block G?

Block G is the standalone legitimacy tier in the Career-Ops evaluation pipeline. It aggregates discrete detection signals into a final verdict of **✅ High Confidence**, **⚠️ Proceed with Caution**, or **⚠️ Suspicious** without altering the underlying numeric score. Each signal inspects a specific facet of the posting—such as licensing, location consistency, or benefits terminology—and contributes to the overall qualitative risk picture.

## Nine Ghost-Job Detection Signals

The engine currently evaluates nine signals. Each is defined in [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md) and backed by one or more template files.

### Agency-Licensing Signal

This signal checks the posting operator—whether a recruiter or temp agency—against the jurisdiction-specific licensing table stored in [`templates/agency-licensing.yml`](https://github.com/santifer/career-ops/blob/main/templates/agency-licensing.yml). Unlicensed agencies are statistically over-represented among ghost postings and fee scams. A missing or invalid license triggers a ⚠️ flag in the Block G report.

### Third-Party Platform Location-Tag Mismatch

The engine compares the location displayed on a third-party job board, such as LinkedIn or Indeed, with the location declared on the employer’s own job page when both sources map to the same requisition or job ID. When the tags differ materially—especially across countries—Block G surfaces a mismatch warning. This pattern strongly suggests a fabricated or stale posting.

### Benefits-Terminology Country Mismatch

Signal 10 in Block G scans for benefit terms that legally belong to a different jurisdiction than the stated posting location. For example, a Canadian posting that lists "401(k)" instead of a local equivalent raises an immediate flag. The prohibited patterns live in [`templates/jurisdiction-prohibited-content.yml`](https://github.com/santifer/career-ops/blob/main/templates/jurisdiction-prohibited-content.yml). Mismatched benefits usually indicate copy-paste or bogus listings.

### AI-Buzzword vs. Infrastructure Mismatch

When a posting advertises AI-heavy buzzwords such as "LLM-ops" or "large-scale AI," Block G cross-checks the claim against the company’s public tech stack and infrastructure evidence. If the public footprint does not support the claim, the engine flags a mismatch. Over-hyped AI claims are common in fraudulent or low-quality listings.

### Immigration-Status Requirement Overreach

This signal detects explicit demands for a specific immigration status—such as "must be a US citizen"—that exceed lawful work-authorization screening. The detection patterns are defined in [`templates/immigration-status-requirements.yml`](https://github.com/santifer/career-ops/blob/main/templates/immigration-status-requirements.yml). Such over-reach correlates with low-quality or malicious postings.

### Jurisdiction-Prohibited Content

Block G scans the posting for content that is illegal in the candidate’s jurisdiction, for example "must have Canadian experience" in Ontario. The source patterns reside in [`templates/jurisdiction-prohibited-content.yml`](https://github.com/santifer/career-ops/blob/main/templates/jurisdiction-prohibited-content.yml). Illegal requirements typically appear only in badly crafted or fake postings.

### Posting Churn and Freshness

The engine analyzes **posting churn**, or how many times the same role appears in the scan history, as referenced in [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md). A high churn rate is a classic ghost-job indicator. Identical jobs re-posted within a short window suggest a scam or duplicate listing rather than a genuine opening.

### Employment-Classification Language

This signal detects contractor-style or ambiguous employment terms—such as "contract-to-hire"—inside the posting body. Unclear classification often correlates with ghost or low-commitment listings. The result appears as the **Employment classification** row in Block G.

### AI-Infrastructure Consistency Check

When an AI-related claim is present, the system may run an extra consistency check and mirror its verdict in Block G. If the claim is ✅ consistent, the row clears; if ⚠️ findings surface, they reinforce the ghost-job suspicion. This check is rendered alongside the AI-buzzword signal for layered validation.

## How Block G Aggregates Results

The final Block G tier is derived from the aggregate state of the signals above. If no concerning signal fires, the tier is **✅ High Confidence**. If one or more signals produce warnings, the tier becomes **⚠️ Proceed with Caution**. Multiple strong warnings escalate the tier to **⚠️ Suspicious**. The tier itself is displayed after Block G and before the final Risk Summary, and it does **not** affect the numeric 1-5 score.

## Rendering Block G in a Report

The following excerpt from [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md) shows how the engine renders the Block G table in a final report. Developers can expect the same row structure to be auto-generated once each signal’s detection logic is present.

```markdown

## Block G — Posting Legitimacy

| Signal | Verdict | Detail |
|--------|---------|--------|
| Posting legitimacy | ⚠️ Proceed with Caution — location-tag mismatch | "LinkedIn shows Berlin, employer page shows Paris (req # 12345)" |

| Agency licensing | ✅ Licensed | "Agency XYZ (Ontario THA licence # 123456)" |

| AI-buzzword vs infrastructure | ⚠️ Mismatch | "Job advert touts 'LLM-Ops', but company's public repo shows no AI services" |
| Employment classification | — not evaluated | |
| … (other rows) |

```

## Key Source Files

The Block G architecture is distributed across the following files in the `santifer/career-ops` repository:

- [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md) — Central definition of the Block G section and orchestration of all signals.
- [`templates/agency-licensing.yml`](https://github.com/santifer/career-ops/blob/main/templates/agency-licensing.yml) — Data table for the Agency-Licensing signal.
- [`templates/jurisdiction-prohibited-content.yml`](https://github.com/santifer/career-ops/blob/main/templates/jurisdiction-prohibited-content.yml) — Patterns for Jurisdiction-Prohibited Content and Benefits-Terminology Mismatch signals.
- [`templates/immigration-status-requirements.yml`](https://github.com/santifer/career-ops/blob/main/templates/immigration-status-requirements.yml) — Detection data for Immigration-Status Overreach.
- [`CHANGELOG.md`](https://github.com/santifer/career-ops/blob/main/CHANGELOG.md) — Historical record of when each Block G signal was added.
- [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md) — Documentation on how Block G signals influence downstream evaluation decisions.

## Summary

- Block G operates independently of the 1-5 global score to provide a qualitative ghost-job assessment.
- Nine discrete signals cover agency licensing, location-tag alignment, benefits terminology, AI buzzword validity, immigration overreach, prohibited content, posting churn, employment classification, and AI infrastructure consistency.
- Each signal pulls detection patterns from dedicated YAML templates under the `templates/` directory.
- The final tier—**✅ High Confidence**, **⚠️ Proceed with Caution**, or **⚠️ Suspicious**—is rendered in the report before the Risk Summary.
- Source definitions live primarily in [`modes/oferta.md`](https://github.com/santifer/career-ops/blob/main/modes/oferta.md) and are backed by [`templates/agency-licensing.yml`](https://github.com/santifer/career-ops/blob/main/templates/agency-licensing.yml), [`templates/jurisdiction-prohibited-content.yml`](https://github.com/santifer/career-ops/blob/main/templates/jurisdiction-prohibited-content.yml), and [`templates/immigration-status-requirements.yml`](https://github.com/santifer/career-ops/blob/main/templates/immigration-status-requirements.yml).

## Frequently Asked Questions

### Does Block G affect the 1-5 global score?

No. Block G is a separate qualitative tier that runs independently of the numeric scoring axis. It renders ✅, ⚠️, or — verdicts that appear after Block G and before the Risk Summary, but it never modifies the underlying 1-5 score.

### How does the location-tag mismatch signal detect ghost jobs?

The engine compares the location tag on a third-party board such as LinkedIn or Indeed against the employer’s own job page for the same requisition ID. If the two tags point to different countries or otherwise conflict, Block G flags the mismatch because fabricated or stale postings often fail to keep location data synchronized across platforms.

### What triggers the AI-buzzword vs. infrastructure mismatch flag?

If a posting uses heavy AI terminology like "LLM-ops" but the company’s public repositories, tech stack, or infrastructure evidence show no supporting AI services, Block G raises Signal 7. This mismatch is common in fraudulent listings that copy trending keywords without backing technology.

### Where are jurisdiction-specific detection patterns stored?

Prohibited content and mismatched benefits terminology are defined in [`templates/jurisdiction-prohibited-content.yml`](https://github.com/santifer/career-ops/blob/main/templates/jurisdiction-prohibited-content.yml). Immigration-status overreach patterns live in [`templates/immigration-status-requirements.yml`](https://github.com/santifer/career-ops/blob/main/templates/immigration-status-requirements.yml). Agency-licensing data resides in [`templates/agency-licensing.yml`](https://github.com/santifer/career-ops/blob/main/templates/agency-licensing.yml).