# How to Override Default Scoring Weights per User in Career-Ops: A Step-by-Step Guide

> Override default Career-Ops scoring weights per user by creating a custom _profile.md file. Learn how to shadow system defaults and tailor scoring for individual users with this guide.

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

---

**You can override default scoring weights in Career-Ops by creating a [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) file with custom dimension values, which the engine loads after [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) so your keys shadow the system defaults.**

The **Career-Ops** evaluation pipeline ranks opportunities using a **weighted scoring matrix** defined in the `santifer/career-ops` repository. Because the built-in **system defaults** in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) are designed as universal baselines, the project supports **user-specific overrides** through a simple file-based configuration system. Learning how to override default scoring weights per user in Career-Ops ensures your personal priorities—such as compensation over culture or vice versa—drive the final rank.

## Where Default and Override Weights Live

Career-Ops separates **system configuration** from **user-specific personalization** across two primary files.

- **[`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md)** — Contains the **baseline scoring matrix** and the hard-coded weights used by every evaluation.
- **[`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md)** — Holds your **personal overrides**, including custom scoring weights, archetypes, and narrative settings. If this file does not exist, copy the skeleton from **[`modes/_profile.template.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md)** and rename it.

According to the Career-Ops source code in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md), the engine enforces a strict **load order**: it reads [`_shared.md`](https://github.com/santifer/career-ops/blob/main/_shared.md) first to establish defaults, then reads [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) afterward. The file explicitly states the **RULE: Read [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) AFTER this file**, which means any key you redefine in your profile automatically replaces the shared default for that user only.

## Step-by-Step: Override Default Scoring Weights per User

Follow these steps to personalize your evaluation matrix without touching shared source.

### 1. Create or Open Your Profile File

If [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) is missing, generate it from the template:

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

```

### 2. Add the Scoring Weights Section

Open [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) and add a section that redefines the dimensions you want to customize. The keys must match the dimension names used in the shared file:

```markdown

## Scoring Weights

# The numbers are relative weights that must sum to 1 (or 100 %).

# They replace the defaults from `modes/_shared.md`.

match_cv:      0.30   # Skills & proof-point alignment

north_star:   0.20   # Fit with user archetypes (read from _profile.md)

comp:         0.15   # Salary / market comparison

culture:      0.15   # Company culture & remote policy

red_flags:    0.10   # Negative adjustments (red-flag signals)

global:       0.10   # Overall weighted average (optional)

```

Only the dimensions you explicitly list are overridden. Any dimension you omit falls back to the default value defined in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md).

### 3. Apply Archetype-Specific Tweaks (Optional)

If you want a different weighting strategy for a specific career archetype, nest the values under the archetype name:

```markdown

## Archetype-Specific Weights

AI Platform:
  match_cv:    0.35
  north_star: 0.25
  comp:        0.10

```

When the engine classifies an offer under that archetype, it swaps in the per-archetype map instead of the generic block.

### 4. Save and Evaluate

After saving [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md), run any standard evaluation command to apply the new weights:

```bash
node gemini-eval.mjs

```

The pipeline will pick up your personalized matrix on the next run.

## Why the Override Mechanism Works

The override behavior is intentional and enforced by documentation inside the repository itself.

In [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md), the engine’s loading contract is spelled out directly:

> "RULE: Read [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) AFTER this file. User customizations in [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) override defaults here."

The **Update** guide in [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md) reinforces this boundary:

> "User-specific customizations (archetypes, scoring weights, narrative) belong in [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) … never in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md)."

Because [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) is parsed strictly after [`_shared.md`](https://github.com/santifer/career-ops/blob/main/_shared.md), any identically named keys function as shadow values. This architecture keeps the core system untouched while giving each user a private scoring matrix.

## Practical Code Examples

### Simple Global Weight Override

The example below shifts 40 % of the score weight to CV alignment:

```markdown

## Scoring Weights

match_cv:    0.40
north_star: 0.25
comp:       0.15
culture:    0.10
red_flags:  0.10

```

After saving, executing `node gemini-eval.mjs` will compute scores using the 40 % emphasis on `match_cv` rather than the system default of approximately 20 %.

### Archetype-Specific Weighting

This configuration applies different priorities when evaluating an **AI Solutions Architect** role:

```markdown

## Scoring Weights

match_cv:    0.25
north_star: 0.20
comp:       0.20
culture:    0.20
red_flags:  0.15

## Archetype-Specific Weights

AI Solutions Architect:
  match_cv: 0.30
  north_star: 0.25

```

If the offer is classified as *AI Solutions Architect*, the engine uses the nested map; otherwise, it falls back to the generic weights above.

## Key Files in the Override Flow

Understanding the role of each file helps you avoid editing the wrong source.

- **[`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md)** — Stores the baseline scoring matrix and publishes the "read [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) after" rule.
- **[`modes/_profile.template.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md)** — Provides the skeleton for new users; copy this to [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md) to begin personalizing.
- **[`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md)** — Your active user-specific overrides file; place the "Scoring Weights" section here.
- **[`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md)** — Documents where personal settings belong versus system-wide defaults.
- **[`README.md`](https://github.com/santifer/career-ops/blob/main/README.md)** — Describes the evaluation pipeline and the ten-dimension weighted scoring matrix.

## Summary

- System defaults are hard-coded in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) and loaded first during every evaluation.
- User-specific overrides belong in [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md), which the engine reads afterward.
- Because [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) loads after [`_shared.md`](https://github.com/santifer/career-ops/blob/main/_shared.md), any matching keys shadow the defaults without modifying shared source.
- Only dimensions you explicitly redefine are overridden; omitted dimensions retain their system defaults.
- Optional nested archetype maps let you apply role-specific scoring strategies inside the same profile file.

## Frequently Asked Questions

### What file do I edit to override default scoring weights in Career-Ops?

You edit **[`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md)**. The repository is designed so that [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) remains untouched, while [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md) holds all user-specific customizations. If the file does not exist, copy it from [`modes/_profile.template.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.template.md) before adding your weights.

### Do I need to modify [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) to change my personal weights?

No. According to the rule documented in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md) and the guidance in [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md), personal settings such as scoring weights should **never** be placed in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md). Changing the shared file would affect all users and violate the project's separation between system defaults and personal overrides.

### Can I assign different weights to different job archetypes?

Yes. Inside [`modes/_profile.md`](https://github.com/santifer/career-ops/blob/main/modes/_profile.md), you can add an **Archetype-Specific Weights** section and nest dimension values under the archetype name, such as *AI Platform* or *AI Solutions Architect*. When the engine matches an offer to that archetype, it substitutes the per-archetype weights for the generic set.

### What happens if I leave out a scoring dimension in [`_profile.md`](https://github.com/santifer/career-ops/blob/main/_profile.md)?

The engine falls back to the default value defined in [`modes/_shared.md`](https://github.com/santifer/career-ops/blob/main/modes/_shared.md). You only need to declare the dimensions you want to customize; the override system is partial by design, so omitting a key preserves the original system weight.