ResumeIQ is a production-ready AI-powered platform that helps software engineers and professionals optimize resumes for specific job descriptions.
The system performs:
- ATS Compatibility Analysis
- Resume-to-JD Matching
- Skill Gap Detection
- Keyword Analysis
- Resume Rewriting
- Professional Recommendation Generation
- Multi-format Report Exporting
- PDF Upload Support
- Instant Text Extraction
- Metadata Detection
- Match Score Generation
- Keyword Coverage
- Recruiter Readability Evaluation
- Section Rewrite Suggestions
- Professional Improvements
- Skill Enhancement Recommendations
- Missing Skills Detection
- Missing Keywords
- Weak Section Identification
- Complete Resume Redrafting
- ATS Optimized Formatting
- Context-Aware Improvements
- Local Analysis Storage
- Search and Filter
- Quick Reopen
- PDF Reports
- PNG Snapshots
- Markdown
- JSON
- CSV
- TXT
- Multi-format Report Exporting
| Technology | Purpose |
|---|---|
| React 19 | UI Framework |
| TypeScript | Type Safety |
| Vite | Build Tool |
| Tailwind CSS | Styling |
| html2canvas | Snapshot Generation |
| jsPDF | PDF Export |
| Lucide React | Icons |
| Technology | Purpose |
|---|---|
| FastAPI | REST API |
| Python 3.11 | Runtime |
| Pydantic | Validation |
| PyPDF2 | PDF Parsing |
| HTTPX | API Communication |
| OpenAI SDK | OpenRouter Integration |
| Service | Usage |
|---|---|
| OpenRouter | Unified AI Gateway |
| Gemini 2.5 Flash | Fast Analysis |
| Claude 3.5 Sonnet | Detailed Reasoning |
| GPT Models | Alternative Analysis |
graph TB
User([👤 User])
subgraph Frontend
UI[React + TypeScript]
Store[(Local Storage)]
Export[Export Engine]
end
subgraph Backend
API[FastAPI Server]
Parser[PDF Parser]
Validator[Pydantic Models]
end
subgraph AI
OpenRouter[OpenRouter API]
LLMs[Gemini / Claude / GPT]
end
User --> UI
UI --> Store
UI --> API
API --> Parser
API --> Validator
API --> OpenRouter
OpenRouter --> LLMs
LLMs --> API
API --> UI
UI --> Export
flowchart LR
A[Upload Resume PDF]
B[Extract Resume Text]
C[Paste Job Description]
D[Send Analysis Request]
E[OpenRouter AI Analysis]
F[ATS Score Calculation]
G[Gap Detection]
H[Keyword Matching]
I[Recommendations]
J[Resume Rewriting]
K[Export Results]
A --> B
B --> D
C --> D
D --> E
E --> F
E --> G
E --> H
F --> I
G --> I
H --> I
I --> J
J --> K
ResumeIQ/
│
├── backend/
│ │
│ ├── analyzer.py # AI analysis engine
│ ├── parser.py # PDF text extraction
│ ├── models.py # Pydantic schemas
│ ├── main.py # FastAPI application entry
│ ├── requirements.txt # Python dependencies
│ ├── Dockerfile # Backend container
│ ├── .env.example # Environment template
│ └── .env # Local environment variables
│
├── frontend/
│ │
│ ├── public/
│ │
│ ├── src/
│ │ │
│ │ ├── api/
│ │ │ └── resumeApi.ts
│ │ │
│ │ ├── assets/
│ │ │ ├── hero.png
│ │ │ ├── react.svg
│ │ │ └── vite.svg
│ │ │
│ │ ├── components/
│ │ │ ├── ExportModal.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── ImprovementCard.tsx
│ │ │ ├── Loader.tsx
│ │ │ ├── ModelSelector.tsx
│ │ │ ├── ResultPanel.tsx
│ │ │ ├── ResumeCharts.tsx
│ │ │ ├── ScoreCard.tsx
│ │ │ └── UploadZone.tsx
│ │ │
│ │ ├── pages/
│ │ │ ├── Home.tsx
│ │ │ ├── AnalysisDetail.tsx
│ │ │ └── HistoryWorkspace.tsx
│ │ │
│ │ ├── types/
│ │ │ └── index.ts
│ │ │
│ │ ├── utils/
│ │ │ └── history.ts
│ │ │
│ │ ├── App.tsx
│ │ ├── App.css
│ │ ├── main.tsx
│ │ └── index.css
│ │
│ ├── index.html
│ ├── package.json
│ ├── package-lock.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── tsconfig.app.json
│ ├── tsconfig.node.json
│ ├── eslint.config.js
│ ├── Dockerfile
│ └── README.md
│
├── docker-compose.yml
├── .gitignore
└── README.md
git clone https://github.com/LoganthP/ResumeIQ.git
cd ResumeIQCreate a .env file inside the backend/ directory:
OPENROUTER_API_KEY="your_openrouter_key_here"
OPENROUTER_MODEL=google/gemini-2.5-flash
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
APP_SITE_URL=http://localhost:5173
APP_SITE_NAME=ResumeIQReplace
your_openrouter_key_herewith your actual OpenRouter API key.
Navigate to the backend directory:
cd backendpython -m venv venv.\venv\Scripts\Activate.ps1venv\Scripts\activate.batsource venv/bin/activatepip install -r requirements.txtcopy .env.example .envcp .env.example .envUpdate the .env file with your OpenRouter API key.
uvicorn main:app --reloadBackend API:
http://localhost:8000
Swagger Documentation:
http://localhost:8000/docs
cd backend
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reloadOpen a new terminal window:
cd frontendnpm installnpm run devhttp://localhost:5173
| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8000 |
| API Documentation | http://localhost:8000/docs |
docker-compose up --builddocker-compose up -ddocker-compose down| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8000 |
| API Documentation | http://localhost:8000/docs |
- User Authentication
- Cloud-Based Analysis History
- Resume Version Comparison
- Cover Letter Generator
- LinkedIn Profile Analysis
- Multi-Resume Management
- Team Collaboration Workspace
- ATS Simulation Engine
- One-Click Resume Export Templates
- AI Cover Letter Generator
- LinkedIn Profile Analysis
- Resume Section-Level Scoring
- ATS Formatting Validation
- Resume Version Comparison
- Cloud-Based Analysis History
- User Authentication & Profiles
- GitHub Profile Integration
- AI Interview Preparation Assistant
- Personalized Career Recommendations
- Job Match Prediction
- Smart Resume Templates