SmartResume is an advanced, AI-driven application designed to help job seekers optimize their resumes for Applicant Tracking Systems (ATS) and human recruiters. It combines Classical Machine Learning (XGBoost) with Generative AI (Google Gemini) to provide a holistic score and actionable feedback.
- Hybrid Scoring Engine:
- Quantitative Analysis (70%): Powered by an XGBoost model trained on 50k+ resumes to evaluate structure, keyword optimization, and formatting.
- Qualitative Analysis (30%): Uses Google Gemini Pro to assess "soft" metrics like tone, impact, and language clarity.
- Adaptive Learning System: A self-improving engine that learns new trending skills from high-scoring resumes and adjusts its criteria dynamically over time.
- Real-time Feedback: Instant, actionable suggestions to improve your ATS score.
- Premium UI/UX: A monochrome, professional design with high-end animations (Framer Motion, GSAP).
- Secure & Private: Implements OAuth2 authentication and secure PDF storage via Supabase.
graph TD
User((User)) -->|Upload Resume| React[Frontend - React/Tailwind]
React -->|API Request| FastAPI[Backend - FastAPI]
FastAPI -->|Extract Text| PDF[pdfminer.six]
FastAPI -->|Check History| Supabase[(Supabase - Auth/DB)]
FastAPI -->|ML Scoring| XGB[XGBoost Model]
FastAPI -->|Contextual Analysis| Gemini[[Google Gemini AI]]
XGB -->|Score| Result[Hybrid Analysis Result]
Gemini -->|Feedback| Result
Result -->|Visualize| React
- Framework: React 18
- Build Tool: Parcel
- Styling: TailwindCSS v4
- Animations: Framer Motion, GSAP
- Visualization: Recharts
- API Framework: FastAPI (Python)
- ML Engine: XGBoost, Scikit-Learn
- GenAI: Google Gemini Pro API
- Database: Supabase (PostgreSQL)
- ORM: SQLAlchemy
- PDF Processing: PDFMiner.six
- Node.js (v16+)
- Python (3.9+)
- Git
git clone https://github.com/yourusername/smart-resume.git
cd smart-resumeNavigate to the backend directory and set up the Python environment.
cd backend
python -m venv venv
# Activate Virtual Environment
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate
# Install Dependencies
pip install -r requirements.txtEnvironment Variables:
Create a .env file in the backend/ directory:
DATABASE_URL=postgresql://user:pass@host:5432/db
SECRET_KEY=your_secret_key_here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
GEMINI_API_KEY=your_gemini_api_key
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_keyRun the Server:
uvicorn main:app --reloadThe API will be available at http://localhost:8000.
Navigate to the frontend directory.
cd ../frontend
npm installRun the Application:
npm startThe application will open at http://localhost:3000.
- Upload: User uploads a PDF Resume.
- Parsing: Backend extracts text using
pdfminer. - Feature Extraction: The system extracts 8 key signals (Keyword Overlap, Semantic Similarity, Experience Gap, etc.).
- XGBoost Prediction: Returns a probability score (0-70 points).
- Gemini Evaluation: The AI acts as a recruiter to score Impact and Tone (0-30 points).
- Final Score: The weighted sum constitutes the final ATS Score.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.