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=1773195461&Key-Pair-Id=K2V2TN6YBJQHTG&Signature=lQGdXZgDxh83gv5J8PyQmo2kVnaHchclO-WfW-Xa2cKjAaLJ8sHYI3v8Wn0hy-fljn-SYSofFempAgT7DqQ8~021nWfw-gFgXKfoTi3L8l9QQXUybXi~0akYBJA6rT67WQbakp0HmnFISaAAE5ugBOViQPP2mZI1fZUm-HHTitMmLN9xVBTCadSSdlOyxEJJ94LI2oUX10cyNK8ua6QRgMcJsBx2~~5P~DQhCopOtCyaIHa8shCOLVgzpFKONgvlwSOCqdXu~8-SPkcU6LBH2oOGuZR~R7BybY906b43SlK6jrIxpJWr5jEUcbVpFpJQKWhtIP0j5y0mtDmh8ubBQg__)

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