# shanuhalli/project-resume-classification architecture

> Architecture diagram of the GitHub repository shanuhalli/project-resume-classification, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shanuhalli/project-resume-classification
- Repository: https://github.com/shanuhalli/project-resume-classification

## Overview

This project classifies uploaded resumes into job-profile categories and extracts skills for recruiter review. The runtime workflow is upload, text extraction and preprocessing, model prediction, skill extraction, then display and category filtering. The README also describes a separate analysis and model-development workflow using resume data and NLP/ML techniques. The deployment source is excerpted; notebook internals are not, so their connections to data and deployment are left unverified.

Main entry points: [`Deployment/app.py`](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py) (Profile prediction), [`Deployment/modelDT.pkl`](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/modelDT.pkl) (Decision-tree model), [`Dataset/Raw_Resume.csv`](https://github.com/shanuhalli/project-resume-classification/blob/main/Dataset/Raw_Resume.csv) (Raw resumes), [`Dataset/Cleaned_Resumes.csv`](https://github.com/shanuhalli/project-resume-classification/blob/main/Dataset/Cleaned_Resumes.csv) (Cleaned resumes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Resume classification app"]
  node_upload["Resume upload<br/>[app.py]"]
  node_text["Text extraction<br/>[app.py]"]
  node_preprocess["Text preprocessing<br/>[app.py]"]
  node_predict["Profile prediction<br/>[app.py]"]
  node_skills["Skill extraction<br/>[app.py]"]
  node_review["Results and filtering<br/>[app.py]"]
end

subgraph group_data["Resume data"]
  node_raw["Raw resumes<br/>[Raw_Resume.csv]"]
  node_cleaned["Cleaned resumes"]
  node_samples["Categorized resumes"]
  node_test["Test resumes"]
end

subgraph group_development["Analysis and modeling"]
  node_extraction_notebook["Text extraction study"]
  node_eda["Exploratory analysis"]
  node_training["Model building"]
end

subgraph group_artifacts["Runtime artifacts"]
  node_model["Decision-tree model<br/>[modelDT.pkl]"]
  node_vector["Text vectorizer<br/>[vector.pkl]"]
  node_skill_terms["Skill vocabulary<br/>[skills.csv]"]
end

node_recruiter(("Recruiter"))

node_recruiter -->|"uploads resumes"| node_upload
node_upload -->|"extracts text"| node_text
node_text -->|"preprocesses text"| node_preprocess
node_preprocess -->|"classifies text"| node_predict
node_predict -->|"loads model"| node_model
node_predict -->|"transforms text"| node_vector
node_text -->|"extracts skills"| node_skills
node_skills -->|"reads vocabulary"| node_skill_terms
node_predict -->|"shows profiles"| node_review
node_skills -->|"shows skills"| node_review
node_recruiter -->|"filters results"| node_review
node_raw -.->|"analyzes resumes"| node_eda
node_cleaned -.->|"analyzes resumes"| node_eda
node_samples -.->|"studies extraction"| node_extraction_notebook
node_eda -.->|"informs modeling"| node_training
node_training -.->|"produces classifier"| node_model
node_test -.->|"tests uploads"| node_upload

click node_upload "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py"
click node_text "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py"
click node_preprocess "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py"
click node_predict "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py"
click node_skills "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py"
click node_review "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py"
click node_raw "https://github.com/shanuhalli/project-resume-classification/blob/main/Dataset/Raw_Resume.csv"
click node_cleaned "https://github.com/shanuhalli/project-resume-classification/blob/main/Dataset/Cleaned_Resumes.csv"
click node_samples "https://github.com/shanuhalli/project-resume-classification/tree/main/Dataset/Resumes"
click node_test "https://github.com/shanuhalli/project-resume-classification/tree/main/Dataset/Test%20Resumes"
click node_model "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/modelDT.pkl"
click node_vector "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/vector.pkl"
click node_skill_terms "https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/skills.csv"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_upload,node_text,node_preprocess,node_predict,node_skills,node_review toneBlue
class node_raw,node_cleaned,node_samples,node_test toneAmber
class node_extraction_notebook,node_eda,node_training toneMint
class node_model,node_vector,node_skill_terms toneRose
class node_recruiter toneIndigo
```

## Components

### Resume classification app

- [Resume upload](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py): `Deployment/app.py`
- [Text extraction](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py): `Deployment/app.py`
- [Text preprocessing](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py): `Deployment/app.py`
- [Profile prediction](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py): `Deployment/app.py`
- [Skill extraction](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py): `Deployment/app.py`
- [Results and filtering](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/app.py): `Deployment/app.py`

### Resume data

- [Raw resumes](https://github.com/shanuhalli/project-resume-classification/blob/main/Dataset/Raw_Resume.csv): `Dataset/Raw_Resume.csv`
- [Cleaned resumes](https://github.com/shanuhalli/project-resume-classification/blob/main/Dataset/Cleaned_Resumes.csv): `Dataset/Cleaned_Resumes.csv`
- [Categorized resumes](https://github.com/shanuhalli/project-resume-classification/tree/main/Dataset/Resumes): `Dataset/Resumes`
- [Test resumes](https://github.com/shanuhalli/project-resume-classification/tree/main/Dataset/Test%20Resumes): `Dataset/Test Resumes`

### Analysis and modeling

- **Text extraction study**
- **Exploratory analysis**
- **Model building**

### Runtime artifacts

- [Decision-tree model](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/modelDT.pkl): `Deployment/modelDT.pkl`
- [Text vectorizer](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/vector.pkl): `Deployment/vector.pkl`
- [Skill vocabulary](https://github.com/shanuhalli/project-resume-classification/blob/main/Deployment/skills.csv): `Deployment/skills.csv`

### Other components

- **Recruiter**

## Connections

- Recruiter → Resume upload: uploads resumes (evidence: `Deployment/app.py`)
- Resume upload → Text extraction: extracts text (evidence: `Deployment/app.py`)
- Text extraction → Text preprocessing: preprocesses text (evidence: `Deployment/app.py`)
- Text preprocessing → Profile prediction: classifies text (evidence: `Deployment/app.py`)
- Profile prediction → Decision-tree model: loads model (evidence: `Deployment/app.py`)
- Profile prediction → Text vectorizer: transforms text (evidence: `Deployment/app.py`)
- Text extraction → Skill extraction: extracts skills (evidence: `Deployment/app.py`)
- Skill extraction → Skill vocabulary: reads vocabulary (evidence: `Deployment/app.py`)
- Profile prediction → Results and filtering: shows profiles (evidence: `Deployment/app.py`)
- Skill extraction → Results and filtering: shows skills (evidence: `Deployment/app.py`)
- Recruiter → Results and filtering: filters results (evidence: `Deployment/app.py`)
- Raw resumes → Exploratory analysis: analyzes resumes
- Cleaned resumes → Exploratory analysis: analyzes resumes
- Categorized resumes → Text extraction study: studies extraction
- Exploratory analysis → Model building: informs modeling
- Model building → Decision-tree model: produces classifier
- Test resumes → Resume upload: tests uploads
