PROJECT CASE STUDY
AI Resume Analyzer
A resume intelligence tool that turns uploaded PDFs into structured candidate profiles, skill and role recommendations, resume scoring, and admin analytics over collected results.

Turning inconsistent resumes into usable data
Resumes arrive as inconsistent, unstructured documents. Extracting text is only the first step; the useful part is turning noisy skills, sections, and experience signals into a normalized candidate view that can support recommendations and analysis.
Handling noisy resume signals
Resume structure and vocabulary vary heavily between candidates. A parser can successfully extract text while still producing inconsistent signals that are too noisy to drive useful recommendations.
Extraction and recommendation were kept as separate stages. Parsed text and structured fields first become normalized analysis inputs; skill groups and resume-section signals are then evaluated independently to produce experience, role, recommendation, and scoring outputs.
Separate extraction from recommendations
The application uses Python and Streamlit around a PDF/NLP extraction pipeline built with pyresparser and pdfminer. Parsed resume data is evaluated against role-oriented skill groups to infer direction and recommend skills and courses. A deterministic scoring layer examines resume sections and experience signals, MySQL stores analysis and feedback data, and Plotly provides analytics for the administrative view.
From uploaded document to actionable feedback
Users can upload a PDF and receive structured resume information, inferred experience level, detected skills, suggested skills and courses, role-oriented recommendations, resume-writing feedback, and an overall score. Administrators can inspect candidate data, export CSVs, review feedback, and analyse role, score, experience, geography, and rating distributions.
Measuring recommendation quality
The recommendation layer is deliberately deterministic, which keeps decisions inspectable but limits semantic understanding. A stronger next version would separate parsing, normalized candidate representation, recommendation policy, and model inference into distinct services, then evaluate recommendation quality against labelled data before introducing more advanced model-driven reasoning.