Candidate shortlister
Open-source AI skill that shortlists a batch of CVs against a job description and returns a ready-to-send shortlist.
npx -y skills add bitesizetalent/candidate-shortlisterAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Shortlist a batch of candidates against one role. Use this skill whenever someone has a folder of CVs/profiles (a LinkedIn Recruiter export, an ATS download, email attachments — any format) and a job description, and wants the closest-matching candidates surfaced as a ready-to-send message for a hiring manager. Triggers on phrases like "shortlist these candidates", "who's the best match for this role", "screen this batch against the JD", "top candidates from this folder", or "put together a shortlist for the hiring manager". The recruiter can also supply notes on what matters most in the search; the skill weights the ranking accordingly and explains its reasoning. Does not contact candidates, does not store data, and does not move files.
SKILL.md
7.1 KB, as published. Nobody here has run it
Candidate Shortlister
Turn a folder of candidate CVs plus a job description into an honest, ranked, ready-to-send shortlist. Built for recruiters who pull a batch of profiles and need to hand a hiring manager the two or three best — with the reasoning attached.
What you need before running
- A folder of candidate files. Any source (LinkedIn Recruiter export, ATS download, email attachments), any format (PDF, docx, txt). Point the skill at the folder path.
- A job description. A file or pasted text.
- Recruiter priority notes (strongly encouraged). A few sentences on how you're approaching the search: which requirements matter most, which can flex, and what your bar for "hireable" is. This is what makes the shortlist yours rather than a generic keyword match. If you don't provide notes, the skill weights all stated requirements evenly and says so.
The user can state any of these up front — otherwise the skill asks before it writes the final message (see step 5):
- How many to present — defaults to the top 3.
- Output channel — Slack, Teams, or email.
- CSV export — an optional CSV of the full scored table.
Workflow
1. Parse the role
Read the job description and extract the requirements: must-haves, nice-to-haves, seniority level, and any hard constraints (location, clearance, etc.). If the recruiter supplied priority notes, use them to weight these requirements — their stated priorities override naive equal weighting. Restate the search approach back in one sentence so the reasoning is explicit and auditable.
2. Read every candidate
Read each file in the folder. Extract, per candidate: name, current/most recent role and level, relevant skills and domains, years of relevant experience, and anything that speaks to the weighted requirements. Handle each file independently — one unreadable file must not stop the batch.
3. Score against the weighted requirements
Score each candidate on fit to the weighted requirements, not keyword overlap. For each, record: a match score, the strengths that matter for this role, and the gaps. Judge seniority honestly — a strong profile one level too junior is a gap, not a match.
4. Rank and decide
Rank all candidates by their weighted score, then apply the bar test.
What clearing the bar means. A candidate clears the bar when their overall weighted fit is ≥ 7/10 — they cover most of what matters, with only nice-to-have or flexible gaps left.
Must-haves carry a heavy penalty. Missing a requirement flagged as fundamental (what the recruiter's notes call essential, or what the JD lists as required/must-have) is a big hit to the score — usually enough to drop a candidate below the bar. But an otherwise exceptional profile can still clear 7/10 despite a missing fundamental. When that happens, always flag the missing must-have explicitly in that candidate's rationale, so the recruiter sees the trade-off and makes the call — the tool never hides a fundamental gap.
Nice-to-haves and any pillar the recruiter marked as flexible can be gaps without denting the score much. The recruiter can move the 7/10 threshold or change how harshly must-haves are penalised in their notes (e.g. "bar is high — only near-perfect profiles", or "cast wide, I'll filter myself").
Then:
- If one or more candidates clear the bar: take the top N (default 3).
- If no candidate clears the bar: say so plainly. Do not force names forward. Explain what's missing across the batch and, if useful, name the closest-but-not-there candidate with the specific gap that holds them back. An honest "nobody here meets the bar" is a valid and valuable output.
5. Confirm delivery preferences
Before writing the final message, confirm how the recruiter wants it delivered — unless they already said in their request. Ask in this order:
- Which channel? Slack, Teams, or email.
- Also want a CSV? Offer a CSV export of the full scored table alongside the message. Only produce the CSV if they say yes.
Keep these to one short prompt; don't interrogate. If the recruiter already specified channel and/or CSV up front, skip straight to producing the outputs.
6. Produce the outputs
A — Shareable shortlist message (the headline deliverable), formatted for the chosen channel:
- Open with the recruiter's one-sentence search approach ("Here's how I approached this and why").
- List the top candidates, each with a one-to-two-sentence rationale — why they're here and any caveat.
- Close with a short summary line.
Channel formatting:
- slack / teams — concise chat register, light formatting, no salutation.
- email — add a subject line, a greeting, and slightly more formal framing.
If nobody clears the bar, the message says that directly and explains why, instead of listing candidates.
B — Shortlist table (audit trail): every candidate scored, shown as a markdown table with columns for name, score, key strengths, and key gaps. This is the record of who was considered and why, so a decision can be defended later. If the recruiter asked for a CSV in step 5, also write the same table out as a CSV file.
Guardrails — what this skill must never do
- No candidate outreach. Never contact, message, or draft outreach to candidates. This skill shortlists only.
- No data persistence. Read files locally and write outputs locally. Never store, upload, or transmit candidate data anywhere. Treat every profile as confidential personal data.
- No file reorganisation. Never move, rename, copy, or delete the candidate files. Read-only on the source folder.
Example
Request: "Shortlist the profiles in my candidate folder against this JD. Notes: three pillars in the spec — of them, data platform and cloud architecture matter most and overlap heavily; the ML pillar could sit with someone a level more junior, so don't over-weight it. Present the top 2."
Result: The skill weights data-platform and cloud-architecture fit highest, treats ML depth as a nice-to-have, ranks the batch, and applies the bar test. It then asks which channel to format for and whether a CSV is wanted, and returns a message opening with that one-sentence approach, two candidates each with a one-line rationale, and a closing summary — plus a scored table of everyone considered.