Resume-Analysis-NLP is a full-stack application that uses Natural Language Processing (NLP) and Deep Learning to classify resumes into job categories. It provides a modern web interface for users to upload resumes (PDF, DOCX, DOC) or paste text, and instantly receive a predicted job category and confidence score.
- Backend: FastAPI, TensorFlow/Keras, NLTK, joblib
- Frontend: HTML, CSS, JavaScript (vanilla)
- Deployment: Docker-ready
- Classifies resumes into 25+ job categories using a trained deep learning model.
- Accepts input as either:
- Uploaded file (
.pdf,.docx,.doc) - Pasted text
- Uploaded file (
- Displays results: Category and confidence score.
- Preview: Shows extracted text from uploaded files.
- Retraining endpoint (for advanced users).
- Modern, responsive frontend.
Resume-Analysis-NLP/
│
├── main.py # FastAPI backend (API, model loading, endpoints)
├── requirements.txt # Python dependencies
├── Dockerfile # For containerized deployment
│
├── src/ # Core backend modules
│ ├── model/ # Model architecture, saved model, tokenizer, encoder
│ ├── utils/ # Utilities (logging, helpers, file extraction)
│ ├── training/ # Training pipeline and scripts
│ ├── preprocessing/ # Data preprocessing logic
│ └── inference/ # Inference and prediction logic
│
├── dataset/ # Resume datasets (CSV, sample PDFs)
│
├── frontend/ # Frontend (static files)
│ ├── index.html # Main UI
│ ├── styles.css # Styling
│ └── script.js # Interactivity/API calls
│
├── logs/ # Log files
├── tests/ # Test scripts
git clone <repo-url>
cd Resume-Analysis-NLPRecommended: Use a virtual environment.
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txtEnsure the following files exist in src/model/:
best_model.kerastrained_tokenizer.jsonOHEncoder.joblib
If not, retrain the model using the provided notebook or scripts.
uvicorn main:app --reloadVisit http://localhost:8000 in your browser.
Build and run the app in a container:
docker build -t resume-analyser .
docker run -p 8000:8000 resume-analyser- Input: JSON:
{ "resume_text": "..." } - Output: Category, confidence, extracted text
- Input: Form-data:
file(PDF, DOCX, DOC) - Output: Category, confidence, extracted text
- Input: (Advanced) Triggers retraining (see code for details)
- Frontend UI (index.html)
- Returns logging status
- Paste resume text or upload a file in the left column.
- Click Classify Resume.
- See the predicted category and confidence below.
- The right column shows the uploaded file name and extracted text.
- Place your resume datasets (CSV, PDF) in the
dataset/directory. - Example files:
resume_new.csv,resume_dataset.csv,DummyResume.pdf
- Model is a custom Keras text classifier.
- Preprocessing uses NLTK, custom tokenization, and one-hot encoding.
- Training scripts and logic are in
src/training/andsrc/preprocessing/. - See
NLP_Resume_Classification.ipynbfor EDA and prototyping.
- Add new categories: Update your dataset and retrain the model.
- Change model architecture: Edit
src/model/model.py. - Logging: Configured in
src/utils/logger.py.
- Fork the repo
- Create a feature branch
- Commit your changes
- Open a pull request
MIT License.
- Inspired by open datasets and NLP research.
- Built with FastAPI, TensorFlow, and NLTK.
For more details, see the code and comments in each module.