Duck
Tutorials8 min read

A Practical Guide to Using AI in HR for Applicant Screening

Samet Turan— Editor··8 min read

Stop drowning in resumes. This guide shows you how to build a real, automated screening system using AI in HR to filter applicants and save hours.

You Posted a Job. Now You Have 300 Resumes.

You’re a small operation. You don’t have a dedicated HR department. You just needed one good developer, so you posted a job on a few boards. A week later, your inbox is a disaster zone of 300+ PDFs. At least half are completely unqualified. This is the soul-crushing reality of hiring without a massive team. This guide isn’t about theoretical uses of AI in HR; it’s an operator playbook for building an automated first-pass resume filter that actually works. By the end, you’ll know how to connect a few simple tools to have an AI agent read, score, and summarize every single applicant against your job description, leaving you with a clean list of the top 10%.

The Core Stack: What You Actually Need (and Don’t)

Forget enterprise platforms and bloated HR software suites. The goal here is a lean, effective system you can build in an afternoon. This isn’t about boiling the ocean; it’s about solving one specific, high-pain problem. Here’s the stack I use for this exact task.

⚡
Recommended Reading

Prompt Engineering for Profit

50 Tested Templates

50 tested prompt templates for content, copywriting, and automation. Copy, paste, earn.


Get the Templates → $17

★★★★☆ (54)

  • An Intake Form: You need a way to collect applications that isn’t your personal email. I use Tally for this. Its free tier is incredibly generous, it’s easy to use, and you can ask structured questions alongside the resume upload. You could also use Jotform or even a Google Form, but Tally is my preference.
  • An Automation Engine: This is the glue. It watches for new form submissions and kicks off the AI workflow. Make.com (formerly Integromat) is my go-to. Its visual interface makes it easy to see the data flow, and its free plan is sufficient to process hundreds of applications a month. Zapier automations is an alternative, but I find it gets expensive much faster for multi-step workflows.
  • An LLM API: This is the brain. You need API access to a large language model. I use the OpenAI API (specifically GPT-4o as of 2026) for its strong reasoning and JSON mode. You could substitute Anthropic’s Claude 3 Opus, which is also excellent. The key is API access; you can’t build this with the free ChatGPT web interface.
  • A Destination: Where do the results go? A simple Google Sheet is perfect. You’ll have the AI dump the applicant’s name, contact info, a score, and a summary into a new row.

That’s it. Four components, most with free tiers that are genuinely usable. You don’t need a dedicated Applicant Tracking System (ATS) that costs $200/month. You don’t need a specialized AI recruiting tool. You need a form, a spreadsheet, and an automation tool to connect them via an API.

What Most Guides on AI in HR Get Wrong

Most articles on this topic are written by content marketers who have never built a production automation. They either talk in vague platitudes about “transforming talent acquisition” or they recommend ridiculously overpriced, all-in-one solutions that lock you into their ecosystem. They miss the entire point of being a nimble operator.

The biggest mistake is focusing on the wrong problem. They suggest using AI to write job descriptions or generate interview questions. These are trivial, low-value tasks. You can do that with a single ChatGPT prompt. The real bottleneck, the thing that drains hours from your week, is the high-volume, repetitive work of sifting through the initial flood of applicants. That’s where automation provides insane returns.

Another common error is treating the AI as a magic black box. They’ll say “feed the resume to the AI” as if that’s a single step. It’s not. You need to meticulously engineer a prompt that forces the model to evaluate candidates against your specific, non-negotiable criteria. You also need to explicitly tell it to return the data in a structured format like JSON. Without that, you get a lovely paragraph of text that you can’t automatically parse into a spreadsheet. The magic is in the prompt, not the model.

Finally, they completely ignore failure modes. What happens when someone uploads a scanned, unreadable PDF? What happens if the OpenAI API is down for 10 minutes? A real system has to account for this. Most guides pretend the internet is perfect and every input is clean.

They’re selling a dream. We’re building a machine.

Step-by-Step: Building Your Automated Resume Screener

Let’s get specific. Here is the high-level flow we’re building in Make.com. The trigger is a new form submission in Tally. The final action is adding a row to a Google Sheet.

  1. Trigger: New Tally Submission. In Make, create a new scenario and select the Tally module. Connect it to your account and point it to the specific job application form you created. Set it to run every 15 minutes.
  2. Download the Resume. The Tally submission will contain a URL for the uploaded resume file. Use an HTTP module in Make to perform a GET request on that URL to fetch the file content.
  3. Extract Text from the PDF. This is a crucial step. You can’t send a PDF file directly to the LLM API. You need the text. There are a few ways to do this. The simplest is to use a free API service like PDF.co, but that adds another dependency. My preference is to use a small Python script running on a serverless function (like AWS Lambda or Google Cloud Functions) that uses a library like `PyPDF2` to extract the text. For a true no code AI approach, a dedicated PDF parsing module within Make or Zapier is the path of least resistance.
  4. Call the OpenAI API. This is the core of the automation. You’ll use the OpenAI module in Make. You’ll construct a prompt that includes the job description and the extracted resume text. This is where the prompt engineering happens.

