← all playbooks
Sourcing

Find the candidates already sitting in your own ATS

A ranked shortlist drawn from candidates you already own, scored on their full history with you, including interview outcomes and roles they were shortlisted for before.

use when
a role comes in and you want to know who you already have before you pay to source anyone new

The prompt

Paste it into Claude Code or the Claude desktop app with Hyreflow connected. The first line loads the recruiting skill, so your agent reads the play, asks before it spends anything, and hands the work back to you.

paste this into Claude
/hyreflow-recruit

A new role has come in: <ROLE_TITLE> at <CLIENT_COMPANY> in <LOCATION>.

<PASTE THE SPEC, OR GIVE ME THE JOB ID IN THE ATS>

Before we source anything new, go through my own database.

- Prefilter using my ATS's own fields, the skill tags and custom fields I
  actually use, not just a keyword search.
- Longlist broadly on location and every sensible variation of the title.
  I would rather review too many than miss someone.
- For each person, pull the context I already hold: their CV, my notes,
  past applications, interviews they sat and what came of them, and the
  roles I have put them forward for before.
- Score them against this spec using all of that history, not just their
  profile. Someone who reached final stage on a similar role last year
  should rank above a stranger with the same title.

Show me the top <N> with the reasoning, and flag anyone I should not
approach again and why.

Replace every <PLACEHOLDER> with your own detail. Everything else can stay as written.

What you need first

  • A connected ATS or recruitment CRM
  • The job, either already in your ATS or as a spec you can paste

Tools it can reach for

The agent picks per step from what your workspace has. Nothing here is required by name.

What happens when you run it

Free steps are marked free. Anything that spends credits is marked, and the agent asks before the first paid run of any size.

  1. 1

    Resolve the job

    free

    Either read the job straight out of your ATS, or parse the spec you pasted into the same shape so both routes score identically.

  2. 2

    Prefilter on your own taxonomy

    free

    This is the step a keyword search cannot do. Your skill tags, custom fields and categories are the structure you have already built by hand, and filtering on them is far more precise than matching words in a CV.

  3. 3

    Longlist wide

    free

    Location and every reasonable variant of the title, deliberately generous. Cutting down happens on evidence later, not on a job-title string here.

  4. 4

    Pull everything you already know

    free

    CVs and attachments, your notes, past applications and placements, interviews and their outcomes, and which roles this person was shortlisted for before. All of it is a read from your own system.

  5. 5

    Score on the relationship, not just the profile

    free

    The history is what makes an internal match different from a cold one. Prior interview outcomes, previous near-misses and recorded preferences move the score up or down in ways a profile never could.

  6. 6

    Deliver, and flag the do-not-approach cases

    free

    A ranked shortlist with reasoning, plus anyone your own records say should be left alone: placed recently, off-limits, or asked not to be contacted.

The database you already paid for

Every recruitment business is sitting on thousands of candidates it sourced, screened, interviewed and never placed. That data has already been paid for twice, once in credits and once in consultant hours. It gets searched by keyword when someone remembers to, and otherwise it decays.

The reason it decays is not laziness. Searching it properly means reading notes, checking why someone did not get the last role, and remembering what they said about location. That is a slow job and nobody has the time on the day a live role lands.

That is the job this play does. It is nearly all free, because it is your own data, and it runs before you spend anything on the open market.

What makes an internal match different

A cold profile tells you what someone claims to do now. Your own record tells you what happened when you put them in front of a client. Someone who reached final stage on a comparable role and lost on one specific gap is a stronger candidate for the next comparable role than a stranger with a better-looking title, and the reason is written in your notes.

That is the whole argument for scoring on history rather than on the profile alone.

What you get back

A ranked shortlist of your own candidates, with the reasoning showing which parts of the history moved the score. Alongside it, the exclusions: anyone recently placed, anyone flagged off-limits, anyone who asked not to be contacted. Those are found in your own records rather than discovered by embarrassment.

Where this goes wrong

Stale contact details. A candidate from three years ago has probably moved. Their record is still worth matching on, but their phone number is not. Re-enrich the ones you actually want to call, which is a small paid step on a small number of people.

Custom fields nobody fills in. The prefilter is only as good as the discipline behind it. If half your records have empty skill tags, the play falls back to a wider longlist and tells you so, which is also a useful signal about your own data hygiene.

Protected attributes in custom fields. Some systems have fields that should never touch a shortlisting decision. They are not scored on, regardless of what the prompt says or what the field is called.

Questions

Why is almost every step free?

Because it is all reading your own data. Reads against a connected ATS or CRM run on the seat you already pay for, so there is no Hyreflow credit charge for them. The only thing that costs is judgement at very large scale. This is the cheapest sourcing you can do, which is exactly why it should run before anything else.

How is this different from searching my ATS the normal way?

Your ATS search matches strings. It cannot weigh the fact that someone got to final interview on a near-identical role eight months ago, or that your colleague's note from last spring says they will only move for a hybrid arrangement. The scoring here reads that history as evidence, which is how a good consultant would work the database and why database search usually gets abandoned.

My ATS does not support custom-field filtering. Does this still work?

Yes, with a wider longlist. Where a system exposes no structured filter, the play falls back to filtering on the free text and tags it can read, which is looser and pulls more rows. It says which route it took rather than quietly pretending the precise filter ran.

Can I run this and net-new sourcing together?

Yes, and you usually should. They are combinable rather than alternatives: the internal match tells you what you already own, the external search fills the gaps. Rows stay labelled by origin so a candidate you have a relationship with is never mistaken for a cold one.

Will it write anything back to my ATS?

Not unless you ask. This play reads and ranks. Adding candidates to a pipeline or writing a note is a separate action that is confirmed with you first, because it lands in a live system your colleagues are working in.