Weekly
Find candidates stuck in your Lever pipeline
Every Monday you get a list of active candidates with no activity in the last two weeks.
- Runs
- Weekly
- Apps
- Lever
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every Monday at 9am, email me the active Lever candidates with no interaction in the last 14 days, with their current stage and owner.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Every recruiting team has them: candidates who sat in Phone Screen for six weeks because a scheduling email was never answered, or applicants who were never rejected and still think they are under consideration. Lever shows them only if someone sorts by last activity. Stuck candidates hurt the employer brand, clutter reports and hide the real number of active opportunities.
Each week, ClickRuntime lists the active opportunities in Lever, checks the last interaction date on each one, and emails you the ones that have gone quiet for longer than the limit you set. The list gives the candidate, the role, the stage and how long the opportunity has been idle, so a quick decision can be made on each.
Recruiting leads can use it as a Friday cleanup routine. Running it weekly keeps each cleanup small enough to finish in one sitting.
What you get out of it
Candidates get an answer
Someone who applied a month ago and heard nothing remembers it. A prompt rejection or a follow-up is respectful and protects the way people talk about your company. Candidates who hear back, even with a no, think better of you.
Good candidates are not forgotten
Sometimes a strong person got stuck because of a missed hand-off. The weekly list gives them a second chance to be seen before they accept another offer. Sometimes a short note is all it takes to bring them back.
Pipeline numbers become honest
A pipeline full of dead opportunities makes hiring look healthier than it is. Cleaning it up gives leadership real figures on how many candidates are in play. Leadership then plans from numbers that mean something.
Slow stages are identified
If many candidates stall in the same stage, such as a take-home assessment, the list points to a process problem you can fix, rather than blaming individual recruiters. Fixing one slow step helps every future candidate.
Cleanup stops being a big project
A few minutes each week prevents the large quarterly pipeline purge that nobody has time for. The list arrives on its own, so the habit does not depend on someone remembering.
How it works
What happens, step by step
Every Monday, ClickRuntime lists the active candidates in your Lever pipeline.
It checks when each one was last touched.
You get an email listing everyone with no activity in the last 14 days, with their stage, owner and last activity date.
Before it runs live
- Connect Lever
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Lever steps into one automation
Under the hood
The code that runs this automation
import time
from clickruntime import on_trigger, credentials, http, notify
@on_trigger
def run(event):
cutoff = (time.time() - 14 * 86400) * 1000
auth = (credentials.secret("LEVER_API_KEY"), "")
stale, offset = [], None
while True:
params = {"archived": "false", "expand": ["stage", "owner"], "limit": 100}
if offset:
params["offset"] = offset
page = http.get("https://api.lever.co/v1/opportunities", auth=auth, params=params).json()
stale += [o for o in page["data"] if o["lastInteractionAt"] < cutoff]
if not page.get("hasNext"):
break
offset = page["next"]
lines = [f"{o['name']} - {o['stage']['text']}, owner {(o.get('owner') or {}).get('name', 'none')}, "
f"last touched {time.strftime('%Y-%m-%d', time.gmtime(o['lastInteractionAt'] / 1000))}" for o in stale]
notify.email_me(f"{len(stale)} Lever candidates idle for 14+ days", "\n".join(lines) or "None")
return {"stale": len(stale)}FAQ
Common questions
How long counts as stale?
Does it include archived candidates?
Can it be limited to certain roles or recruiters?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Announce new Lever candidates in Slack
Your hiring channel gets each new candidate's name and the role they applied for as soon as they come in.
See how it worksHear when a candidate reaches Offer in Lever
You get an email the moment a candidate moves into the stage you care about.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Find candidates stuck in your Lever pipeline” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
