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.
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.
Product thinking, engineering decisions, system structure, and implementation.

The problem
What made this worth solving?
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.
Engineering approach
How the system was shaped.
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.
- 01Python
- 02Streamlit
- 03MySQL
- 04pyresparser
- 05pdfminer3
- 06pandas
- 07NLTK
- 08Plotly
Hardest technical problem
The part that needed real engineering.
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.
Outcome
What the work produced.
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.
Looking back
What I would change today.
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.
Design the behaviour. Engineer for what happens next.