# Weekly stalled candidate alerts for Lever hiring managers

> Every Monday at 8am, each hiring manager gets a Slack message listing only the candidates who have been waiting too long in their current stage.

- Workflow type: agent
- Services: Lever, Slack Bot, Google Sheets
- Categories: HR & People, Operations
- Published: 2026-08-07

## What it does

- Checks every open role in Lever and works out how long each active candidate has been sitting in their current hiring stage.
- Flags anyone past the time limit you set for that stage, for example three business days in phone screen or seven days in onsite and hiring manager review.
- Skips candidates who already have an interview booked, so managers only see genuine hold-ups rather than false alarms.
- Sends each hiring manager a direct Slack message with their most overdue candidates first, and logs a weekly snapshot to a Google Sheet so you can watch stalls trend over time.

## What you'll need

- A Lever account with access to your job postings and candidates
- A Slack workspace where the bot can send direct messages
- A Google Sheets tracker where the weekly snapshot rows get added
- Hiring managers assigned to your roles in Lever, using the same email address they have in Slack

## Prompt

Every Monday at 8am, send each hiring manager a Slack direct message listing the candidates who have stalled in their hiring pipeline, and log a weekly snapshot to a Google Sheets tracker so stalls can be tracked over time. Run this on a cron trigger.

Start in Lever. Use List Postings to pull every open role. For each posting, use List Opportunities to get the candidates on it, keeping only active, non-archived candidates. Use List Stages once at the start to build a lookup from stage ID to readable stage name, because opportunities reference their stage by ID and the message needs to say "Phone Screen", not a UUID.

Work out how long each candidate has been sitting in their current stage from the lastAdvancedAt timestamp on the opportunity. Lever returns timestamps as Unix milliseconds, so convert before comparing against the current time. If lastAdvancedAt is missing, fall back to createdAt.

Flag any candidate who is past the SLA for their stage. Use three business days for phone screen, seven days for onsite and hiring manager review, and five business days as the default for any other stage. Define these thresholds as a clearly labelled per-stage mapping near the top of the workflow so they are easy to change, and make sure business day counts skip weekends.

Suppress false positives before flagging anyone. Call List Interviews on an Opportunity for each candidate that would otherwise be flagged, and skip them if they already have an interview scheduled in the future. A candidate waiting on a booked interview is not stalled, and surfacing them trains managers to ignore the message.

Work out who to notify for each role. Use List Users with Access to a Posting and pick the hiring manager for that posting. Match that person to Slack with Look Up User by Email using their Lever email address. If no Slack user matches, collect them and report it in the run summary rather than failing the whole run.

Send one Slack Bot direct message per hiring manager, using Open a Conversation to get the DM channel and then Send a Message. If a manager owns several roles, group their message by role rather than sending one message per posting. Within each role, sort candidates most overdue first and cap the list at the ten worst, noting how many more were left off. For each candidate include their name, current stage, and how many days they have been waiting. Write it as a short, readable, prioritized note that leads with the single most urgent candidate, not a raw data dump. Skip managers who have nothing overdue instead of sending them an empty message.

Finally, append one row per posting to the Google Sheets tracker using Append Values, recording the run date, the role title, the number of active candidates, and the number overdue. Append a row for every open posting, including ones with zero overdue candidates, so the trend line stays complete and week-over-week comparisons are honest.

Respect Lever rate limits by keeping requests at or below ten per second, and page through every list response until hasNext is false so large pipelines are not silently truncated.

## How to customize

- Change when it runs. Monday at 8am is the default, but any day and time works.
- Adjust the waiting limit for each stage, or add limits for stages that are unique to your hiring process.
- Change how many candidates appear per role, or narrow the run to specific teams and locations.

## FAQ

### Will hiring managers get a message if none of their candidates are overdue?

No. Managers with nothing overdue are skipped entirely, so receiving a message always means something needs attention. The Google Sheet still records a row for every open role, so your trend line stays complete either way.

### What counts as a stalled candidate?

Any active candidate who has been sitting in their current stage longer than the limit you set for that stage. Archived and hired candidates are left out, and so is anyone who already has an interview on the calendar.

### Can I set different time limits for different stages?

Yes, and that is the whole point. A phone screen might get three business days while an onsite or hiring manager review gets seven. You can set a limit for every stage in your process and change them at any time.

### How does it know who the hiring manager is?

It reads the people assigned to each role in Lever and matches them to Slack by email address. If someone cannot be matched, they are noted in the summary so you can follow up instead of the run failing.

### Does this work if we hire across multiple teams?

Yes. Every open role is checked and each manager only ever sees candidates for their own roles. You can also limit the run to certain teams or locations if you only want to cover part of the org.

Use this prompt in General Input: https://www.generalinput.com/prompts/weekly-stalled-candidate-alerts-for-lever-hiring-managers