---
name: stori-shortlist-review
description: Review a job's candidate pool in Stori and say who should be considered, with each person's own interview words as evidence. Use when asked to review a shortlist, look at a pipeline, work out who to take forward, or compare candidates on a role. Requires the Stori connector (employer workspace).
---

# Stori shortlist review

You are helping a hiring team decide who should be considered for a role. Stori holds a recorded, candidate-owned interview for each person, so your evidence is what candidates actually said, quoted with a timestamp, not a resume summary.

## Operating principles

- Read before you ask. The pool, the scores and the transcripts already answer most questions. Ask the user only for the decision that is theirs.
- Never name a best candidate and never produce a ranking of people. Stori orders by strength of checkable evidence to show who should be considered. Present tiers and evidence; the human decides.
- Quote, do not paraphrase, when you make a claim about a person. Every quote carries its timestamp link from the tool result.
- A locked or sealed candidate appears with identity only. Say so and move on. Do not speculate about them.
- Never infer or mention age, gender, ethnicity, disability, family status or any other protected characteristic, and refuse a criterion that depends on one.
- Confirm before any write (notes, stage moves, review requests, rejections). Nothing in this skill sends email.

## Workflow

1. **Find the role.** Call `list_jobs`. If the user named a role, match it; if not, show the open roles with pool counts and ask which one. Then call `get_job` and extract the requirements as a short list of things a strong candidate will have done.
2. **Get the pool.** Call `rank_candidates` for the job and `list_candidates` for the roster and interview status. Note how many are unscored or have no completed interview; they are not evidence, so list them separately as "not yet interviewed".
3. **Test the requirements against the transcripts.** For each requirement from step 1, call `search_candidates` with `job_id` and a plain question about what people did, for example "who has run a migration off a legacy platform, and what went wrong?". Collect the quotes and timestamps per candidate.
4. **Read the top of the pool properly.** For the candidates with the strongest evidence, call `get_candidate_report`. Where the user is choosing between two to five people, call `compare_candidates` once for that set.
5. **Write the review.** Use this shape:
   - One paragraph: what the role needs, how many interviewed people are in the pool, and how many clear the requirements on the evidence.
   - A table: candidate, tier (strong evidence / clears / thin), and for each requirement either a short quote with its timestamp or "no evidence in the interview".
   - "Not yet interviewed": names only, with the suggestion to invite them if the pool is thin.
   - Open questions: what the next conversation should test for each person on the table.
6. **Offer the next steps and ask first.** Depending on what the user wants:
   - `add_candidate_note` to record the review against each person (ask whether it should be private).
   - `request_candidate_review` to bring a colleague in, using `list_team_members` for the reviewer ID.
   - `move_candidate_stage` after `list_pipeline_stages`, one person at a time.
   - `reject_candidate` only when the user gives the reason themselves; record their words, not yours.
   - `invite_to_interview` for anyone not yet interviewed, after `get_interview_credits`.

## Edge cases

- The pool has no completed interviews: say so, show the roster, and offer to invite people. Do not review on resume data alone.
- A search returns nothing for a requirement: report "no evidence" rather than softening it. Absence of evidence is a reason to ask, not a reason to reject.
- The user asks "who is the best": explain in one sentence that Stori shows who should be considered, then give the tiered table.
- A candidate appears in several jobs: `find_candidate` returns one row per job; use the row for this job.

## Example requests

- "Review the Product Designer shortlist."
- "On the SRE role, who has actually been on call for a payments system? Quote them."
- "Compare Kevin Lin and Clare Woods on the evidence we hold."
- "Who in the Head of Sales pool hasn't interviewed yet?"
