@.claude/skills/apply-job/references/job-types.md
Apply Job Skill
Generate tailored, human-like cover letters and CV recommendations for job applications.
How This Skill Works
This skill uses lazy loading to minimize context usage. Context files are loaded only when needed.
Workflow:
- •Analyze job & classify → 2. Clarify with user → 3. Research company → 4. Generate content → 5. Validate quality → 6. Create output
Context Loading Points:
- •Startup:
job-types.mdonly (~800 tokens) - •After classification:
profile-essential.md(~2,000 tokens) - •After clarification:
writing-rules.md(~1,500 tokens) - •If Swiss company:
swiss-market-rules.md(~600 tokens)
Skill Interface
Invocation: /apply [job-url-or-description]
Inputs:
- •Job URL (scraped via Firecrawl MCP)
- •OR pasted job description
- •User responses to clarification questions
Outputs (Generated by Claude - ALL MANDATORY):
- •
job-description.md- Scraped job posting - •
cover-letter.md- Tailored cover letter - •
cover-letter.html- HTML version - •
cover-letter.pdf- MANDATORY PDF (max 2 pages, print-ready) - •
cv-{variant}.html- MANDATORY Copy of CV variant - •
cv-{variant}.pdf- MANDATORY CV PDF (max 2 pages) - •
application-email.md- Application email draft
Step 1: Analyze Job & Classify
Get the job description:
- •If URL provided: Scrape with Firecrawl MCP
- •If pasted: Parse key requirements
Classify job type by scanning for keywords (see job-types.md for details):
| Type | Keywords | CV Variant |
|---|---|---|
| A: Digital Health | health, medical, wearable, clinical | cv-simon-yang-digital-health.html |
| B: AI/ML | AI, ML, data science, analytics | cv-simon-yang-ai-product.html |
| C: GenAI/DevTools | GenAI, LLM, developer, automation | cv-simon-yang-genai-tools.html |
| D: ESG/Climate | ESG, climate, risk, sustainability | cv-simon-yang-reprisk.html |
Gate 1 Check:
- • Job type classified with confidence >70%
- • CV variant selected
- • ≥3 matching keywords identified
After Gate 1 passes, load: references/profile-essential.md
Step 2: Clarify with User
Ask these questions before generating:
- •"I've classified this as [Type X]. Is that correct?"
- •"What 2-3 aspects of this role interest you most?"
- •"Any specific achievement you want to emphasize?"
- •"Company tone: startup casual, corporate formal, or Swiss formal?"
- •"Any gaps or concerns to address proactively?"
Wait for user responses before proceeding.
After clarification, load: references/writing-rules.md
Step 3: Research Company
Use Firecrawl MCP to scrape:
- •Company website (About, Products, Team pages)
- •Recent news (search: "{company} funding 2024 2025")
Extract:
- •What they build (products, services)
- •Who they serve (customers, users)
- •Recent news (funding, launches)
- •Cultural signals
Gate 2 Check:
- • Company name verified (exactly as in JD)
- • Role title captured (exactly as in JD)
- • 3+ company-specific details extracted
If Swiss company detected, load: references/swiss-market-rules.md
Step 4: Generate Content
Cover Letter
Structure (3-4 paragraphs, no headers):
Opening (50-70 words):
- •Company-specific hook (NOT "I am writing to apply")
- •Why this company interests you
- •Your positioning
Body (200-280 words):
- •2-3 evidence paragraphs
- •Each: Claim → Evidence → Result
- •Include 2+ quantified achievements
- •Include 3+ company-specific details
Closing (50-70 words):
- •Confident (no "grateful")
- •"I look forward to discussing..."
Total: 350-450 words
Style Rules (Non-Negotiable)
- •NO em-dashes (use periods, commas instead)
- •NO subjunctive ("would", "could", "might")
- •Active voice 90%+
- •Sentences: 10-20 words average
- •Tone: Swiss formal, professional, neutral
Vocabulary
Never use: "passionate about", "excited to apply", "unique opportunity", "I would be grateful", "thrilled", "humbled"
Prefer: "I built", "I led", "resulting in", "measured by", "I look forward to"
For full rules, see references/writing-rules.md.
Step 5: Validate (Gate 3)
Self-check before presenting:
Content Checks
- • Word count: 350-450
- • Company-specific details: ≥3 (list them)
- • Quantified achievements: ≥2 (list them)
- • Company name triple-verified against JD
- • Role title exact match to JD
Style Checks
- • No blacklisted phrases
- • No em-dashes (search for: —)
- • No subjunctive mood (would, could, might, should)
- • Active voice ≥90%
- • Confident closing (not "grateful")
Metrics Verification
For each numeric claim:
- •Extract all metrics (patterns: X%, Xx, CHF X, X+)
- •Cross-reference against Metrics Bank in
profile-essential.md - •Mark VERIFIED or UNVERIFIED
If validation fails: Self-correct (max 2 iterations), then present with warning.
Quality Report (Collapsed)
Present to user:
Quality: PASSED ✓ (12/12 checks) Word count: 412 | Company-specific: Yes | Metrics verified [Show details]
Step 6: Create Output (Gate 4)
Create application folder with ALL files:
docs/applications/{company}/
├── job-description.md
├── cover-letter.md
├── cover-letter.html
├── cover-letter.pdf ← MANDATORY
├── cv-{variant}.html ← MANDATORY (copy from variants/)
├── cv-{variant}.pdf ← MANDATORY
└── application-email.md
PDF Generation (MANDATORY - DO NOT SKIP)
Cover Letter PDF:
// Use Puppeteer to generate PDF
await page.pdf({
path: 'cover-letter.pdf',
format: 'A4',
printBackground: true,
margin: { top: 0, right: 0, bottom: 0, left: 0 }
});
CV Copy + PDF:
- •Copy CV variant from
docs/profile/variants/cv-simon-yang-{variant}.html - •Generate PDF with same Puppeteer settings
- •Both files go in application folder
Visual Verification (MANDATORY)
Take screenshot of cover-letter.html and verify:
- • Fits on 1-2 pages max
- • Professional formatting
- • No broken layouts
- • Print-ready appearance
Gate 4 Check:
- • All placeholders replaced (no
{{COMPANY}}, etc.) - • HTML renders correctly
- • cover-letter.pdf generated (max 2 pages)
- • CV variant copied to folder (HTML + PDF)
- • Screenshot taken to verify print quality
- • File structure complete (7 files minimum)
Cover letter HTML: Use template from docs/applications/_templates/cover-letter-template.html
Application email: Brief, Swiss formal, reference role and materials.
Metrics Bank (Quick Reference)
Use 2-3 metrics per cover letter. Full details in profile-essential.md.
| Metric | Value | Use For |
|---|---|---|
| D30 Retention | 37% vs 8% | Product, analytics |
| Retention Lift | 125% | Data-driven decisions |
| Detection Rate | 3x | Medical, preventive |
| Series A | CHF 11.5M | Executive, fundraising |
| Team Growth | 1 to 8 | Leadership |
| Solo Apps | 5 production | Technical, GenAI |
Reference Files
| File | When Loaded | Tokens |
|---|---|---|
references/job-types.md | Startup (@ import) | ~800 |
references/profile-essential.md | After classification | ~2,000 |
references/writing-rules.md | After clarification | ~1,500 |
references/swiss-market-rules.md | If Swiss company | ~600 |
references/quality-rules.md | During validation | ~800 |
For full context loading order, see workflows/context-loading.md.
Example Invocation
User: /apply https://jobs.example.com/product-manager-ai Claude: I'll analyze this job description. [Scrapes JD] I've classified this as **Type B: AI/ML Product Management**. Is that correct? [Loads profile-essential.md] What 2-3 aspects of this role interest you most? Any specific achievement you want to emphasize? Company tone: startup casual, corporate formal, or Swiss formal? Any gaps to address? [User responds] [Loads writing-rules.md] [Researches company, generates cover letter] Here's your tailored cover letter: [Cover letter text] Quality: PASSED ✓ (12/12 checks) Word count: 412 | Company-specific: Yes | Metrics verified I recommend using **cv-simon-yang-ai-product.html** for this application. Shall I create the application folder and save the files?
Success Criteria
- •Efficient context - Startup load <1,000 tokens
- •Correct classification - Job type matches JD keywords
- •Company research - Extracts 3+ specific details
- •Quality output - Passes all 12 validation checks
- •Human-like writing - No AI tells, reads naturally
- •Complete deliverables - ALL 7 files created:
- •job-description.md
- •cover-letter.md
- •cover-letter.html
- •cover-letter.pdf (MANDATORY)
- •cv-{variant}.html (MANDATORY)
- •cv-{variant}.pdf (MANDATORY)
- •application-email.md
- •Visual verification - Screenshot confirms print-ready quality