Analyze your resume. Discover your strengths. Improve your career.
A full-stack portfolio project that analyzes resumes (PDF/DOCX), estimates ATS-style compatibility, detects skills, compares against job descriptions, and presents insights in a professional SaaS-style dashboard.
Scores are estimated for learning and portfolio use. They are not real ATS vendor scores and do not guarantee interviews or job offers.
Job seekers struggle to understand how resumes look to automated screening and how well they match a role. This project demonstrates a practical AI/ML + full-stack architecture that:
ai_service architecture for future integration| Layer | Technology |
|---|---|
| Frontend | React, Vite, JavaScript, CSS3, Lucide React, React Router |
| Backend | Python, FastAPI, Uvicorn |
| Parsing | pypdf, python-docx |
| Reports | reportlab |
| Persistence | SQLite (modular; swappable for PostgreSQL) |
| AI layer | Rule-based fallback + hooks for future LLM APIs |
Browser (React)
│ REST JSON
▼
FastAPI routes → resume_parser → ai_service
│ │
│ ┌─────┴──────┐
│ │ fallback │ (future LLM)
│ └─────┬──────┘
│ ▼
│ analyzer + job_matcher
▼
SQLite storage → PDF report
Key idea for interviews: routes stay stable; swap analysis providers inside ai_service.py.
ai-resume-analyzer/
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── services/api.js
│ │ ├── context/
│ │ ├── utils/
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── package.json
│ └── .env.example
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── config.py
│ │ ├── routes/
│ │ ├── services/
│ │ ├── models/
│ │ └── utils/
│ ├── requirements.txt
│ └── .env.example
├── uploads/
├── README.md
└── .gitignore
cd backend
python -m venv venv
# Windows PowerShell
.\venv\Scripts\Activate.ps1
# macOS / Linux
# source venv/bin/activate
pip install -r requirements.txt
copy .env.example .env
# On macOS/Linux: cp .env.example .env
cd frontend
npm install
copy .env.example .env
# On macOS/Linux: cp .env.example .env
frontend/.env)VITE_API_URL=http://localhost:8000
backend/.env)HOST=0.0.0.0
PORT=8000
UPLOAD_DIR=../uploads
MAX_FILE_SIZE_MB=5
ALLOWED_EXTENSIONS=.pdf,.docx
AI_PROVIDER=fallback
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
Leave OPENAI_API_KEY empty to use the rule-based analyzer.
Open two terminals.
cd backend
.\venv\Scripts\Activate.ps1
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
API docs: http://localhost:8000/docs
Health: http://localhost:8000/api/health
cd frontend
npm run dev
| Method | Path | Description |
|---|---|---|
| GET | /api/health |
Health check |
| POST | /api/upload |
Upload PDF/DOCX resume |
| POST | /api/analyze |
Analyze resume (+ optional job description) |
| POST | /api/job-match |
Standalone job match |
| GET | /api/report/{id} |
Download PDF report |
Add screenshots here after running locally:
- Landing page
- Upload page
- Results dashboard
- Job match section
ai_service.pyBuilt as a portfolio project for AI/ML, Python, GenAI, and software development roles.
MIT — feel free to adapt for your own portfolio (do not claim real ATS certification).