Files
ai-job-search/.claude/skills/job-application-assistant/04-job-evaluation.md
T
LeoWinston-9596 d88c023683 feat(04): add work-authorization eligibility gate to job evaluation (#209)
Adds a work-authorization eligibility dimension to 04-job-evaluation.md: whether the candidate is legally permitted to hold the role (citizenship/PR/visa requirements) as a hard filter, distinct from permit-timing. Country-agnostic, quotes the requirement source verbatim, treats silence as not-permission, and surfaces to the user rather than silently dropping. framework_version bumped 1.0.0 -> 1.1.0.

By @LeoWinston-9596 (split from #199). Note: the referenced /setup 'second gate' permit-timing collection isn't wired yet - a natural follow-up.
2026-07-21 08:11:53 +02:00

8.8 KiB

framework_version
framework_version
1.1.0

Job Evaluation Framework

Eligibility Gate — run before scoring

If the candidate is not a citizen or permanent resident of the country they are applying in, run this first. It is a hard filter, not a scoring dimension, and it is separate from work-permit timing: timing asks "can they work the required hours yet?", eligibility asks "are they permitted to hold this job at all?". A candidate can pass timing and still be categorically excluded.

Read the posting's eligibility / work rights / "who can apply" section verbatim and classify:

Posting wording Verdict
Names a citizenship or permanent-residency requirement ("must be a citizen of X", "permanent resident", "PR required", "full working rights" where the employer means citizen/PR) FAIL — hard stop. Do not score, do not draft. Quote the exact wording back to the user.
Requires a security clearance at any level FAIL in most countries, since clearance is normally gated on citizenship. Verify the specific scheme rather than assuming.
Explicitly names the candidate's permit class, or says "international applicants welcome", "visa holders considered", "we sponsor" PASS — verified acceptance. Worth noting as a positive in the application.
Silent on citizenship or residency PROCEED, but mark unverified. Check the employer's own careers or international-applicant page before drafting.

Two rules that are easy to get wrong:

  1. Silence is not permission. Large graduate programs frequently gate eligibility on their own website rather than in the job ad. Highest-risk categories: professional-services firms, government and defence, banking, telecommunications, and anything touching critical infrastructure.
  2. A company-wide "we accept international applicants" statement is not role-level permission. The common pattern is a general welcome followed by a named list of the specific programs or service lines it covers. Confirm the specific posting or stream appears on that list before drafting.

Report an eligibility failure to the user with the quoted source rather than silently dropping the role. They may know something about their own status that the profile does not record.

If the candidate's permit also constrains hours or start date (a student visa with a term-time cap, a permit that begins on graduation), record that as a second gate under this section during /setup, with the specific dates. Do not merge it with the eligibility question above — they fail for different reasons and need different answers.

A role that fails this gate is not scored and not drafted. Everything below applies only to roles that pass it.

Scoring Dimensions

Evaluate each job posting against these five dimensions:

1. Technical Skills Match (0-100)

How well do the required/preferred skills align with the candidate's capabilities?

Score Meaning
80-100 Core requirements are primary skills
60-79 Most requirements match, 1-2 gaps that are learnable
40-59 Partial match, significant upskilling needed
0-39 Fundamental mismatch

Strong match areas: [YOUR_PRIMARY_SKILLS] Moderate match areas: [YOUR_SECONDARY_SKILLS] Weak match areas: [SKILLS_YOU_LACK]

2. Experience Match (0-100)

Does work history align with what they're looking for?

Score Meaning
80-100 Direct experience in the same domain and role type
60-79 Related experience, transferable skills clear
40-59 Adjacent experience, would need to make the case
0-39 Unrelated experience

Strong: [YOUR_DIRECT_EXPERIENCE_DOMAINS] Moderate: [YOUR_ADJACENT_EXPERIENCE] Entry-level: [ROLES_WITH_LIMITED_EXPERIENCE]

3. Behavioral/Culture Fit (0-100)

Does the role and company culture match the behavioral profile?

Score Meaning
80-100 Culture strongly matches behavioral preferences
60-79 Mixed signals but mostly compatible
40-59 Some friction areas
0-39 Significant culture mismatch

Red flags to research: Department disorganization, work dominated by maintenance over development, poor chemistry with leadership, culture mismatches. Check reviews, media coverage, LinkedIn connections, and network contacts for insider perspective.

4. Location & Logistics (Pass/Fail + Notes)

  • Within commute range: PASS
  • Remote with occasional office: PASS
  • Requires relocation: FAIL (deal-breaker)
  • Frequent international travel: FLAG (discuss with user)

5. Career Alignment & Motivation (0-100)

Does this role advance career goals and contain tasks that energize?

Score Meaning
80-100 Strongly aligned with career direction, clear growth path
60-79 Good role but only partially aligned with long-term goals
40-59 Decent job but doesn't build toward career goals
0-39 Dead end or backwards step

Career goals:

  • [YOUR_CAREER_GOAL_1]
  • [YOUR_CAREER_GOAL_2]
  • [YOUR_CAREER_GOAL_3]

Motivation filter: Evaluate not just whether you can do the tasks, but whether the tasks will energize you. Consider:

  • Tasks that energize: [YOUR_ENERGIZING_TASKS]
  • Tasks that drain: [YOUR_DRAINING_TASKS]
  • Non-task factors: leadership style, department culture, company values, degree of autonomy

Life situation alignment: Consider personal constraints:

  • Security: [YOUR_FINANCIAL_SITUATION_CONTEXT]
  • Flexibility: [YOUR_SCHEDULE_CONSTRAINTS]
  • Professional development: [YOUR_GROWTH_PRIORITIES]

6. Salary Benchmark (Optional)

If the salary lookup tool is configured (salary_data.json exists), look up the company:

python salary_lookup.py "<Company Name>" --json

If a city is known from the posting, add --city "<City>" to narrow results.

Present findings as:

### Salary Benchmark
| Metric | Value |
|--------|-------|
| [Category] index | XX.X (+/-X.X% vs baseline) |
| Overall index | XX.X (+/-X.X% vs baseline) |

Interpret results relative to the baseline defined in the data file's metadata. For index-based data, higher typically means above-market compensation.

If the salary tool is not configured, skip this section.

Output Format

Present the evaluation as:

## Job Fit Evaluation: [Role] at [Company]

| Dimension | Score | Notes |
|-----------|-------|-------|
| Technical Skills | XX/100 | [brief note] |
| Experience Match | XX/100 | [brief note] |
| Behavioral Fit | XX/100 | [brief note] |
| Location | PASS/FAIL | [brief note] |
| Career Alignment | XX/100 | [brief note] |

**Overall Score: XX/100** (weighted average of scored dimensions)

### Verdict: [Strong Fit / Good Fit / Moderate Fit / Weak Fit / Poor Fit]

### Key Strengths for This Role
- [bullet points]

### Gaps to Address
- [bullet points]

### Recommendation
[1-2 sentences: apply/skip/apply with caveats]

### Company Research Checklist
- [ ] Checked company website (mission, values, recent news)
- [ ] Checked review sites (Glassdoor, Jobindex, etc.)
- [ ] Checked LinkedIn for team size, recent hires, connections
- [ ] Checked media for restructuring, growth, or workplace issues
- [ ] Identified network contacts who may know the team/manager

Weighting

  • Technical Skills: 30%
  • Experience Match: 25%
  • Behavioral Fit: 15%
  • Career Alignment: 30%

(Location is pass/fail, not weighted)

Thresholds

  • Strong Fit (75+): Definitely apply, tailor everything
  • Good Fit (60-74): Apply, address gaps in cover letter
  • Moderate Fit (45-59): Consider carefully, discuss with user
  • Weak Fit (30-44): Probably skip unless strategic reasons
  • Poor Fit (<30): Skip

Pre-Application: Call the Employer (Best Practice)

Before writing the application, consider whether the candidate should call the contact person listed in the posting. Only call if there are substantive questions - never call just to "be remembered."

When to Suggest Calling

  • The posting has unclear or ambiguous requirements
  • It's unclear which competencies are essential vs. nice-to-have
  • The role description is vague about day-to-day tasks
  • There's a named contact person who invites questions

Good Questions to Ask

  • "What are the primary challenges in this role?"
  • "How is time typically divided across the listed responsibilities?"
  • "Which competencies are most critical for success in this position?"
  • "What does success look like in the first 6-12 months?"

Rules for the Call

  • Prepare a 30-second "elevator pitch" about your background in case they ask
  • The call's purpose is gathering information, not delivering a pitch
  • Take notes - use what you learn to tailor the application
  • Reference the conversation naturally in the cover letter ("After speaking with [name], I was especially drawn to...")