# Revive past Breezy HR candidates who almost got the job

> Search every past applicant who reached interview or offer but was not hired, then add the best fits to your new role and email them.

- Workflow type: app
- Services: Breezy HR, Gmail
- Categories: HR & People
- Published: 2026-08-14

## What it does

- Builds a searchable pool of your past applicants from closed and archived roles, so every new opening starts with people you already know something about
- Filters for the near misses that matter: how far someone got, their star rating, and keyword matches against their work history and education
- Shows an old profile side by side with the interview feedback and notes your team left the first time around, so you know why they missed out before you reach out
- Adds the right people to your open role in one click, checks for duplicates first, and drafts a personal re-engagement email that you approve before anything sends

## What you'll need

- A Breezy HR account that can see your closed and archived roles, not just the open ones
- A Gmail account for sending the re-engagement emails
- Some hiring history already in Breezy HR, since the talent pool is built from the candidates in your past roles

## Prompt

I want a talent rediscovery app on top of Breezy HR so I can revive strong past candidates instead of sourcing every new role from scratch. Recruiters and sourcers open this at the start of every new req. The motion it supports is the silver medalist search: the people who reached interview or offer on an old role and were not hired are usually the fastest pipeline for the role I am opening today.

When the app opens, it asks which role I am hiring for. Use List Positions in Breezy HR with the state filter set to currently open roles and show them as the first choice. The selected role stays pinned at the top of the app for the whole session, because every action later on (adding a candidate, drafting outreach) targets that role. Look up the company id once when the app loads, since every Breezy call is scoped to a company.

Next comes the talent pool. Breezy has no global candidate search by keyword, so the pool has to be assembled by walking positions. Call List Positions again with the state filter to collect archived and closed roles, then call List Candidates for Position for each of those roles to gather every past applicant. Enrich each candidate with Get Candidate for their work history, education and contact details, and Get Candidate Meta for their rating, shortlist flag and disqualified flag. That is a lot of calls, so build the pool in a server handler that caches the assembled result, show a clear progress state while it builds, and give me a refresh button to rebuild it on demand rather than refetching on every keystroke.

The filter bar is the heart of the app and it should mirror how a recruiter actually thinks about near misses. Filter one: how far someone got, so I can isolate the candidates who reached interview or offer but were not hired, using the stage on their old record plus the disqualified and shortlist flags from Get Candidate Meta. Filter two: star rating, as a minimum threshold. Filter three: a keyword match run against work history and education text, so searching a skill, a job title or a company name surfaces the past applicants who fit the new role. All filtering happens client side over the pool that was already assembled. Show results as a scannable table with name, the old role they applied to, the stage they reached, their rating, and a short snippet of the work history that matched my keyword.

Selecting a candidate opens a detail view that puts their old profile next to the history of how they were assessed. Show the full profile from Get Candidate, the rating from Get Candidate Meta, and the prior scorecard feedback, stage changes and recruiter notes pulled from Get Candidate Stream. I need to read why they did not get the job last time before I decide to reach out, so make the scorecard feedback and notes prominent rather than buried.

The detail view has two actions. The first is a button that adds the candidate to the open role I picked at the start, using Add Candidate to Position. Before it writes anything, run Search Candidates by Email with that candidate's email address so nobody ends up duplicated. If they already exist on the target role, say so plainly and disable the add button. Otherwise create them on the position, carrying over the profile details from the old record so their work history and education come with them, and confirm inline once it succeeds.

The second button drafts a personalized re-engagement email. Write it from the candidate's profile and their prior feedback, and make it reference the specific role they previously interviewed for, roughly how long ago it was, and why this new opening is a fit for them. Create it in Gmail with Create a Draft, using a base64url encoded RFC 2822 message. Show me the subject and body in an editable panel first. Nothing sends on its own: a separate send button on the reviewed draft calls Send a Draft. Re-engagement copy should be warm and specific to one person, never a mass mail blast, so let me edit the wording before either step.

One more piece of behaviour: keep a record of which past candidates I have already added to a role or emailed from this app, and surface that on their row and detail view. When I open a different req next month I do not want to re-contact the same person who just heard from me, and I do want to see at a glance who I already pulled forward.

## How to customize

- Change what counts as a near miss, for example widening it to everyone who reached a phone screen rather than only interview and offer
- Set the minimum star rating the pool starts with, so the first screen is only your strongest past candidates
- Rewrite the tone and length of the re-engagement email, or have it always name the person who ran the original interview

## FAQ

### Does this work if my old roles are archived or closed?

Yes, and that is the whole point. The app deliberately looks at archived and closed roles, because that is where the strong candidates you did not hire are sitting. Your open roles are only used as the destination you add people to.

### Will it create duplicate candidate records?

No. Before adding anyone to your open role, the app searches your account for that person's email address. If they are already on the role, it tells you and turns the add button off instead of creating a second record.

### Does it email past candidates automatically?

No. Every re-engagement email is written for one person and lands in your Gmail drafts first. You read it, edit anything you want, and press send yourself. Nothing goes out without you.

### How far back does the talent pool go?

As far back as your account holds. The app gathers candidates from every closed and archived role it can see, so a long hiring history simply gives you a deeper pool to search.

### Can I use it for more than one open role?

Yes. You pick which open role you are hiring for when you start, and you can switch to a different one at any time. The pool of past candidates stays the same, only the destination changes.

### Why does it take a moment to load the first time?

Your past applicants live under individual roles rather than in one big searchable list, so the app gathers them role by role and then keeps the result ready. After that first build, searching and filtering is instant, and there is a refresh button when you want fresh data.

Use this prompt in General Input: https://www.generalinput.com/prompts/revive-past-breezy-hr-candidates-who-almost-got-the-job