Here’s a sample prompt structure. Notice how specific it is.

System Prompt:

You are an expert HR recruitment assistant. Your task is to analyze a candidate's resume against a provided job description and return a structured JSON object. Do not add any commentary or text outside of the JSON object.

User Prompt:

Job Description:
---
[Paste your full job description here]
---

Candidate Resume Text:
---
[Insert the extracted text from the PDF here]
---

Analyze the resume against the job description based on these criteria:
1. **Required Skills Match:** Score from 1-10 on how well the candidate's listed skills match the required skills (e.g., Python, SQL, AWS).
2. **Experience Years:** Identify the total years of relevant experience. If unclear, state 0.
3. **Red Flags:** Identify any potential red flags, such as large unexplained employment gaps or clear job hopping. List them in an array. If none, return an empty array.
4. **Summary:** Provide a 2-sentence summary of why the candidate is or is not a good fit.

Return your analysis in this exact JSON format:
{
"score": <integer>,
"years_experience": <integer>,
"summary": "<string>",
"red_flags": ["<string>"]
}

In the OpenAI module settings, be sure to enable JSON mode. This forces the model to output valid JSON, which is critical for the next step.

  1. Parse the JSON. Make has a JSON module. Feed the output from the OpenAI step into it. This will turn the JSON string into separate data objects (score, summary, etc.) that you can map to your spreadsheet.
  2. Add a Row to Google Sheets. Use the Google Sheets module. Map the original applicant info from Tally (name, email) and the parsed JSON data from the AI (score, summary, red flags) to the appropriate columns in your sheet.

Now, every time someone applies, this workflow runs automatically. You can open your Google Sheet once a day, sort by the ‘score’ column, and instantly see the top candidates to review manually.

Why Can’t I Just Use a Custom GPT for This?

This is a common question. You’ve seen the GPT store, and it seems like you could build a “Resume Screener GPT” and just paste resumes into it. You can, but it’s a terrible workflow. It’s manual, it doesn’t scale, and it’s not an automation.

First, it requires you to manually download each resume, open it, copy the text, switch to the ChatGPT tab, paste it, and wait for a response. Then you have to copy that response and paste it somewhere else. Do that 300 times and tell me how you feel. The entire point of this system is to eliminate that manual labor.

Second, the web interface doesn’t give you structured data back reliably. You get a text response. Our API-based method uses JSON mode to guarantee a machine-readable output that can be automatically parsed and inserted into a spreadsheet. This is the key difference between a fun toy and a production system.

My gripe here is with the marketing of GPTs as business solutions. They are fantastic for one-off tasks, but they are not an AI agent framework for repeatable processes. For that, you need an API and an automation engine. The free web tool is for exploration; the API is for building.

Adjacent reading: deeper coverage of AI agent platforms.

How to Debug When Your Screener Goes Haywire

This system will break. I guarantee it. An API will time out, a candidate will upload a password-protected PDF, or OpenAI will return a malformed response. Here’s how you fix the most common issues.

  • Problem: The PDF text is garbage. Some resumes are images or have weird formatting. Your text extraction will fail. The fix is to add a filter after the extraction step. If the character count of the extracted text is less than, say, 200 characters, stop the workflow and send yourself a notification to manually review that applicant. Don’t let garbage in.
  • Problem: The OpenAI API call fails. This happens. The API could be down or overloaded. Make.com has a great built-in feature for this: auto-retries. In the module settings, you can tell it to retry the API call up to 3 times with a delay between attempts. This solves 90% of transient network issues.
  • Problem: The JSON parsing fails. Sometimes, despite your best efforts, the LLM will add a weird character or a sentence outside the JSON block. This breaks the parsing step. The solution is to add an error handler route in Make. If the ‘Parse JSON’ module fails, the workflow can divert down a separate path that saves the raw text output from the LLM to a separate
— The Colophon

One AI tool. Tested. Reviewed.
In your inbox every Sunday.

~3 minute read. Real outcomes from operators, not marketers.

Free. One email per Sunday. Unsubscribe in one click.