Skip to content

Repository files navigation

πŸ“„ Resume Analyzer & Job Description Matcher

Python LangChain Groq Streamlit Pydantic

πŸš€ AI-Powered Resume Parser & Job Description Matcher

Upload a Resume β†’ Extract Structured Information β†’ Compare with Job Description β†’ Get ATS Match Score & Recruiter Insights


πŸ“Œ Overview

Resume Analyzer is an AI-powered web application that automatically extracts structured information from a resume PDF and compares it against a Job Description (JD).

Instead of manually reading resumes, this application leverages Large Language Models (LLMs) through Groq + LangChain to identify:

  • Candidate Information
  • Education
  • Experience
  • Skills
  • ATS Match Score
  • Missing Skills
  • Recruiter Summary
  • Strengths & Gaps

The project demonstrates practical usage of Generative AI, Structured Output, Prompt Engineering, and Streamlit.


✨ Features

πŸ“„ Resume Parsing

  • Upload Resume PDF
  • Extract Name
  • Extract Email
  • Extract Phone Number
  • Extract Education
  • Extract Experience
  • Extract Technical Skills

πŸ€– AI Structured Extraction

Uses:

  • LangChain
  • Groq Llama Model
  • Function Calling
  • Pydantic Models

The AI returns structured JSON instead of plain text.


πŸ“Š Job Description Matching

Compare Resume with JD and generate:

  • ATS Match Score
  • Matched Skills
  • Missing Skills
  • Strengths
  • Gaps
  • Recruiter Summary

πŸ“₯ Export Results

Download

  • Parsed Resume JSON
  • JD Match Result JSON

🧠 Project Workflow

                Resume PDF
                     β”‚
                     β–Ό
             PyPDFLoader
                     β”‚
                     β–Ό
            Extract Resume Text
                     β”‚
                     β–Ό
          LangChain PromptTemplate
                     β”‚
                     β–Ό
          Groq Llama 3.3 LLM
                     β”‚
                     β–Ό
     Structured Resume (Pydantic)
                     β”‚
          Resume + Job Description
                     β”‚
                     β–Ό
          AI Resume Matcher
                     β”‚
                     β–Ό
      JDMatchResult (Structured)
                     β”‚
                     β–Ό
             Streamlit Dashboard

πŸ›  Tech Stack

Programming Language

  • Python

AI & LLM

  • LangChain
  • Groq LLM
  • Prompt Engineering

PDF Processing

  • PyPDF
  • PyPDFLoader

Data Validation

  • Pydantic

Web Framework

  • Streamlit

Environment Management

  • Python Dotenv

πŸ“‚ Project Structure

Resume-Analyzer/
β”‚
β”œβ”€β”€ .venv/
β”œβ”€β”€ .env
β”œβ”€β”€ requirements.txt
β”‚
β”œβ”€β”€ models.py
β”œβ”€β”€ prompts.py
β”œβ”€β”€ parser.py
β”œβ”€β”€ matcher.py
β”œβ”€β”€ main.py
β”‚
β”œβ”€β”€ resume.pdf
β”œβ”€β”€ jd.txt
β”‚
└── README.md

βš™ Installation

Clone Repository

git clone https://github.com/Ronit049/Resume-Analyzer.git

cd Resume-Analyzer

Create Virtual Environment

Windows

python -m venv .venv

Activate

.venv\Scripts\activate

Linux / macOS

python3 -m venv .venv

source .venv/bin/activate

Install Dependencies

pip install -r requirements.txt

πŸ”‘ Environment Variables

Create a file named

.env

Add your Groq API Key

GROQ_API_KEY=your_groq_api_key

β–Ά Running the Project

Run Streamlit

streamlit run main.py

or

python -m streamlit run main.py

πŸ“– How It Works

Step 1

Upload Resume PDF

↓

Step 2

PDF is converted into plain text

↓

Step 3

Prompt is generated using LangChain

↓

Step 4

Groq LLM extracts structured information

↓

Step 5

Resume object is created using Pydantic

↓

Step 6

User pastes Job Description

↓

Step 7

LLM compares Resume & JD

↓

Step 8

Generate

  • Match Score
  • Missing Skills
  • Recruiter Summary

↓

Step 9

Display results in Streamlit


πŸ“Š Example Output

Parsed Resume

{
  "name": "John Doe",
  "email": "john@gmail.com",
  "phone_number": "9876543210",
  "skills": [
    "Python",
    "SQL",
    "LangChain"
  ]
}

JD Match Result

{
  "match_score": 87,
  "matched_skills": [
    "Python",
    "SQL"
  ],
  "missing_skills": [
    "Docker",
    "FastAPI"
  ],
  "summary": "Candidate is a strong fit for the role."
}

πŸ“Έ Application Preview

πŸ“„ Upload Resume

⬇

πŸ€– Parse Resume

⬇

πŸ“‹ View Structured Resume

⬇

πŸ“ Paste Job Description

⬇

πŸ“Š Generate Match Score

⬇

πŸ“₯ Download JSON Report

πŸ“Έ Application Preview

🌐 Frontend Interface

Resume Analyzer Frontend


πŸ’» Code Overview

Resume Analyzer Code



🎯 Learning Outcomes

This project demonstrates:

  • Prompt Engineering
  • Structured Output
  • Function Calling
  • LangChain Chains
  • Groq Integration
  • Resume Parsing
  • ATS Resume Matching
  • Streamlit Development
  • Pydantic Models
  • Environment Variables
  • PDF Processing
  • AI Application Development

πŸš€ Future Improvements

  • Support DOCX resumes
  • OCR for scanned PDFs
  • Multi-resume ranking
  • Resume improvement suggestions
  • Skill gap visualization
  • ATS compatibility analysis
  • Company-specific scoring
  • Cover Letter Generator
  • Interview Question Generator
  • LinkedIn Profile Analysis

🀝 Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push your branch
  5. Open a Pull Request


⭐ Support the Project

If you found this project useful, informative, or inspiring, please consider giving it a ⭐ on GitHub.

Your support helps improve the project, motivates future development, and makes it easier for others to discover it.

GitHub Stars



πŸ‘¨β€πŸ’» Author

Ronit Raj

Passionate Computer Science Student focused on building practical AI-powered applications, modern web experiences, and open-source projects.


🌟 Show Your Support

If this repository helped you:

⭐ Star the repository

🍴 Fork it

πŸ› Report bugs

πŸ’‘ Suggest new features

🀝 Contribute to make it even better

Every contributionβ€”big or smallβ€”is greatly appreciated.


πŸ’™ Thank You

Thank you for visiting this repository!

I truly appreciate your time and interest in this project. I hope it helps you learn something new or solve a real problem.

If you have ideas, feedback, or would like to collaborate on future projects, feel free to reach out. Contributions, discussions, and suggestions are always welcome.

Happy Coding! πŸš€


About

Resume Analyzer & Job Description Matcher is an AI-powered web application that extracts structured information from resumes and compares it with job descriptions to generate an ATS match score, identify missing skills. Built with Python, LangChain, Groq, Pydantic, and Streamlit.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages