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:
-
Per‑session prompt — Explicitly instruct the agent: "Use the German modes under
modes/de/" -
Permanent profile configuration — Set
language.modes_dirinconfig/profile.ymlfor 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.mdsupersedesmodes/_shared.md, injecting market‑specific legal and cultural concepts - Core mode translation — Evaluation modes like
oferta.md,apply.md, andpipeline.mdare 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:
- Create
modes/xx/_shared.mdwith culturally specific clauses - Translate the four high‑impact modes:
oferta,apply,pipeline, plus market equivalents - Add a
README.mdexplaining activation and vocabulary, mirroringmodes/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_dirto 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.mdand core evaluation modes while preservinglanguage.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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →