Resume Shortlisting Using Python – Build an AI-Powered Hiring System (2026 Guide)
In today’s competitive job market, companies receive hundreds or even thousands of resumes for a single job opening. Manually reviewing each resume is slow, tiring, and error-prone. This is where resume shortlisting using Python becomes a game-changer.
In this article, you will learn how to build a smart resume shortlisting system using Python, step by step, in a simple and practical way. This project is highly valuable for data science, AI, automation, and Python developer roles.
What Is Resume Shortlisting?
Resume shortlisting is the process of filtering resumes based on:
- Skills
- Experience
- Education
- Job requirements
Instead of manually reading resumes, Python can automatically analyze resume content and select the most relevant candidates.
Why Use Python for Resume Shortlisting?
- Python is easy to learn and implement
- Excellent libraries for text processing
- Used in real HR automation systems
- Scales easily for large data
- Perfect automation project for resumes
Many modern ATS (Applicant Tracking Systems) are built using similar logic.
Real-World Use Cases
- HR resume screening
- Campus placement filtering
- Freelance hiring platforms
- Startup recruitment automation
- AI-based HR tools
Project Overview – What We Will Build
Our Python resume shortlisting system will:
- Read resume text
- Extract skills
- Match job requirements
- Calculate a score
- Shortlist suitable resumes
This logic can later be extended to AI and machine learning.
Data Manipulation using Pandas
Step 1: Required Python Concepts
- Strings
- Lists and dictionaries
- Functions
- File handling
- Basic text processing
No advanced AI knowledge required to start.
Step 2: Sample Job Requirements
First, define the required skills for a job role.
job_skills = [
"python",
"data analysis",
"machine learning",
"sql",
"statistics"
]
These keywords represent what recruiters usually look for.
Step 3: Sample Resume Text
In real applications, resumes are read from PDF or DOC files. For simplicity, we use plain text.
resume_text = """
Experienced Data Analyst with strong knowledge of Python and SQL.
Worked on machine learning projects and data visualization.
Good understanding of statistics and real-world datasets.
"""
Step 4: Resume Cleaning and Processing
Text data must be cleaned before analysis.
def clean_text(text):
return text.lower()
cleaned_resume = clean_text(resume_text)
This helps in accurate keyword matching.
Step 5: Skill Matching Logic
def match_skills(resume, skills):
matched = []
for skill in skills:
if skill in resume:
matched.append(skill)
return matched
matched_skills = match_skills(cleaned_resume, job_skills)
This step checks which job skills appear in the resume.
Step 6: Resume Scoring System
Each matched skill increases the resume score.
def calculate_score(matched_skills, total_skills):
return (len(matched_skills) / total_skills) * 100
score = calculate_score(matched_skills, len(job_skills))
This score helps recruiters rank candidates objectively.
Step 7: Shortlisting Decision
def shortlist(score, threshold=60):
if score >= threshold:
return "Shortlisted"
else:
return "Rejected"
result = shortlist(score)
Thresholds can be adjusted based on hiring needs.
Final Output Example
Matched Skills: ['python', 'sql', 'machine learning', 'statistics']
Score: 80%
Status: Shortlisted
This is exactly how many automated hiring systems work.
Common Mistakes Beginners Make
- Exact keyword dependency
- No text cleaning
- Ignoring synonyms
- No scoring logic
These issues are solved using NLP and AI techniques.
How This Project Scales to AI
In advanced systems, we use:
- Natural Language Processing (NLP)
- TF-IDF
- Cosine similarity
- Machine learning classifiers
- Resume ranking models
But the foundation remains the same.
Interview Questions from This Project
- How does resume shortlisting work?
- What is keyword matching?
- How can bias be reduced?
- How can AI improve recruitment?
This project gives you strong interview confidence.
Why This Project Is Excellent for Your Resume
- Real-world HR automation
- Python + Data handling
- AI-ready project
- Highly relevant in 2026
Frequently Asked Questions (FAQs)
What is resume shortlisting using Python?
Resume shortlisting using Python is the process of automatically filtering resumes based on job requirements such as skills, experience, and keywords. It helps recruiters save time by selecting the most relevant candidates.
Is resume shortlisting using Python used in real companies?
Yes. Many companies use automated Applicant Tracking Systems (ATS) that rely on Python-based logic, keyword matching, and AI techniques to shortlist resumes.
Do I need AI or machine learning to build a resume shortlisting system?
No. You can build a basic resume shortlisting system using simple Python concepts like strings, lists, and keyword matching. AI and machine learning are used in advanced systems.
Can beginners build a resume shortlisting project in Python?
Yes. Beginners with basic Python knowledge can easily build a resume shortlisting system. This project is beginner-friendly and great for learning automation.
Which Python libraries are commonly used for resume shortlisting?
Commonly used libraries include re for text processing, NLTK or spaCy for NLP, and scikit-learn for AI-based shortlisting.
How does keyword matching work in resume screening?
Keyword matching checks whether required job skills appear in a resume. Each matched skill increases the resume score, helping in fair shortlisting.
Can this project be added to a resume or portfolio?
Yes. Resume shortlisting using Python is a real-world automation project and adds strong value to your resume, especially for data science and AI roles.
Is resume shortlisting biased?
Basic keyword-based systems may introduce bias. Advanced AI systems reduce bias by analyzing skills, experience, and context instead of relying only on keywords.
What should I learn after this project?
After this project, you should learn NLP, TF-IDF, cosine similarity, machine learning models, and AI-based recruitment systems.
Source Code
import os
# =============================
# JOB REQUIREMENTS
# =============================
JOB_SKILLS = [
"python",
"data analysis",
"machine learning",
"sql",
"statistics"
]
SHORTLIST_THRESHOLD = 60 # percentage
# =============================
# CLEAN TEXT
# =============================
def clean_text(text):
return text.lower()
# =============================
# READ RESUME FILE
# =============================
def read_resume(file_path):
with open(file_path, "r", encoding="utf-8") as file:
return file.read()
# =============================
# MATCH SKILLS
# =============================
def match_skills(resume_text, skills):
matched = []
for skill in skills:
if skill in resume_text:
matched.append(skill)
return matched
# =============================
# CALCULATE SCORE
# =============================
def calculate_score(matched_skills, total_skills):
return (len(matched_skills) / total_skills) * 100
# =============================
# SHORTLIST DECISION
# =============================
def shortlist_candidate(score):
if score >= SHORTLIST_THRESHOLD:
return "SHORTLISTED"
else:
return "REJECTED"
# =============================
# MAIN PROCESS FUNCTION
# =============================
def process_resumes(resume_folder):
# ❌ Folder not found check
if not os.path.exists(resume_folder):
print("❌ ERROR: Resume folder not found!")
print("📁 Expected folder:", resume_folder)
print("👉 Create a folder named 'resumes' and add .txt files")
return
print("\n📄 RESUME SHORTLISTING RESULTS\n")
resume_found = False
for resume_file in os.listdir(resume_folder):
if resume_file.endswith(".txt"):
resume_found = True
file_path = os.path.join(resume_folder, resume_file)
resume_text = read_resume(file_path)
resume_text = clean_text(resume_text)
matched_skills = match_skills(resume_text, JOB_SKILLS)
score = calculate_score(matched_skills, len(JOB_SKILLS))
status = shortlist_candidate(score)
print("Resume File :", resume_file)
print("Matched Skills:", matched_skills)
print("Score :", f"{score:.2f}%")
print("Status :", status)
print("-" * 45)
if not resume_found:
print("⚠️ No resume files found in folder!")
print("👉 Add .txt resume files inside 'resumes' folder")
# =============================
# PROGRAM START
# =============================
if __name__ == "__main__":
# OPTION 1 (Recommended – same folder)
resume_folder_path = "resumes"
# OPTION 2 (Absolute path – uncomment if needed)
# resume_folder_path = r"C:\Users\2211\Documents\resumes"
process_resumes(resume_folder_path)
OUTPUT:
Explanation of Resume Shortlisting Using Python
In this project, we created a simple yet powerful resume shortlisting system using Python. The goal is to automatically analyze multiple resumes and decide whether a candidate should be shortlisted or rejected based on job requirements.
Folder Structure Explanation
The program expects a folder named resumes in the same directory as the Python file. Inside this folder, multiple resume files are stored in .txt format.
resume.py resumes/ ├── resume1.txt ├── resume2.txt └── resume3.txt
Each text file represents one candidate’s resume.
Step 1: Job Skills Definition
First, we define the skills required for the job role. These skills act as keywords that the system searches for inside resumes.
For example:
- Python
- Data Analysis
- Machine Learning
- SQL
- Statistics
This makes the system flexible — recruiters can change job skills anytime.
Step 2: Reading Resume Files
The program scans the resumes folder and reads all files ending with .txt. Each resume is opened and its content is read as plain text.
If no resume files are found, the program safely displays a warning message instead of crashing.
Step 3: Cleaning Resume Text
Before analysis, resume text is converted to lowercase. This ensures accurate matching because Python treats “Python” and “python” as different words.
Text cleaning improves matching accuracy and avoids logical errors.
Step 4: Skill Matching Logic
The system checks whether each required job skill exists inside the resume text. If a skill is found, it is added to the matched skills list.
This keyword-based approach is similar to how basic Applicant Tracking Systems (ATS) work.
Step 5: Resume Scoring System
Each resume is scored using the formula:
(Number of matched skills / Total job skills) × 100
This creates a percentage score that helps rank candidates objectively.
Step 6: Shortlisting Decision
A predefined threshold (for example, 60%) is used to decide:
- If score ≥ threshold → SHORTLISTED
- If score < threshold → REJECTED
This makes the decision automatic and unbiased.
Explanation of resume1.txt
resume1.txt contains all required skills such as Python, SQL, Machine Learning, Data Analysis, and Statistics.
Data Analyst with strong knowledge of Python and SQL.
Worked on machine learning and data analysis projects.
Good understanding of statistics and real-world datasets.
- Matched Skills: 5
- Total Skills: 5
- Score: 100%
- Status: SHORTLISTED
This resume perfectly matches the job requirements.
Explanation of resume2.txt
resume2.txt matches only some of the required skills.
Software Engineer with experience in Python development.
Worked on backend APIs and basic data analysis.
Familiar with SQL databases and reporting tools.
- Matched Skills: Python, Data Analysis, SQL
- Total Skills: 5
- Score: 60%
- Status: SHORTLISTED
Since the score meets the threshold, the candidate is shortlisted.
Explanation of resume3.txt
resume3.txt is focused on frontend development and does not match the required job skills.
Frontend Developer specializing in HTML, CSS, and JavaScript.
Experience in UI design and responsive web development.
Basic knowledge of React and web accessibility.
- Matched Skills: None
- Score: 0%
- Status: REJECTED
This resume is rejected because it does not meet job requirements.
Why This Project Is Important
- Shows real-world automation
- Demonstrates ATS-style logic
- Improves Python problem-solving skills
- Excellent project for resumes and interviews
Final Conclusion
Resume shortlisting using Python is a practical automation project that solves a real hiring problem. This system can be extended using NLP, AI, PDF parsing, databases, or web frameworks.
Understanding this logic prepares you for Python developer, data analyst, and AI-related roles in 2026.
Final Thoughts
Start simple, then move towards AI-powered systems.
More Python automation & AI projects coming soon on skilldedication.in 🚀

.png)
.png)