π¦ Smart Resume Parser
End-to-end resume parsing and job recommendation system with interactive dashboard, powered by AI skill extraction and data visualization.
π Overview
Smart Resume Parser is a complete platform where users can upload their resumes and receive personalized job matches, skill insights, and salary trend analytics.
The system combines LLM-based skill extraction, SBERT-based job matching, and a modern React dashboard to visualize results.
Developed as part of CSCE679 β Data Visualization at Texas A&M University.
π GitHub Repository: Smart Resume Parser
π οΈ Technologies Used
- Backend: FastAPI, SBERT (Sentence Transformers), Gemini Flash 2.0, SQLite, SpaCy
- Frontend: React, Material UI v5, Recharts, D3.js, React Leaflet, Axios
- Containerization: Docker, Docker Compose
- Other Tools: dotenv for environment management
π Features
- β¨ PDF resume parsing and text extraction
- β¨ AI-based skill extraction and job match reasoning using Gemini
- β¨ SBERT embedding-based job similarity filtering
- β¨ Interactive dashboard with:
- Word clouds
- Radar charts (benefits)
- Salary trend graphs
- U.S. salary distribution maps
- β¨ Full CRUD API for job postings
- β¨ Dockerized deployment for easy setup
βοΈ Setup Instructions
π³ Docker Compose (Recommended)
- Clone the repository:
git clone https://github.com/CodeBreakerMG/ResumeDashboardRecommendation.git cd ResumeDashboardRecommendation
- Start all services:
docker compose up --build
- Access the services:
- Backend: http://localhost:8000/docs
- Frontend: http://localhost:3000
β οΈ Ensure your
.env
file contains a validGEMINI_API_KEY
.
Make sure your SQLite database (e.g., app.db
) exists and is properly mounted in docker-compose.yml
.
You can download a sample database here.
π§ͺ Manual Setup
Backend (FastAPI)
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_sm
uvicorn app.main:app --reload
API:
http://localhost:8000
Frontend (React)
cd frontend/dataviz-dashboard
npm install
npm start
Frontend:
http://localhost:3000
πΊοΈ Workflow
Resume Upload:
User uploads a resume (PDF).Skill Extraction and Matching:
Backend extracts skills and matches jobs using SBERT + Gemini reasoning.Visualization:
Dashboard displays insights including salary trends, skill clouds, and match explanations.Result Interaction:
Users explore top matches, graphs, and detailed comparisons.
π API Reference
POST /resume/match
Upload a resume to get job matches and analysis.
Request: multipart/form-data
with file
= resume PDF
Response:
{
"resume_skills": [...],
"matches": [
{
"jobId": 123,
"matchScore": 0.85,
"matchedSkills": [...],
"matchReason": "Mentions SQL and Docker, aligns with role."
}
],
"wordCloud": [
{ "text": "python", "value": 5 }
],
"salaryTrend": { /* ... */ },
"resumeProfile": { /* education, experience, industries */ }
}
π Credits
- Rishik Gupta
- Manuel Moran
- Cesar Salazar
- Madelein Villegas
Developed collaboratively for Spring 2025 CSCE679.
π License
Distributed under the MIT License.