# How User-Specific Archetypes and Targeting Narratives Are Stored in config/profile.yml

> Discover how user archetypes and targeting narratives are stored in config/profile.yml for personalized career tracks. Learn how they map job descriptions to your career path.

- Repository: [Santiago Fernández de Valderrama/career-ops](https://github.com/santifer/career-ops)
- Tags: internals
- Published: 2026-06-07

---

**User-specific archetypes live under `target_roles.archetypes` and targeting narratives reside in the `narrative` section of [`config/profile.yml`](https://github.com/santifer/career-ops/blob/main/config/profile.yml), with both driving the career evaluation engine by mapping job descriptions to personalized career tracks.**

The `santifer/career-ops` repository uses a YAML-based personalization layer to power its evaluation engine. Understanding how user-specific archetypes and targeting narratives are stored in [`config/profile.yml`](https://github.com/santifer/career-ops/blob/main/config/profile.yml) is essential for customizing the system's output to match individual career goals and storytelling needs.

## Understanding the Profile Configuration Structure

The [`config/profile.yml`](https://github.com/santifer/career-ops/blob/main/config/profile.yml) file serves as the **user-layer data contract** that separates personal career data from system logic. According to the source code in the [`examples/dual-track-engineer-instructor/profile.yml`](https://github.com/santifer/career-ops/blob/main/examples/dual-track-engineer-instructor/profile.yml) template, the configuration organizes personalisation data into distinct semantic blocks that the evaluation engine consumes at runtime.

### The candidate Section

Basic contact information for the job seeker resides in the `candidate` mapping, typically found at **lines 10-19**. This section anchors the profile identity before the system evaluates role-specific positioning.

### The target_roles.archetypes Array

**User-specific archetypes** are defined in the `target_roles.archetypes` list (lines 28-55). Each archetype represents a distinct career track with five required fields:

- **`name`** – Human-readable label (e.g., "Senior AI Engineer")
- **`level`** – Seniority tier specification
- **`fit`** – Priority classification (primary, secondary, or adjacent)
- **`track`** – High-level domain classification (engineering, teaching, hybrid)
- **`sell_when`** – Trigger text that tells the evaluator when to highlight this archetype

```yaml
target_roles:
  archetypes:
    - name: "Senior AI Engineer"
      level: "Senior/Staff"
      fit: "primary"
      track: "engineering"
      sell_when: "JD emphasizes shipping production AI, agent infra, LangChain/LangGraph"
    - name: "Senior Technical Instructor (AI/ML)"
      level: "Senior/Lead"
      fit: "primary"
      track: "teaching"
      sell_when: "JD emphasizes curriculum, cohort delivery, bootcamp lectureship"

```

### The narrative Section

**Targeting narratives** that inject into CVs, cover letters, and interview scripts live under the `narrative` key (lines 56-86). This section contains:

- **`headline`** – One-line "rare-combination" tagline
- **`exit_story`** – Explanation of why the candidate is transitioning
- **`superpowers`** – Bulleted list of core strengths
- **`proof_points`** – Concrete achievements with `name`, `url`, `hero_metric`, and `track` fields

```yaml
narrative:
  headline: "Senior AI engineer who also runs the curriculum – 60K LOC in production, 5,200+ teaching hours"
  exit_story: "Spent 4 years running an AI subsystem ... now optimizing for a single role that uses both sides"
  superpowers:
    - "Ship production AI systems end-to-end (LangChain, LangGraph, Neo4j, Redis)"
    - "Design curriculum that produces hireable engineers (92% completion, 80+ placed)"
  proof_points:
    - name: "Knowledge-Graph SaaS AI subsystem"
      url: "https://sam-rivera.example.dev/case-study-knowledge-graph"
      hero_metric: "60K LOC owned, 4M+ agent events/month"
      track: "engineering"
    - name: "AI Engineering 4-Week Intensive (curriculum)"
      url: "https://sam-rivera.example.dev/curriculum-ai-eng"
      hero_metric: "6 cohorts, NPS 71, 92% completion"
      track: "teaching"

```

## How Archetypes Drive the Evaluation Engine

When processing a job description, the scoring script reads `target_roles.archetypes` and matches JD keywords against each archetype's `sell_when` text. The system selects the best-fit archetype while respecting the `fit` priority, then pulls corresponding narrative elements—headline, relevant superpowers, and proof points whose `track` matches the archetype's track—into the final report.

## Accessing Profile Data Programmatically

You can load these structures in Node.js using `js-yaml` to manipulate the user-specific archetypes and targeting narratives programmatically:

```javascript
import yaml from 'js-yaml';
import { readFileSync } from 'fs';

const profile = yaml.load(readFileSync('config/profile.yml', 'utf8'));
const archetypes = profile.target_roles.archetypes;
const headline   = profile.narrative.headline;

```

## Summary

- User-specific archetypes are stored in `target_roles.archetypes` with fields for name, level, fit, track, and sell_when triggers
- Targeting narratives reside in the `narrative` section, containing headline, exit_story, superpowers, and proof_points
- The evaluation engine matches job descriptions to archetypes via sell_when text, then pulls matching narrative elements by track alignment
- Data lives in the user-layer [`config/profile.yml`](https://github.com/santifer/career-ops/blob/main/config/profile.yml), keeping it safe from system updates that might overwrite default configurations
- Reference the [`examples/dual-track-engineer-instructor/profile.yml`](https://github.com/santifer/career-ops/blob/main/examples/dual-track-engineer-instructor/profile.yml) template for the complete structure and line-numbered examples

## Frequently Asked Questions

### What is the difference between user-specific archetypes and targeting narratives?

User-specific archetypes define the career tracks you want to be evaluated against, including priority levels and trigger conditions. Targeting narratives provide the storytelling content—headlines, proof points, and superpowers—that the system injects into application materials once an archetype is selected.

### How does the evaluation engine choose which archetype to use?

The engine reads the `sell_when` field of each archetype in `target_roles.archetypes` and matches it against keywords in the job description, selecting the best fit while respecting the `fit` priority classification (primary, secondary, or adjacent).

### Can I store additional custom narrative text without risking system overwrites?

Yes. Place extended narrative content in [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md), which serves as a safe location for custom text that never gets overwritten by system updates, unlike the main [`config/profile.yml`](https://github.com/santifer/career-ops/blob/main/config/profile.yml) which you edit directly.

### What fields are required for proof points in the narrative section?

Each proof point must include `name` (achievement title), `url` (link to evidence), `hero_metric` (quantifiable impact), and `track` (alignment with engineering, teaching, or hybrid domains) to ensure proper matching with archetype tracks.