Phone screen new Greenhouse applicants with an AI voice agent

By General Input

Every weekday at 9am, an AI voice agent calls your new applicants, scores their answers against the role, and posts a ranked shortlist to Slack.

Integrations

  • Bland AI
  • Greenhouse
  • Slack Bot

Type

Agentic Task

Categories

  • HR & People

Every weekday at 9am, phone screen my new Greenhouse applicants with a Bland AI voice agent so my recruiters only spend time on the ones worth reading.

Start by pulling applications with Greenhouse List Applications, filtered to those created since the previous run. Narrow them to the high volume roles I care about, which I will name specifically (for example Warehouse Associate and Delivery Driver). Ignore applications to any other job.

For each applicant in scope, use Greenhouse Get Candidate to pull their phone number, then use Greenhouse Get Candidate Activity Feed to check whether a screening note already exists on their profile. If one does, skip them so nobody gets called twice. This dedupe check is what makes repeat runs safe. Normalize every phone number to E.164 format (for example +14155551234) before dialing, because Bland AI rejects numbers in any other format, and drop anyone whose number is missing or unusable into a list I can review.

For each remaining candidate, dispatch a Bland AI Send Call with a task prompt built from that specific job's must have criteria: shift availability, work authorization, notice period, and salary expectation. The exact questions should come from the role the person applied to, not a single generic script. Have the agent open the call by telling the candidate they are speaking with an automated assistant. Dispatch the call with recording enabled so a transcript exists afterward. Stagger the dispatches so I never place two calls to the same number inside Bland's ten second cooldown, which would otherwise be rejected.

Poll Bland AI Get Call Details for each call until it reaches a terminal state, then use Bland AI Get Corrected Transcript for a cleaner read of what was actually said. Cap the total time spent waiting across the run: any call still in progress when that cap is reached should be left alone and simply picked up on the next morning's run. Do not use Bland's per question call analysis endpoint, since it is billed per call; score the transcript yourself instead.

Score each completed call against that role's criteria and write the result back to the candidate with Greenhouse Add Candidate Note. The note should contain the score, a short summary of how the call went, and the candidate's key answers on each criterion, so a recruiter can read the profile alone and know what happened.

Finish with one Slack digest using Slack Bot Send a Message to the recruiting channel I name. Rank candidates by score, highest first, with a one line reason for each. Group no answers and voicemails separately at the bottom so they read as unreached rather than rejected, and note how many calls were deferred to tomorrow's run.

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