Skip to content

theHoodguy4587/Resume-Job-Matcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Resume Job Matcher

Python FastAPI Docker Railway License


Overview

Resume Job Matcher is an end-to-end NLP project that extracts skills from resumes and matches them against job descriptions to provide a skill match score. This project demonstrates hands-on experience in Natural Language Processing, MLOps, CI/CD pipelines, containerization, and cloud deployment.

The service is deployed on Railway as a live API that can process resumes in PDF and TXT formats and return matched and missing skills for any job description.


Key Features

  • NLP-based Skill Extraction:
    Extracts technical and soft skills from resumes using a custom NER-inspired pipeline with spaCy and PhraseMatcher.

  • Job Matching:
    Compares extracted resume skills against job descriptions to calculate a match score, highlight matched skills, and identify missing skills.

  • Preprocessing Pipeline:
    Cleans and normalizes text from resumes and job descriptions to ensure consistent matching.

  • REST API with FastAPI:
    Exposes a /match endpoint for uploading resumes and job descriptions via POST requests.

  • Streamlit UI:
    Provides an interactive web interface for uploading resumes, submitting job descriptions, and viewing match results.

  • Dockerized Deployment:
    Fully containerized with a Dockerfile for consistent environments and easy deployment.

  • CI/CD Pipeline (GitHub Actions):

    • Automatically builds and installs dependencies on each push or pull request.
    • Runs tests to ensure reliability before deployment.
    • Demonstrates professional MLOps and automation skills.
  • Supports Multiple File Formats:

    • .pdf and .txt resume files.
    • .txt job descriptions.
  • Cloud Deployment:

    • Live API hosted on Railway for real-time testing and demonstration.

Project Structure

Resume-Job-Matcher/
│
├─ src/
│ ├─ api/ # FastAPI app
│ ├─ ingestion/ # Resume/job description loader
│ ├─ matching/ # Skill matching logic
│ ├─ ner/ # Skill extraction and normalization
│ ├─ pipeline/ # End-to-end pipeline
│ └─ preprocessing/ # Text cleaning and preprocessing
│
├─ data/ # Sample resumes and job descriptions
├─ tests/ # (Optional) Unit tests for CI
├─ tmp_uploads/ # Temporary uploaded files for API
├─ Dockerfile # Container configuration
├─ requirements.txt # Python dependencies
├─ .github/workflows/ # CI/CD pipeline
├─ README.md
└─ LICENSE



Installation

  1. Clone the repository:
git clone https://github.com/theHoodguy4587/Resume-Job-Matcher.git
cd Resume-Job-Matcher
  1. Install dependencies:
pip install -r requirements.txt
python -m spacy download en_core_web_sm
  1. Run locally:
uvicorn src.api.main:app --reload

Visit http://127.0.0.1:8000/docs for Swagger UI.

Docker Deployment

Build and run the Docker container:

docker build -t resume-job-matcher .
docker run -p 8000:8000 resume-job-matcher

Cloud Deployment

This project is deployed on Railway: https://resume-job-matcher-production.up.railway.app/docs#/default/match_resume_job_match_post

Streamlit UI

Live app: https://thehoodguy4587-resume-job-matcher-srcapp-eiggvh.streamlit.app/

Run locally:

streamlit run src/app.py

Screenshots

Streamlit UI API Docs Skill Match Example Docker Running

CI/CD

  • The project includes GitHub Actions for automated testing and deployment:

  • Runs tests for skill extraction and preprocessing

  • Builds Docker image on push

  • Deploys automatically to Railway

Tech Stack

  • Python 3.10

  • FastAPI for API

  • spaCy for NLP / NER

  • Docker for containerization

  • GitHub Actions for CI/CD

  • Railway for cloud deployment

How it Works

  1. Upload a resume (.pdf or .txt) and a job description.

  2. Pipeline processes text: cleaning → skill extraction → normalization → matching.

  3. Returns a JSON with:

  • Resume skills

  • Job description skills

  • Matched skills

  • Missing skills

  • Match score

Future Improvements

  • Add authentication and role-based access for the UI.

  • Expand NER model for more advanced skill extraction.

  • Integrate resume scoring and ranking for multiple candidates.

  • Add multi-language support.

License

MIT License © 2026 Senitha Gunathilaka

About

End-to-end NLP project that extracts skills from resumes and matches them against job descriptions to provide a skill match score.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors