How to build and present a candidate shortlist
Who makes the shortlist, when to send two or four instead of three, a comparison grid you can fill in and an email script that gets the client to pick.
By the Recruiting ATS team (How we write)Published 8 min read
A shortlist has one job: let the client decide who to interview by comparing people against the brief they gave you. Picture the hiring manager opening your email on their phone between two meetings. In a couple of minutes they should know whether everyone meets what they asked for, what really separates the candidates and who you'd see first. If they have to open three attachments and email you to find out, you get "let me think about it", and your candidates take other calls while the profiles sit in an inbox.
Most of the work happens before you write anything. Who goes in, and who stays out, matters more than how the profiles look.
Deciding who makes the cut
Start from the brief, ranked
Go back to the intake notes and sort the requirements into three groups:
- Must-haves. Three to five things a candidate can't be missing. Nine must-haves is a wish list. Push back now, not after the client rejects everyone.
- Nice-to-haves. Things that break a tie.
- Practical conditions. Salary range, work mode, start date, language, work authorization, employee or contractor. They aren't skills, and they kill more processes than skills do.
Three tests before anyone goes in
- They meet every must-have, and you checked it on a call. "Led a team" on a resume can mean two interns for a summer.
- They want this role, at this range, with this client, and they agreed to be presented. A candidate who is "open to hearing more" isn't ready.
- Nothing practical blocks the hire. You know their notice period, their other processes and how they'd take a counteroffer.
Give the client a choice, not three clones
Three candidates with the same background and the same weakness don't help anyone decide. The client picks on gut feeling, or asks for more. A useful shortlist has contrast inside the must-haves: one who matches the brief closely, one with more upside and a gap the client would have to accept, one who is stronger on a nice-to-have but costs more or starts later. That trade-off is the decision you're asking the client to make, so put it where they can see it.
Who stays out
- The filler you add because three looks better than two. Clients judge a shortlist by its weakest name.
- Anyone you'd have to explain away. If you're drafting the paragraph about why the missing must-have doesn't matter, they're not ready.
- Anyone the client may already know. Ask the candidate where else they've applied. If they sent their resume to this company directly last month, or came in through another agency, the client's first reply will be about who presented them, not about an interview.
When to send two, three or four
Three is a good default: enough to compare, few enough to read properly. If you're sending a different number, tell the client before it lands and why, so two doesn't read as you running out of candidates.
| Situation | Send | Why |
|---|---|---|
| Three candidates pass all three tests | 3 | Enough contrast without handing the screening back to the client |
| Rare profile, only two truly pass | 2 | A filler third weakens the other two. Say the market is thin and what you're still working on |
| The client is in a hurry and the third candidate is a week out | 2 now, 1 later | Speed beats symmetry. Say when the third is coming |
| The brief has an open question, like specialist or team lead | 4 | Two per option lets the client answer it by choosing people |
| Your strongest candidate is in a final round elsewhere | 3, risk flagged | Don't add a fourth "just in case". Name the risk and when it resolves |
| Five or more pass | 3 or 4, ranked | The brief is probably too wide. Send the best, keep the rest warm |
Apart from the hurry case, send everyone in the same email. Profiles that trickle in over a week can't be compared. Nobody weighs today's candidate fairly against one they half remember from last Tuesday.
The comparison grid
This is the piece that does the work: brief requirements down the left, candidates across the top, evidence in every cell. "Yes: rebuilt the billing service in Go, 2022 to 2024" tells the client something. "Strong" doesn't. Copy the blank version into your own document:
| Candidate A | Candidate B | Candidate C | |
|---|---|---|---|
| Must-have 1 | |||
| Must-have 2 | |||
| Must-have 3 | |||
| Nice-to-have | |||
| Current role and company | |||
| Notice period | |||
| English level | |||
| Salary expectation | |||
| Location and work mode | |||
| Main risk (one line) | |||
| Why they're on the list (one line) |
Filled in, it can look like this. Example: a backend engineer search for a fintech client, fully remote with four hours of overlap with US Eastern time, budget of $110,000 to $130,000 a year. Names and numbers are made up.
| Ana R. | Marcus T. | Priya S. | |
|---|---|---|---|
| 5+ years of backend in Python or Go | Yes: 7 years in Python, last 3 in payments | Yes: 6 years in Go | Yes: 9 years in Python, last 2 leading a team |
| Has owned a production service with on-call | Yes: on-call lead for card processing | Yes: checkout for an online retailer | Yes: lending platform |
| Payments or lending (nice-to-have) | Yes | No | Yes |
| Notice period | 4 weeks | 2 weeks | 8 weeks |
| English level | Fluent, works daily with a US team | Native | Fluent, presents to clients weekly |
| Salary expectation | $125,000 | $115,000 | $138,000, open to discuss |
| Main risk | Final round elsewhere, decides next week | No payments background, needs ramp-up on compliance | Above budget, longest notice |
| Why they're on the list | Closest match to the brief | Fastest start, strongest hands-on engineer | Most senior, could grow into the lead role |
Nobody there is filler. The client's real decision is speed against domain experience against seniority, and the grid shows it at a glance.
A few rules for filling it in:
- Use the client's words for the must-haves, so they recognize their own brief.
- Write "No" when it's true. An honest "No" on a nice-to-have costs nothing. The client finding it in the interview costs trust.
- Every candidate gets a risk line. Naming the risk before the client finds it is what makes them believe the rest of the grid. If you can't think of one, you haven't asked enough questions.
- Language level from your own call, not from the resume. If the client works in a language that isn't the candidate's first, run part of your interview in it and write down what you heard.
- One unit for every salary: annual or monthly, base or total, one currency.
- One page. If it doesn't fit, you're writing the full submittal inside the grid. Profiles go separately.
The salary row is your call
The grid is your document. It goes in your email or as an attachment, and you decide what's in it. Some agencies include the expected salary because the client will compare on it anyway. Others write "within range" or "above range, flexible" and talk numbers on a call. Either works. Sharing a figure the candidate never agreed you could share doesn't.
Presenting it: the email
Send the shortlist in one email, all candidates at once, with your recommendation. A recruiter who won't rank their own shortlist sounds unsure of it, and you can recommend an order while still leaving the choice to the client.
Subject: [Role]: 3 candidates to review by [day]
Hi [Name],
Here are the three candidates I'd put in front of you for [role]. All three meet the must-haves we agreed on [intake date]: [must-have 1], [must-have 2] and [must-have 3]. Where they differ is [the trade-off, for example speed of start versus payments experience], and that's the call I need from you.
[Candidate A]: [one line on why they're on the list]. Watch for: [risk].
[Candidate B]: [one line]. Watch for: [risk].
[Candidate C]: [one line]. Watch for: [risk].
The comparison grid is attached, and the full profiles are [in the portal / attached].
If this were my hire, I'd meet [A] and [C] first, because [reason in one sentence]. [A] is in another process that closes on [date], so sooner is better.
Could you tell me by [day] who you'd like to interview? For anyone you'd pass on, one line on why is enough. It's the fastest way for me to sharpen the next round if we need one.
[Your name]
The email restates the must-haves, so the client compares on the differences. It names the decision, because "speed or payments experience?" is easier to answer than "what do you think?". And it asks for a reason on every no, which is how you find out the brief has quietly changed.
Walk them through it on a call
If you can, book a short call for the shortlist when you agree the timeline at intake. Don't read the grid out loud: lead with the trade-off, give your recommendation and let the client ask. Every question asked live is one you won't get by email three days later.
After you send it
If the client picks the candidate you ranked third, ask why. They're telling you something the brief didn't. If they pass on all three for the same reason, the brief has moved, and the next shortlist needs a new conversation, not more of the same profiles. For the weeks that follow, the update rhythm is in how to share candidate progress with clients.
The grid and the email are where the client compares. The profiles still need a home the hiring manager can find without searching their inbox. In the Recruiting ATS client portal, you share each shortlisted candidate on the client's job, and the client sees the profile and current stage and comments in a thread shared with your team. Current and expected salary are never shown there, which is why the salary row lives in your grid. The portal is free for your clients and doesn't use any of your seats.