πŸ“¦ 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

  1. Clone the repository:
    git clone https://github.com/CodeBreakerMG/ResumeDashboardRecommendation.git
    cd ResumeDashboardRecommendation
    
  2. Start all services:
    docker compose up --build
    
  3. Access the services:

⚠️ Ensure your .env file contains a valid GEMINI_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

  1. Resume Upload:
    User uploads a resume (PDF).

  2. Skill Extraction and Matching:
    Backend extracts skills and matches jobs using SBERT + Gemini reasoning.

  3. Visualization:
    Dashboard displays insights including salary trends, skill clouds, and match explanations.

  4. 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.