Skip to content

Repository files navigation

🤖 AI-Powered Job Portal

Python Version Django Version NLP Engine Machine Learning

An intelligent, modern, and high-performance job board system that connects Job Seekers and Recruiters seamlessly. Unlike traditional job portals that require tedious manual data entry, this platform leverages Artificial Intelligence (NLP & Machine Learning) to automatically parse uploaded PDF resumes, extract technical skills, and generate real-time match scores for jobs.


Key Features

  • Custom Role-Based Authentication: Clean separation of privileges between Job Seekers and Recruiters.
  • AI-Powered Resume Parsing: Automatic text extraction from PDF resumes using PyPDF2.
  • Natural Language Processing (NLP): Auto-extraction of technical skills from resume text using spaCy's Named Entity & Token parsing.
  • Machine Learning Matchmaker: Mathematically calculates the similarity percentage between a candidate's profile skills and job description requirements using TF-IDF Vectorization and Cosine Similarity.
  • Smart Recommendation Engine: Instantly recommends jobs with a match threshold greater than 5%, ordered from highest to lowest matching suitability.
  • Automated Application System & Notifications: Triggers automatic email notification simulations to recruiters when candidates apply.

Tech Stack

  • Backend: Django (Python Web Framework)
  • Database: SQLite (Relational Database)
  • AI/ML Libraries:
  • Frontend: HTML5, CSS3, Django Templates

Directory Structure

job_portal/
│
├── core/                   # Project configuration settings
│   ├── settings.py         # App registrations, auth configuration, mail settings
│   └── urls.py             # Root URL routing configurations
│
├── jobs/                   # Main application containing views, models, and AI engine
│   ├── models.py           # Database Schemas (User, SeekerProfile, RecruiterProfile, Job)
│   ├── views.py            # Controller logic (Signups, Job Posting, Recommendations)
│   ├── forms.py            # Django Form definitions for clean UI inputs
│   ├── parser.py           # Core AI Engine (Text Extraction, NLP Skill Extraction, ML Matching)
│   └── urls.py             # Application level endpoints/routes
│
├── manage.py               # Django management script
├── CODE_UNDERSTANDING.ipynb# Interactive Jupyter Notebook explaining code logic
└── README.md               # Project documentation

Installation & Local Setup

Prerequisites

Make sure you have Python 3.8+ installed on your system.

1. Clone the Repository

git clone <repository-url>
cd job_portal

2. Set Up Virtual Environment

# Create virtual environment
python -m venv venv

# Activate virtual environment
# On Windows (PowerShell):
.\venv\Scripts\Activate.ps1
# On macOS/Linux:
source venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

Note: If requirements.txt is not present, you can install the core packages manually:

pip install django spacy scikit-learn PyPDF2
python -m spacy download en_core_web_sm

4. Database Migrations

python manage.py makemigrations
python manage.py migrate

5. Start the Server

python manage.py runserver

Visit the web portal at http://127.0.0.1:8000/.


Step-by-Step Workflow & Usage

  1. Welcome Page: Users land on the portal and select whether they are a Job Seeker or a Recruiter.
  2. Recruiter Journey:
    • Register/Login as a recruiter.
    • Navigate to Post Job and input: Title, Description, Required Skills, and Location.
  3. Seeker Journey:
    • Register as a Seeker and upload a PDF Resume.
    • The backend's AI Engine runs instantly to read the PDF and parse the text to identify key skills (e.g. python, django, sql).
  4. Matchmaking & Recommendation:
    • Upon completion, the Seeker is redirected to Recommendations.
    • The matching algorithm calculates the cosine similarity between the seeker's skills and all job requirements, ordering matches by the highest score.
  5. Job Application:
    • Seekers review their recommendations or search manually, then click Apply.
    • An email notification is automatically generated and output to the server console simulating recruiter alerting.

Core AI Engine Highlights (jobs/parser.py)

Text Parsing (PyPDF2)

def extract_text_from_pdf(pdf_path):
    text = ""
    with open(pdf_path, 'rb') as file:
        reader = PyPDF2.PdfReader(file)
        for page in reader.pages:
            text += page.extract_text()
    return text

NLP Skill Extraction (spaCy)

nlp = spacy.load("en_core_web_sm")

def extract_skills(text):
    doc = nlp(text)
    skill_bank = ['python', 'django', 'sql']
    tokens = [token.text.lower() for token in doc]
    found_skills = [skill for skill in skill_bank if skill in tokens]
    return ", ".join(found_skills)

Machine Learning Matchmaker (TF-IDF & Cosine Similarity)

def calculate_match_score(resume_text, job_description):
    text_list = [resume_text, job_description]
    cv = TfidfVectorizer()
    count_matrix = cv.fit_transform(text_list)
    match_percentage = cosine_similarity(count_matrix)[0][1] * 100
    return round(match_percentage, 2)

Roadmap & Future Enhancements

  • Dynamic Skill Bank: Extend the simple predefined skill list in parser.py with custom database storage or a pre-trained Named Entity Recognition (NER) pipeline.
  • Production Email Gateway: Connect Django's email configuration to SMTP engines like AWS SES or SendGrid.
  • Advanced Recruiter Dashboard: Offer analytics graphs showing the distribution of candidates' match scores for posted jobs.
  • Interactive UI: Implement dynamic frontend components or integrate styling systems (Tailwind CSS) for responsive dashboards.

About

An AI-powered job portal that automatically parses PDF resumes and scores candidate matches for recruiters.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages