AI-powered resume analysis tool that scores how well a candidate matches a job description using Google Gemini API.
- Upload resume (PDF or TXT)
- Paste or upload job description (TXT)
- AI-powered analysis with a match score (1-100)
- Detailed breakdown: matched skills, missing skills, strengths, weaknesses
- Dashboard with charts to compare multiple analyses
- Frontend: React, Vite, Tailwind CSS, Chart.js
- Backend: Node.js, Express, Multer, pdf-parse
- AI: Google Gemini API (
@google/genai)
- Node.js v20+
- A Google Gemini API key (Get one here)
# Clone the repo
git clone "git@github.com:Kite-Bite/Resume-Analyzer.git"
cd Resume-Analyzer
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installCreate backend/.env:
GEMINI_API_KEY=your_api_key_here
PORT=5000
Open two terminals:
# Terminal 1 - Backend (port 5000)
cd backend
npm run dev
# Terminal 2 - Frontend (port 3000)
cd frontend
npm run devThen open http://localhost:3000.
Resume-Analyzer/
├── backend/
│ ├── server.js # Express server
│ ├── routes/analyze.js # API routes
│ ├── services/gemini.js # Gemini API integration
│ ├── uploads/ # Temp file storage
│ └── .env # API key config
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Main app
│ │ ├── components/
│ │ │ ├── Header.jsx
│ │ │ ├── ResumeUpload.jsx
│ │ │ ├── JobDescription.jsx
│ │ │ ├── ScoreCard.jsx
│ │ │ ├── AnalysisDetails.jsx
│ │ │ └── Dashboard.jsx
│ │ └── index.css
│ └── vite.config.js
├── .gitignore
└── README.md
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/analyze |
Upload resume + job description, get analysis |
| GET | /api/history |
Get all past analyses |
| DELETE | /api/history/:id |
Delete an analysis |