| name | job-screening-skill |
| description | Profile-driven job screening workflow for Chinese-speaking candidates. Use when the user asks to create or update a candidate profile from resume text, Markdown, or PDF; generate a job screening plan; search, verify, dedupe, rank, and recommend jobs; or iterate recommendations from user feedback with commands like profile, plan, screen, and iterate. Keeps internal command/file/schema/status data in English while producing Chinese reader-facing analysis and recommendations. |
Job Screening Skill
Overview
Run a profile-driven job screening workflow for one candidate at a time.
Default behavior when no command is named: infer the user's intent first. If the request clearly maps to one step, run only that step. If the request spans the full workflow or does not clearly isolate one step, execute the first three steps as a fixed, file-backed pipeline:
profile: extract resume/preferences into a stable candidate profile and write profile.md.
plan: convert profile.md into screening rules, source strategy, verification rules, and output requirements, then write candidate_rules.md.
screen: use profile.md and candidate_rules.md to search, clean, dedupe, verify, rank, self-review, and output recommendations.
Explicit commands remain available for single-step work:
profile: extract resume/preferences into a stable candidate profile.
plan: convert the profile into screening rules, source strategy, verification rules, and output requirements.
screen: search, clean, dedupe, verify, rank, self-review, and output recommendations.
iterate: process user feedback, update rules/status, re-check similar issues, and refresh recommendations.
Use English for internal execution artifacts: commands, file names, CSV fields, enum values, script names, logs, and rule codes. Use Chinese for user-facing explanations: profile narrative, match reasons, risk notes, feedback summaries, and final recommendations.
Command Routing
- Read
commands/profile.md when the user invokes profile, provides resume content, uploads or references a PDF resume, or asks to organize a candidate profile.
- Read
commands/plan.md when the user invokes plan or asks to generate screening rules/search strategy from a profile.
- Read
commands/screen.md when the user invokes screen or asks to find, verify, filter, rank, or recommend jobs.
- Read
commands/iterate.md when the user invokes iterate or provides feedback on recommended jobs or rules.
When a short command is explicitly named, execute only that command. Do not automatically continue into later commands.
When no command is named, infer the active step from the user request:
- Route to
profile when the user mainly provides resume material, candidate preferences, or asks to整理候选人画像.
- Route to
plan when the user mainly asks for screening rules, sourcing strategy, or candidate-specific filtering logic.
- Route to
screen when the user mainly asks to search, verify, filter, rank, or recommend jobs.
- Route to
iterate when the user mainly provides feedback on prior recommendations, rejects jobs, or asks to refresh an existing result set.
- If the request clearly spans multiple steps or the step is ambiguous, run the default three-step pipeline in order:
Read
commands/profile.md, then generate or update data/candidates/{candidate_id}/profile.md from the resume, preferences, or candidate notes.
Read commands/plan.md, then generate or update data/candidates/{candidate_id}/candidate_rules.md from the just-written profile.md.
Read commands/screen.md, then use profile.md and candidate_rules.md to screen jobs, update jobs_master.csv, excluded_jobs.csv, and recommended_jobs.csv, and write runs/{run_timestamp}_recommendations.md.
The default pipeline is sequential and file-backed. Each step must complete and write its expected file before the next step starts; do not skip file generation by carrying only in-memory state forward.
Route to iterate when the user provides feedback on recommended jobs, rejects jobs, asks to change screening rules, or asks to refresh existing recommendations.
Ask a concise clarification only when the active step cannot proceed safely:
- During Step 1, if critical candidate input is missing, ask before entering Step 2.
- During Step 2, if the profile cannot produce executable screening rules, output pending questions before entering Step 3.
- During Step 3, if search or verification is limited, return fewer jobs according to
commands/screen.md quality gates rather than padding weak matches.
Workspace Contract
Use JOB_SKILLS_WORKSPACE when it is set. Otherwise, default to the current project root as the data workspace. Candidate state lives under:
<workspace>/data/candidates/{candidate_id}/
MVP candidate files:
profile.md
candidate_rules.md
jobs_master.csv
excluded_jobs.csv
recommended_jobs.csv
user_feedback_log.md
runs/
Create a readable candidate_id from the candidate name when available; otherwise use candidate_YYYYMMDD_HHMM. Do not overwrite existing candidate files unless the user explicitly asks; append a new run under runs/ for each screening or iteration.
Tools
Use tools from tools/ for deterministic work:
extract_pdf_text.py: extract text from PDF resumes before profile analysis, with local PII redaction enabled by default so names, phones, emails, contact links, and school names do not need to be sent to the agent.
check_links.py: check direct job URL health, final URL, visible JD/apply signals, and status enums.
dedupe_jobs.py: normalize titles/URLs, query CSV/TSV history, and append dedupe-safe rows.
ats_extract.py: optionally extract basic public job metadata from common ATS pages.
Scripts are aids, not final judgment. The agent still owns candidate fact extraction, role-fit reasoning, eligibility judgment, Chinese explanations, and final recommendation quality.
Shared References
Load only the files needed for the active command:
- Screening defaults:
modules/screening_rules.md
- JD verification:
modules/job_verification.md
- Chinese output rules:
modules/output_formatter.md
- Required self-review:
modules/self_review.md
- Feedback handling:
modules/feedback_iteration.md
- Data fields and enums:
schemas/*.md
- Output skeletons:
templates/*.md
Quality Gates
- Never fabricate resume facts, language level, salary, location preference, work authorization, tool experience, or job eligibility.
- Mark missing candidate facts as
未提供 / 待确认.
- When a resume comes from PDF, use the local redaction path by default and only disable it if the user explicitly asks to retain original PII.
- Reject broken links, closed jobs, no-JD links, clear location mismatch, clear work-authorization mismatch, and user-rejected jobs; do not rescue hard failures with scoring.
- Prefer company careers and ATS links. Use LinkedIn, domestic job platforms, or third-party pages for discovery or backup only, and explain risk in Chinese if no official link is found.
- Run the self-review checklist from
modules/self_review.md before final screen and iterate outputs.
- Return fewer jobs rather than padding with weak, unverifiable, duplicate, or risky matches.