Recruiters often receive hundreds of resumes per job posting, and manually checking for specific technical skills is time-consuming and error prone.
In this post, we explore a scalable, automated solution built using Google Apps Script, Google Sheets, and OpenAI's GPT models.
We'll break down a real-world script used in production to match resumes against skill requirements for specific job IDs. Whether you're a recruiter, engineer, or hiring manager, this approach can save hours of manual work.
Overview
This solution is built to:
- Extract resumes from candidate links stored in a Google Sheet.
- Parse resume content (PDF, Word, PowerPoint) using Google Drive's conversion features.
- Query OpenAI to identify whether specific skills are present.
- Write results to a separate sheet for further action.
System Architecture
Google Sheet -> Apps Script -> Google Drive -> OpenAI GPT -> Google Sheet (Results)
Step-by-Step Breakdown
1. Input Sheet Format
The script reads from a sheet named 'All Data' that contains:
- Job ID (Column A)
- Candidate ID / Email id (Column B)
- Candidate Name (Column C)
- Resume Link (Column D)
Only the rows matching specified Job IDs are processed.
2. Skills Matching via OpenAI
The skills to be checked are configurable:
const SKILLS_TO_CHECK = ['Skill 1', 'Skill 2', 'Skill 3', 'Skill 4'];
OpenAI receives the entire cleaned text of the resume and is prompted to return a JSON object like:
{
"Skill 1": true,
"Skill 2": false,
"Skill 3": true
}
3. Resume Parsing with Google Drive
Uploaded resumes (PDFs, Word, PowerPoint) are temporarily converted to Google Docs/Slides, and their raw text is extracted.
File types handled:
- PDF (
.pdf) - Word (
.docx) - PowerPoint (
.pptx)
After extraction, files are automatically trashed to keep Drive clean.
4. Duplicate Prevention
Before processing, the script checks if the resume link already exists in the results sheet. This avoids redundant API calls and duplication of effort.
5. Results Sheet Output
For each candidate, a row is written with:
- Candidate Name
- Candidate ID
- Job ID
- Resume Link
- A "Yes" or "No" column for each skill in
SKILLS_TO_CHECK
This enables quick filtering and decision-making.
Why This Approach Works
Pros
- Low-cost and cloud-native: Uses free Google tools and minimal OpenAI usage.
- Scalable: Can process hundreds and thousands of resumes.
- Customizable: Easy to change skills, models, or sheet formats.
- Secure: Resume files are never permanently stored.
Challenges
- OpenAI usage may have rate limits. Use Groq or DeepSeek otherwise.
- Text extraction from poorly formatted PDFs can be unreliable.
- Requires some Apps Script and Drive API permissions.
Enhancements You Can Add
- Add job-role-specific skill templates
- Visualize skill heatmaps using Charts in Sheets
- Track token usage per resume for billing
- Build a Slack bot for automated notifications
Try It Yourself
Want to try it yourself? Duplicate your Google Sheet with the columns mentioned above or adjust them according to your requirements.
Then simply:
- Copy this article into ChatGPT and ask it to generate the code.
- Paste the generated code into Google Apps Script.
- Add your OpenAI API key where required.
- Run the script and watch your resume filtering go AI-powered.
Final Thoughts
This script offers a powerful resume filtering mechanism by combining the best of Google Workspace and AI. It turns Sheets into a lightweight ATS (Applicant Tracking System) that intelligently evaluates resumes for matching skills, all without manual review.
Continue the Discussion
If you want to adapt this hiring workflow for your organization with better governance, evaluation, and scale, book a CTO consultation.
You can also connect with me on LinkedIn to discuss your hiring automation goals.