How the Market Modes System Works for Localized Evaluation (DACH, French, Japanese, Turkish) in Career‑Ops

The Career‑Ops market modes system decouples output language from market‑specific vocabulary using a language.modes_dir directory convention, allowing localized evaluation for DACH, French, Japanese, and Turkish markets through translated mode files and persistent profile configuration.

Career‑Ops, an open‑source career operations toolkit by santifer, implements a two‑layer localization architecture that separates how results are displayed from what market concepts are evaluated. This design lets users generate English reports while analyzing German salary structures, or produce French output when assessing Japanese employment contracts.

The Core Separation: Output Language vs. Market Vocabulary

The system's flexibility stems from treating two concerns independently:

  • language.output — controls the human‑facing language of generated reports (defaults to English)
  • language.modes_dir — determines which market‑specific vocabulary and evaluation rules are loaded

This separation lives in config/profile.yml, where users persist their preferences:

language:
  output: en          # Report language remains English

  modes_dir: modes/de  # But load DACH‑specific terminology

When modes_dir points to a subdirectory like modes/de/ or modes/fr/, the agent reads translated mode files from that location instead of the base modes/ folder.

Supported Market Locales and Directory Structure

The repository ships with base English modes under modes/ (including modes/oferta.md, modes/apply.md, and modes/_shared.md). For localized evaluation, each target market receives its own subdirectory:

Market Directory Status Key Terminology
DACH (Germany, Austria, Switzerland) modes/de/ Active 13. Monatsgehalt, Tarifvertrag, Urlaubsgeld
French modes/fr/ Active 13e mois, convention collective, primes
Japanese modes/ja/ Placeholder Ready for localization
Turkish modes/tr/ Placeholder Ready for localization

Each locale directory contains translated versions of high‑impact evaluation modes plus a market‑specific _shared.md that overrides the base shared context.

Two‑Step Activation: Session Prompt vs. Permanent Profile

The German README.md in modes/de/README.md documents a two‑step activation model:

  1. Per‑session prompt — Explicitly instruct the agent: "Use the German modes under modes/de/"

  2. Permanent profile configuration — Set language.modes_dir in config/profile.yml for automatic loading on every start

The permanent approach ensures consistent evaluation without repeated prompting, while session‑level switching enables ad‑hoc multilingual analysis.

What Changes When a Market Mode Activates?

Switching modes_dir triggers three specific overrides documented in the source:

  • Shared context replacement — modes/<locale>/_shared.md supersedes modes/_shared.md, injecting market‑specific legal and cultural concepts
  • Core mode translation — Evaluation modes like oferta.md, apply.md, and pipeline.md are replaced with locale equivalents (e.g., angebot.md, postuler.md, pipeline.md)
  • Preserved output formatting — Reports still respect language.output, so DACH concepts can appear in English text, or French concepts in Japanese output

Extending to Japanese and Turkish Markets

The placeholder directories modes/ja/ and modes/tr/ follow the same extension pattern established by the DACH and French implementations:

  1. Create modes/xx/_shared.md with culturally specific clauses
  2. Translate the four high‑impact modes: oferta, apply, pipeline, plus market equivalents
  3. Add a README.md explaining activation and vocabulary, mirroring modes/de/README.md

No code changes are required—the language.modes_dir pointer handles the integration automatically.

Programmatic Access to Mode Configuration

Custom scripts can respect the profile setting by loading config/profile.yml directly:

import yaml from 'js-yaml';
import fs from 'fs';

const profile = yaml.load(fs.readFileSync('config/profile.yml', 'utf8'));
const modesDir = profile.language?.modes_dir ?? 'modes';

// Load the appropriate shared context for the active market
const shared = fs.readFileSync(`${modesDir}/_shared.md`, 'utf8');

This pattern enables tooling that automatically adapts to the user's configured market without hardcoded paths.

Key Configuration and Documentation Files

File Purpose
config/profile.example.yml Demonstrates language.modes_dir configuration
modes/de/README.md German market activation guide and vocabulary list
modes/fr/README.md French market activation guide and vocabulary list
AGENTS.md Master table of supported market directories
modes/_shared.md Base shared context overridden by locale versions

Summary

  • Career‑Ops uses language.modes_dir to isolate market‑specific vocabulary from output language
  • Active locales (DACH, French) and placeholders (Japanese, Turkish) live under modes/<locale>/
  • Per‑session prompts or permanent profile settings activate localized evaluation
  • Each locale overrides _shared.md and core evaluation modes while preserving language.output
  • New markets extend the system by adding translated files—no architectural changes needed

Frequently Asked Questions

How do I switch between market modes in Career‑Ops?

You have two options: add language.modes_dir: modes/de (or modes/fr, modes/ja, modes/tr) to config/profile.yml for automatic loading, or explicitly tell the agent during a session to use a specific modes directory. The profile approach persists across restarts.

Can I write reports in English while using German market terminology?

Yes. The language.output field controls display language independently from language.modes_dir. Set output: en and modes_dir: modes/de to generate English reports that correctly reference DACH concepts like "13. Monatsgehalt" and "Tarifvertrag."

What files must be translated to add Japanese or Turkish support?

Create a modes/ja/ or modes/tr/ directory with: (1) a market‑specific _shared.md for cultural context, (2) translated versions of the four high‑impact modes (oferta, apply, pipeline), and (3) a README.md documenting activation and vocabulary. The existing modes/de/README.md serves as the reference template.

Where is the complete list of supported market modes documented?

The AGENTS.md file in the repository root contains a market‑mode table listing all supported directories and their associated terminology, as referenced in the source analysis.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →