scout-vet

SKILL.md

Scout Vet

Evaluates a job listing against your profile, producing a weighted score and recommendation. Updates the job file with the results.

Prerequisites

Requires ~/.scout/profile/master-profile.md and ~/.scout/profile/preferences.md. If either is missing, direct the user:

"No profile found. Run /scout-profile first to set up your skills, experience, and preferences."

Input Mode Detection

  • User specifies a job ID → vet that specific job
  • User says "vet all" or "batch" → batch mode
  • No specific job mentioned → present list of unvetted jobs (status: "discovered") for selection

Single Job Vetting

  1. Read the job file from ~/.scout/jobs/<job-id>.md.
  2. Read ~/.scout/profile/master-profile.md and ~/.scout/profile/preferences.md.
  3. Evaluate against all criteria (see Evaluation Criteria below).
  4. Present the full scorecard to the user.
  5. Update the job file's frontmatter: set status: "vetted", score: <number>, recommendation: "<recommendation>".
  6. Append to ~/.scout/history.md.

Batch Mode

  1. Scan ~/.scout/jobs/*.md for files with status: "discovered".
  2. If none found, inform the user.
  3. Process each job sequentially. After each, present the scorecard and pause for user review before proceeding.
  4. If evaluation partially fails for a job (e.g., WebSearch unavailable for reputation check), log the failure, score from available categories (recalculating weights proportionally from remaining categories), and continue to the next job.
  5. At the end, present a summary: N vetted, scores, recommendations.

Resumable — re-invoking picks up jobs still in "discovered" status.

Evaluation Criteria

Deal-Breaker Check (Pass/Fail)

Check the job against every item in preferences.md → dealbreakers. ANY match = automatic Skip regardless of score. Common deal-breakers:

  • Location violates location.dealbreaker_if
  • Salary below salary.minimum (if salary is disclosed)
  • Company size violates company_size.dealbreaker_if
  • Any custom dealbreaker string matched against the job description

If a deal-breaker triggers, still calculate the score for informational purposes but set recommendation to Skip with the deal-breaker reason.

Weighted Scoring (100 points)

Category Weight How to Score
Skills match 30% Compare job's Requirements and Nice-to-haves against master-profile.md skills list. Score higher for required skill matches, partial credit for nice-to-have matches. Penalize for required skills the user lacks.
Experience match 15% Compare job's seniority level and implied years of experience against user's years_experience and title. Exact match = full score. One level off = partial. Two+ levels off = low.
Compensation fit 15% Compare job's salary.min/salary.max against preferences.md → salary.minimum and salary.preferred. Normalize currencies if different. Full score if job range overlaps preferred. Partial if above minimum. Zero if below minimum. Null salary = 50% (neutral).
Preferences match 15% Check location, remote policy, company size, industry against preferences. Each match = proportional credit.
Red flags 15% Start at full score, deduct for each red flag found (see Red Flag Checklist).
Opportunity signal 10% Use WebSearch to check company reputation, recent news, growth signals. Score based on findings. If WebSearch is unavailable, score 50% (neutral) and note "insufficient data."

Red Flag Checklist

Deduct points for each flag found:

  • Vague job description with no concrete responsibilities (-3)
  • Unrealistic requirements / "unicorn" listing requiring 10+ technologies for mid-level (-4)
  • Excessive requirements for stated seniority (e.g., "5 years" for junior) (-3)
  • No salary information disclosed (-2)
  • Listing age > 30 days based on date_posted (-3)
  • Reposted listing (same job appearing frequently — check via WebSearch if possible) (-4)
  • "Confidential" company or no company name (-4)
  • "Urgently hiring" + below-market compensation (-3)
  • "Other duties as assigned" dominating description (-2)
  • Equity-heavy compensation with no salary floor (-3)
  • Company currently undergoing layoffs (check via WebSearch) (-3)

Output Format

Present to the user:

## Vetting: [Job Title] at [Company]

**Overall: [SCORE]/100 ([LETTER GRADE]) — [RECOMMENDATION]**

| Category | Score | Notes |
|----------|-------|-------|
| Skills match | X/30 | [brief reasoning] |
| Experience match | X/15 | [brief reasoning] |
| Compensation fit | X/15 | [brief reasoning] |
| Preferences match | X/15 | [brief reasoning] |
| Red flags | X/15 | [flags found, or "none"] |
| Opportunity signal | X/10 | [brief reasoning] |

**Deal-breakers:** [None, or list violations]

**Recommendation:** Strong match / Worth applying / Stretch / Skip

**Talking Points for Application:**
- [Skill/experience that aligns strongly]
- [Skill/experience that aligns strongly]
- [Skill/experience that aligns strongly]

Letter Grades

  • A: 85-100
  • B: 70-84
  • C: 55-69
  • D: 40-54
  • F: 0-39

Recommendations

  • Strong match (A): Skills, experience, and preferences align well
  • Worth applying (B): Good fit with minor gaps
  • Stretch (C-D): Significant gaps but still potentially viable
  • Skip (F, or any deal-breaker): Poor fit or deal-breaker violation

Append to History

After vetting each job:

- YYYY-MM-DD HH:MM | scout-vet | vetted | <job-id> | "Score: <score>/<grade>, <recommendation>"

Completion

After vetting, inform the user:

"[Job Title] at [Company]: [SCORE]/100 ([RECOMMENDATION]). Run /scout-apply <job-id> to generate tailored application materials."

Weekly Installs
5
First Seen
Mar 18, 2026
Installed on
amp5
cline5
opencode5
cursor5
kimi-cli5
codex5