From de91a97fe8302516cd574361cda6e43ea74a4cb8 Mon Sep 17 00:00:00 2001 From: Mads Lorentzen <50207393+MadsLorentzen@users.noreply.github.com> Date: Sat, 18 Jul 2026 08:39:51 +0200 Subject: [PATCH] feat(apply): make CV language a profile setting, defaulting to English (#179) The CV was hardcoded 'Always in English' - fine for the Danish/English demonstration profile, a real disadvantage for fork users in markets where applications are expected in the local language (cover letters already match the posting's language). /setup now asks once and records 'CV language:' in CLAUDE.md's Identity section; /apply reads it with English as the default, so existing users see zero behavior change. The ATS keyword rule is reworded language-neutrally. Co-authored-by: Claude Fable 5 --- .claude/commands/apply.md | 4 ++-- .claude/commands/setup.md | 1 + CLAUDE.md | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.claude/commands/apply.md b/.claude/commands/apply.md index be85506..cf6ff73 100644 --- a/.claude/commands/apply.md +++ b/.claude/commands/apply.md @@ -65,7 +65,7 @@ Also read the most recent existing CV and cover letter files for concrete struct - Read any existing `cover_letters/cover_*.tex` or `cover_letters/Cover_*.tex` file as a template reference ### CV (`cv/main__.tex`) -- Always in **English** +- In the **CV language from the profile** (the `CV language:` line in CLAUDE.md's Identity section). When the profile does not set one, default to **English**. Never switch language per posting - the CV language is a profile-level choice, so all CVs stay consistent and reusable - Follow the moderncv/banking format from `05-cv-templates.md` - Tailor the profile statement and experience bullets to the specific role - Reframe skills and achievements to match job requirements @@ -245,7 +245,7 @@ Read the `.txt` file. Failures here are template-level problems: fix them in the `.tex` (e.g. print the email as text rather than icon-only), then re-run 5a–5c and re-extract. If a custom template's layout fundamentally scrambles extraction order, tell the user prominently — they may be trading ATS compatibility for looks. -**3. Keyword coverage.** Reuse the required/preferred keyword list you extracted in Step 1 — do not re-derive it. Match each keyword against the extracted text, **in the posting's language** (a Danish posting's keywords are matched in Danish even though the CV is in English — where the CV legitimately covers the concept in English, count it as synonym-only and note the language difference). Report a table: +**3. Keyword coverage.** Reuse the required/preferred keyword list you extracted in Step 1 — do not re-derive it. Match each keyword against the extracted text, **in the posting's language** (when the posting's language differs from the CV language — e.g. a Danish posting against an English CV — a concept the CV legitimately covers in its own language counts as synonym-only; note the language difference). Report a table: | Keyword | Priority | Status | Note | |---------|----------|--------|------| diff --git a/.claude/commands/setup.md b/.claude/commands/setup.md index e42b945..1a11029 100644 --- a/.claude/commands/setup.md +++ b/.claude/commands/setup.md @@ -314,6 +314,7 @@ Ask about: - **Target companies (optional):** "Are there specific companies you'd like to monitor for openings?" - **Geographic scope:** "Which cities or regions should I search in? How far are you willing to commute?" Use this to define the location filter tiers (ideal, acceptable, borderline, too far). - **Job portals:** "The framework ships country-agnostic search CLIs (`linkedin-search`, `freehire-search`) plus Danish portal demos (Jobindex, Jobbank, Jobdanmark, Jobnet). `/scrape` auto-discovers whatever portal skills are installed under `.agents/skills/`. Which of these fit your market, and do you use other job boards?" If the user needs a local board that is not shipped, guide them to `/add-portal` (market-specific skills live in their fork). WebSearch/`site:` queries remain the fallback for portals without a CLI skill. +- **CV language:** "Should your CVs be written in English (the default, accepted in most markets), or in your market's language?" Record the answer as a `CV language: ` line in CLAUDE.md's Identity section. Cover letters always match each posting's language automatically; this setting governs the CV only. If the user is unsure, keep English and note they can re-run `/setup --section search` to change it. **Important:** Also suggest role types the user may not have considered, based on their skill profile. For example: - If they have strong Python + domain expertise: "Have you considered roles like 'Technical Consultant' or 'Solutions Engineer' in your domain?" diff --git a/CLAUDE.md b/CLAUDE.md index 2d3ab7e..02265a1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -19,6 +19,8 @@ This repo is a job application workspace. Claude acts as a career advisor and ap - **Name:** [YOUR_NAME] - **Location:** [YOUR_CITY], [YOUR_COUNTRY] ([YOUR_COMMUTE_CONSTRAINTS]) - **Languages:** [YOUR_LANGUAGES] +- **CV language:** [YOUR_CV_LANGUAGE] + - **Status:** [YOUR_EMPLOYMENT_STATUS] - **LinkedIn headline:** "[YOUR_LINKEDIN_HEADLINE]"