Resume Shortlisting Using Python

Resume Shortlisting Using PythonPrivacy Policy for SkillDedication.in

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:

Resume Shortlisting Using Python 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 🚀

Previous Post Next Post

Contact Form