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.
Prompt Engineering for Profit
50 tested prompt templates for content, copywriting, and automation. Copy, paste, earn.
Get the Templates → $17
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
