Weekly hiring pipeline review board for your Lever roles

By General Input

Open one board to run your weekly recruiting review: every open role, where its pipeline is actually stuck, and a written brief you can post straight to Slack.

Integrations

  • Lever
  • Slack Bot

Type

App

Categories

  • HR & People
  • Operations

Build an app my recruiting team opens every week to run our hiring pipeline review meeting. It reads everything from Lever and can post to Slack using Slack Bot. Nothing runs on a schedule: a person opens the app before the meeting and works out of it during the call.

The main screen is a board with one row per open job posting. Each row shows the role title, the requisition it belongs to, how many candidates sit in each pipeline stage, the oldest candidate in the pipeline and how many days they have been stuck, whether an offer is out, and who the recruiter and hiring manager are. Build the rows from Lever: List Postings for the open roles, List Requisitions to resolve the requisition each posting belongs to along with its code and headcount, List Stages so the stage columns appear in Lever's own pipeline order rather than an order I invented, List Opportunities filtered by posting and stage for the per stage counts, List Users with Access to a Posting to pull out the recruiter and the hiring manager, and List Offers on an Opportunity to work out whether an offer is already out on the role.

Let me filter the board by team, by recruiter, or by hiring manager, and sort so the roles in the worst shape come first. Clicking any role opens a detail view for that role listing its candidates with their current stage and how many days since they last advanced, longest waiting first. The detail view reads List Opportunities filtered by that posting, and Retrieve Opportunity where it needs the expanded contact or stage history for a single candidate.

Each role page recomputes time in stage from the opportunity timestamps rather than trusting anything cached. Lever timestamps are Unix milliseconds, and lastAdvancedAt is the field that gives days in the current stage: days in stage is now minus lastAdvancedAt. Age in pipeline comes from createdAt the same way.

Three rules matter and should be baked in rather than left as options. First, any role that has been running past one and a half times its normal fill time is flagged in red on the board, because that is the point where roles tend to stall out permanently. Second, stage counts exclude archived candidates, so the numbers on the board match the candidates the team would actually discuss. Third, confidential postings stay out of the app entirely unless the Lever connection has explicitly been granted confidential access, in which case the list calls opt in to confidential data; never show confidential roles by accident.

Put a Prep this week's review button on the board that kicks off a background agent. The agent walks every open posting, gathers the stage counts, candidate ages and offer state, and works out where each pipeline is actually jammed. Jammed means something specific: plenty of candidates at the top but nothing reaching onsite, a single candidate sitting on an offer decision, a stage where nobody has advanced in weeks, or a role with no candidates at all. For each role it writes a short narrative naming the bottleneck and the one action that would unblock it, addressed to the recruiter and hiring manager who own it.

That brief saves into the app, keyed by the week it was generated, so we can read it during the meeting and open last week's brief for the same role next to it to see what actually moved. Show the agent's progress while it runs, since walking every posting takes a moment, and keep the previous brief readable while the new one is still generating.

A second button posts the brief to our hiring channel using the Slack Bot Send a Message action. Let me confirm or change the target channel before it sends, format the message so each role is a short readable block rather than one wall of text, lead with the roles flagged red, and show me when the brief was last posted so nobody double posts it.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them