ResumeParser is a web-based application that simplifies and automates the resume screening process using Natural Language Processing (NLP) and AI-powered analytics. Designed for recruiters, placement teams, and HR departments, the system extracts structured information from unstructured PDF resumes and delivers a detailed candidate profile with ATS (Applicant Tracking System) scoring, keyword matching, and skill distribution insights.
The application is built using a modular layered architecture, split across:
index.html<iframe>
app.pyuploads/ directorypdfminer.pdf input resumes from users| Feature | Description |
|---|---|
| Multi-Resume Upload | Upload multiple PDFs at once |
| Text Extraction | Extracts resume text using pdfminer |
| NLP Processing | spaCy used to detect names, skills, and other key phrases |
| Skill Tagging | Displays skills as visual badges |
| ATS Score | Calculates compatibility score using job requirement weights |
| Detailed Modal View | Shows education, experience, certifications, and projects in a modal |
| Word Cloud | Generated using d3-cloud, shows keyword frequency |
| Skill Distribution | Doughnut chart showing tech vs soft vs certifications |
| Resume Preview | View original PDF in-browser |
| Profile Completeness | Calculates how much of the candidate's profile is filled (out of 100%) |
| Layer | Technologies Used |
|---|---|
| Frontend | HTML, CSS, JS, Bootstrap, Chart.js, D3.js |
| Backend | Flask, Python, spaCy, PDFMiner |
| NLP Model | en_core_web_sm |
| Libraries | re, os, collections, json, werkzeug, pdfminer.six |
User Uploads Resumes
.pdf files are uploaded to Flask serverText Extraction
extract_text_from_pdf() reads content using pdfminerInformation Extraction
extract_name(), extract_emails(), extract_phone_number()ATS Scoring
calculate_ats_score() with feedbackDetailed Analysis
generate_word_cloud_data()calculate_skill_distribution()Visualization
| Section | Max Score | Scoring Logic |
|---|---|---|
| Education | 10 | Based on presence of Bachelor's, Master's, etc. |
| Experience | 25 | Based on number of experience lines |
| Technical Skills | 30 | 3 points per matched keyword (max capped) |
| Soft Skills | 15 | 3 points per keyword |
| Certifications | 10 | 5 points each |
| Formatting | 10 | Based on structure, capitalization |
| Total | 100 |
spaCy en_core_web_smpdfminer.six![OPTIRECU Image[30].jpg](https://app-cdn.readytensor.ai/publications/resources/hubId=5783/publicationId=2381/OPTIRECU%20Image%5B30%5D.jpg?Expires=1762433805&Key-Pair-Id=K2V2TN6YBJQHTG&Signature=VZVaueBsWSHlWjqroELqizYkGUW4o4IhSkcz3y8EGDGIG1GzAHm93UOp3w1G-baEOz7Rd9iSP0FX1uWez6GvhJb8l5qimaD1YXf0hpp-fmC4ZfYomztCr082ebuWuxmbpBwCyiAUzGPwUUuWmk01ZsWvhsXeULTzjMnWL6WBxZxLnoUa3RHW~wsmJ88g9uh6Ynyo~Qmo5fku~Q6XlZnI4oVqt4OSkILWGStNMeJe1ofNyzVWVNYrwy1CJ~ScraMiLa4KLnguQ-aVb2pQFWJuTkOsn3~glpSnJuORo15~6-MAgGcxgUb1fEaZFV9vfRUQGU4pUN1AfflRCeEAoP0lbQ__)

This project is for educational and academic purposes.
Ā© 2024 Akshay Karthick ā Final Year CSE Project