# How to Customize Scoring Weights and Archetype Profiles in Career-Ops

> Customize scoring weights and archetype profiles in Career-Ops by editing your personal modes/_profile.md and modes/triage.md files. Learn how your changes override system defaults for tailored role definitions.

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

---

**You customize scoring weights and archetype profiles in Career-Ops by editing your personal [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) file for target role definitions and adjusting the dimension percentages in [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md), while the layered file-loading pipeline guarantees your changes override system defaults.**

Career-Ops evaluates each job posting against a set of weighted dimensions and target-role archetypes that are defined in Markdown mode files. To customize scoring weights and archetype profiles, you maintain a local [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) that supersedes the shared defaults and optionally tweak the percentages in [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md). This guide covers the exact file paths, table syntax, and load order used by the Career-Ops pipeline.

## Create Your Personal Profile File

If you have not already created a personal profile, copy the template once and then edit the resulting file:

```bash
cp modes/_profile.template.md modes/_profile.md

```

After this one-time setup, all future personalization happens inside [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md). This file is designated as the user layer, so edits you make there survive repository updates.

## Customize Archetype Profiles in modes/_profile.md

### The Archetype Table Structure

Inside [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md), the section titled **Your Target Roles** contains a table that defines each archetype you want the scorer to prioritize. According to the template at [[`modes/_profile.template.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md) – lines 13-30](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md#L13-L30), every row has three columns:

- **Archetype** — a short name used internally by the scorer.
- **Thematic axes** — the key themes that the archetype cares about.
- **What they buy** — the value proposition you should emphasize when matched.

The system reads this file after [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md), so any row you add or modify in your profile wins over the defaults.

### Adding or Modifying Target Roles

To add a new role, append a row to the table using standard Markdown pipe syntax. For example, to introduce a **Data Engineer** archetype:

```markdown

## Your Target Roles

| Archetype | Thematic axes | What they buy |
|-----------|---------------|---------------|
| **AI Platform / LLMOps Engineer** | Evaluation, observability, reliability, pipelines | Someone who puts AI in production with metrics |
| **Data Engineer** | Pipelines, ETL, warehousing | Builds reliable data platforms |

```

When the pipeline runs, it includes this archetype in its evaluation logic and references the thematic axes and value proposition during scoring.

## Adjust Scoring Weights in modes/triage.md

Default dimension weights live in [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md) around lines 57-70. The percentages express the relative importance of each factor when the overall score is computed. The default structure looks like this:

```markdown
**Archetype fit (weight 30%)** …
**Comp (weight 25%)** …
**Location (weight 25%)** …
**CV match estimate (weight 15%)** …

```

To customize scoring weights, change the percentage values to match your priorities. For example, if location matters most, you could raise **Location** to **35%** and reduce **Archetype fit** to **20%**:

```markdown
**Archetype fit (weight 20%)** …
**Comp (weight 20%)** …
**Location (weight 35%)** …
**CV match estimate (weight 25%)** …

```

After saving [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md), the scorer uses the new percentages for all subsequent evaluations.

## How the Pipeline Loads Your Changes

During a run, Career-Ops loads mode files in a strict order that protects your personalizations:

1. [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) — system-wide defaults.
2. [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) — your personal overrides.
3. Mode-specific files such as [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md) — scenario configuration.

Because your profile is read after [`_shared.md`](https://github.com/santifer/career-ops/blob/main/_shared.md), any archetype or narrative customization you place in [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) is guaranteed to take precedence. The data contract documented in [[`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md)](https://github.com/santifer/career-ops/blob/main/AGENTS.md#user-layer-never-auto-updated-personalization-goes-here) formalizes this rule, stating that the user layer is never auto-updated.

## Run an Evaluation with Custom Settings

Once your archetypes and weights are in place, execute a triage evaluation from the CLI:

```bash
node codex exec "run career-ops triage --url https://example.com/job"

```

The command reads your personalized [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) and the updated weights in [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md), then scores the posting against your custom criteria.

## Summary

- Copy [`modes/_profile.template.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md) to [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) once to create a persistent user layer.
- Edit the **Your Target Roles** table in [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) to add, remove, or modify archetype rows.
- Adjust the percentage values in [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md) (around lines 57-70) to change scoring weights.
- The pipeline loads [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) after [`_shared.md`](https://github.com/santifer/career-ops/blob/main/_shared.md), ensuring your customizations always override defaults.

## Frequently Asked Questions

### What is the difference between modes/_profile.template.md and modes/_profile.md?

[`modes/_profile.template.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md) is the version-tracked default shipped with the repository. You copy it to [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) to create your local user layer. Only the copy is read during scoring, and because the data contract in [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md) marks this layer as never auto-updated, your changes survive future repository pulls.

### Can I add multiple custom archetypes to the same profile?

Yes. The **Your Target Roles** table in [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) accepts any number of rows. Each row defines a distinct archetype with thematic axes and a value proposition, and the scorer references every valid row during triage.

### Will editing modes/triage.md affect only future evaluations?

Yes. The scorer reads the weight percentages from [`modes/triage.md`](https://github.com/santifer/career-ops/blob/main/modes/triage.md) at runtime. Any changes you save to that file are applied immediately to the next evaluation without requiring a restart or rebuild.

### Where does Career-Ops enforce that user customizations are not overwritten?

The protection is defined in [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md) under the user-layer rule. The pipeline loads [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) first and then [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md), so your personal profile is intentionally isolated from system defaults and will not be overwritten by updates to shared mode files.