Hiring Pipeline Reviewer
Generates a structured weekly status report for all candidates in a hiring pipeline from the hiring manager's interview notes and evaluation sheets. Flags stuck candidates, consolidates scores, recommends next steps, and optionally drafts a recruiter update.
Input:
- Interview notes and/or evaluation sheets (plain text, .md, or .txt; one block or multiple files)
- Optional: position title, hiring criteria, cutoff date for "stuck" flag (default: 5 days)
Output:
- Candidate status table with stage, last action, score, next step, and flags
- Flags section (stuck candidates, missing data)
- Recommendations section (advance / decline / decision needed)
- Optional recruiter update narrative (2–4 sentences)
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Collect Input
Check what the user already provided in their trigger message:
- Interview notes or evaluation text included → extract it
- Position title mentioned → extract it
- Hiring criteria mentioned → extract them
If no notes or evaluation data were provided, ask the user to paste them. Do not proceed without input data.
Accept any of these input formats:
- Plain text pasted directly in chat
- Single block of notes covering multiple candidates
- Separate text blocks per candidate (labeled or unlabeled)
Step 2: Extract Candidate Records
Parse the input to identify individual candidates:
- Look for names, initials, or role labels (e.g., "Candidate 1", "Alex M.", "Senior iOS Dev")
- Use date markers, section separators, or explicit labels as candidate boundaries
For each identified candidate, extract:
- Name / identifier (use provided name; if ambiguous, assign [Candidate A], [Candidate B])
- Stage (e.g., Applied, Phone Screen, Interview 1, Interview 2, Offer, Declined)
- Last action date (most recent note or evaluation date; mark as
— if absent)
- Score or evaluation summary (numeric if present; narrative summary if not)
- Key strengths (up to 2 phrases)
- Key concerns (up to 2 phrases)
- Stated next step (if mentioned in notes; otherwise
—)
Handle unsegmented input:
- If notes are one continuous block with no clear candidate separation, attempt segmentation by names, interview dates, or role references
- Mark any fragments that couldn't be attributed to a specific candidate as
[unresolved] and list them after the table
Edge Cases:
- Two candidates share the same name or only initials are given → assign unique labels ([Candidate A], [Candidate B]); note ambiguity in a footnote
- A candidate has notes from multiple interviewers → merge into a single record; list unique concerns from each reviewer
- Notes mention a candidate by first name only and context is unclear → use provided name, mark as
[first name only]
Step 3: Detect Stuck Candidates
For each candidate, calculate days since last action:
- If last action date is known: compare to today's date
- Default "stuck" threshold: 5 days of inactivity without a defined next step
- If user specified a different threshold in input: use that value
Flag candidate as ⚠ stuck if:
- Days since last action ≥ threshold AND
- Next step field is empty (
—) or undefined
Flag candidate as ❓ incomplete if:
- Stage is unknown, OR
- No evaluation score or notes are available
Step 4: Build Status Table
Compile a candidate status table with these columns:
| Candidate |
Stage |
Last Action |
Score |
Next Step |
Flag |
- Candidate: name or assigned label
- Stage: current pipeline stage
- Last Action: date in YYYY-MM-DD format (or
—)
- Score: numeric (e.g., 4/5) or qualitative (Strong / Adequate / Weak) or
—
- Next Step: specific action (e.g., "Schedule interview 2", "Send offer", "Decline") or
—
- Flag:
⚠ stuck, ❓ incomplete, or —
Step 5: Generate Flags Section
List all flagged candidates with brief explanation:
⚠ [Name] — stuck since [date], no next step defined
❓ [Name] — missing evaluation data / stage unknown
[unresolved] — notes fragment not matched to a candidate (if applicable)
If no flags, write: "No flags. All candidates have defined next steps."
Step 6: Generate Recommendations
Provide a concrete recommendation for each candidate in one of three categories:
- Advance: candidate meets criteria, recommend moving to next stage
- Decline: candidate does not meet criteria, recommend rejection
- Decision needed: team is split, evaluation is incomplete, or additional information is required before a decision
Format:
- Advance: [Name] — [1-sentence reason]
- Decline: [Name] — [1-sentence reason]
- Decision needed: [Name] — [1-sentence reason or what's missing]
Do not generate generic recommendations ("consider"). Every recommendation must be actionable.
Step 7: Draft Recruiter Update (Optional)
After presenting the main output, ask:
"Would you like a brief recruiter update (2–4 sentences summarizing pipeline status)?"
If yes: generate a concise narrative covering:
- Total candidates in pipeline
- How many are active vs. stuck
- Immediate actions required (offers to extend, interviews to schedule)
Negative Cases
- No input data provided: Stop. Return: "Paste your interview notes or evaluation sheets to generate the pipeline review."
- Input looks like resumes instead of interview notes: Warn: "This appears to be a resume or candidate profile, not interview notes. This skill works with hiring manager's notes and evaluation sheets. Do you want to continue with this data?"
- Only candidate names provided, no notes or stages: Generate table with names only; flag all as
❓ incomplete; note that no evaluation data was provided.
Output Format
## Hiring Pipeline Status — [Position or "Hiring Pipeline"] — [Date]
### Candidate Table
| Candidate | Stage | Last Action | Score | Next Step | Flag |
|-----------|-------|-------------|-------|-----------|------|
| [Name] | Interview 2 | 2026-04-14 | 4/5 | Send offer | — |
| [Name] | Phone screen | 2026-04-10 | 3/5 | Schedule interview | ⚠ stuck |
| [Name] | Applied | — | — | Review application | ❓ incomplete |
### Flags
- ⚠ [Name] — stuck since [date], no next step defined
- ❓ [Name] — missing evaluation data
### Recommendations
- Advance: [Name] — strong match on all criteria
- Decline: [Name] — [specific misalignment]
- Decision needed: [Name] — team is split; recommend sync before proceeding
### Recruiter Update (optional)
[2–4 sentence summary of pipeline status for the recruiter]
1---2name: hiring-pipeline-reviewer3description: Generate a structured weekly status report for all candidates in your hiring pipeline from interview notes and evaluation sheets. Flags stuck candidates, summarizes scores, and recommends next steps. Use when reviewing hiring pipeline, preparing for recruiter sync, or deciding next steps on candidates. Triggers: 'review hiring pipeline', 'hiring pipeline status', 'статус по кандидатам', 'ревью пайплайна найма'.4---56# Hiring Pipeline Reviewer78Generates a structured weekly status report for all candidates in a hiring pipeline from the hiring manager's interview notes and evaluation sheets. Flags stuck candidates, consolidates scores, recommends next steps, and optionally drafts a recruiter update.910**Input:**11- Interview notes and/or evaluation sheets (plain text, .md, or .txt; one block or multiple files)12- Optional: position title, hiring criteria, cutoff date for "stuck" flag (default: 5 days)1314**Output:**15- Candidate status table with stage, last action, score, next step, and flags16- Flags section (stuck candidates, missing data)17- Recommendations section (advance / decline / decision needed)18- Optional recruiter update narrative (2–4 sentences)1920---2122## Language Detection2324Detect the user's language from their message:25- If Russian (or contains Cyrillic): respond in Russian26- If English (or other Latin-script language): respond in English27- If ambiguous: respond in the language of the trigger phrase used2829---3031## Instructions3233### Step 1: Collect Input34351. Check what the user already provided in their trigger message:36 - Interview notes or evaluation text included → extract it37 - Position title mentioned → extract it38 - Hiring criteria mentioned → extract them39402. If no notes or evaluation data were provided, ask the user to paste them. Do not proceed without input data.41423. Accept any of these input formats:43 - Plain text pasted directly in chat44 - Single block of notes covering multiple candidates45 - Separate text blocks per candidate (labeled or unlabeled)4647### Step 2: Extract Candidate Records48491. Parse the input to identify individual candidates:50 - Look for names, initials, or role labels (e.g., "Candidate 1", "Alex M.", "Senior iOS Dev")51 - Use date markers, section separators, or explicit labels as candidate boundaries52532. For each identified candidate, extract:54 - **Name / identifier** (use provided name; if ambiguous, assign [Candidate A], [Candidate B])55 - **Stage** (e.g., Applied, Phone Screen, Interview 1, Interview 2, Offer, Declined)56 - **Last action date** (most recent note or evaluation date; mark as `—` if absent)57 - **Score or evaluation summary** (numeric if present; narrative summary if not)58 - **Key strengths** (up to 2 phrases)59 - **Key concerns** (up to 2 phrases)60 - **Stated next step** (if mentioned in notes; otherwise `—`)61623. Handle unsegmented input:63 - If notes are one continuous block with no clear candidate separation, attempt segmentation by names, interview dates, or role references64 - Mark any fragments that couldn't be attributed to a specific candidate as `[unresolved]` and list them after the table6566**Edge Cases:**67- Two candidates share the same name or only initials are given → assign unique labels ([Candidate A], [Candidate B]); note ambiguity in a footnote68- A candidate has notes from multiple interviewers → merge into a single record; list unique concerns from each reviewer69- Notes mention a candidate by first name only and context is unclear → use provided name, mark as `[first name only]`7071### Step 3: Detect Stuck Candidates72731. For each candidate, calculate days since last action:74 - If last action date is known: compare to today's date75 - Default "stuck" threshold: 5 days of inactivity without a defined next step76 - If user specified a different threshold in input: use that value77782. Flag candidate as `⚠ stuck` if:79 - Days since last action ≥ threshold AND80 - Next step field is empty (`—`) or undefined81823. Flag candidate as `❓ incomplete` if:83 - Stage is unknown, OR84 - No evaluation score or notes are available8586### Step 4: Build Status Table8788Compile a candidate status table with these columns:8990| Candidate | Stage | Last Action | Score | Next Step | Flag |91|-----------|-------|-------------|-------|-----------|------|9293- **Candidate**: name or assigned label94- **Stage**: current pipeline stage95- **Last Action**: date in YYYY-MM-DD format (or `—`)96- **Score**: numeric (e.g., 4/5) or qualitative (Strong / Adequate / Weak) or `—`97- **Next Step**: specific action (e.g., "Schedule interview 2", "Send offer", "Decline") or `—`98- **Flag**: `⚠ stuck`, `❓ incomplete`, or `—`99100### Step 5: Generate Flags Section101102List all flagged candidates with brief explanation:103104- `⚠ [Name]` — stuck since [date], no next step defined105- `❓ [Name]` — missing evaluation data / stage unknown106- `[unresolved]` — notes fragment not matched to a candidate (if applicable)107108If no flags, write: "No flags. All candidates have defined next steps."109110### Step 6: Generate Recommendations111112Provide a concrete recommendation for each candidate in one of three categories:113114- **Advance**: candidate meets criteria, recommend moving to next stage115- **Decline**: candidate does not meet criteria, recommend rejection116- **Decision needed**: team is split, evaluation is incomplete, or additional information is required before a decision117118Format:119```120- Advance: [Name] — [1-sentence reason]121- Decline: [Name] — [1-sentence reason]122- Decision needed: [Name] — [1-sentence reason or what's missing]123```124125Do not generate generic recommendations ("consider"). Every recommendation must be actionable.126127### Step 7: Draft Recruiter Update (Optional)1281291. After presenting the main output, ask:130 > "Would you like a brief recruiter update (2–4 sentences summarizing pipeline status)?"1311322. If yes: generate a concise narrative covering:133 - Total candidates in pipeline134 - How many are active vs. stuck135 - Immediate actions required (offers to extend, interviews to schedule)136137---138139## Negative Cases140141- **No input data provided:** Stop. Return: "Paste your interview notes or evaluation sheets to generate the pipeline review."142- **Input looks like resumes instead of interview notes:** Warn: "This appears to be a resume or candidate profile, not interview notes. This skill works with hiring manager's notes and evaluation sheets. Do you want to continue with this data?"143- **Only candidate names provided, no notes or stages:** Generate table with names only; flag all as `❓ incomplete`; note that no evaluation data was provided.144145---146147## Output Format148149```markdown150## Hiring Pipeline Status — [Position or "Hiring Pipeline"] — [Date]151152### Candidate Table153154| Candidate | Stage | Last Action | Score | Next Step | Flag |155|-----------|-------|-------------|-------|-----------|------|156| [Name] | Interview 2 | 2026-04-14 | 4/5 | Send offer | — |157| [Name] | Phone screen | 2026-04-10 | 3/5 | Schedule interview | ⚠ stuck |158| [Name] | Applied | — | — | Review application | ❓ incomplete |159160### Flags161- ⚠ [Name] — stuck since [date], no next step defined162- ❓ [Name] — missing evaluation data163164### Recommendations165- Advance: [Name] — strong match on all criteria166- Decline: [Name] — [specific misalignment]167- Decision needed: [Name] — team is split; recommend sync before proceeding168169### Recruiter Update (optional)170[2–4 sentence summary of pipeline status for the recruiter]171```