Transform your resume with cutting-edge AI technology. Get instant analysis, ATS compatibility checks, and professionally optimized resumes tailored to your target job.
- What's New
- Features
- Demo
- Architecture
- Tech Stack
- Getting Started
- Project Structure
- API Documentation
- Security
- Deployment
- Documentation
- Contributing
- License
- Contact
π― ATS Optimization
- Advanced keyword extraction and density analysis
- ATS compatibility validation (95%+ scores)
- Job description keyword matching
- STAR methodology for experience bullets
π Multiple Export Formats
- Markdown download (optimized content)
- PDF generation (ATS-friendly templates)
- DOCX generation (editable Word documents)
- RenderCV integration for professional templates
π Enhanced Analysis
- Keyword matching visualization
- Dynamic section filtering based on job description
- Improved strengths/weaknesses analysis
- Actionable suggestions with specific improvements
π οΈ New Backend Services
ats_validator.py- ATS compatibility checkingkeyword_analyzer.py- Advanced keyword analysisdocx_generator.py- DOCX file generationsection_filter.py- Smart section filteringrendercv_generator.py- Professional template rendering
π Documentation
- Comprehensive setup guides in
docs/setup/ - ATS implementation guides
- API documentation
- Project status tracking
- Migration guides for RenderCV
See full changelog: CHANGELOG.md
|
|
|
Upload Interface |
ATS Scoring |
|
Analysis View |
Full Results |
- π€ Drag & Drop Upload: Easy file upload with support for PDF, Markdown, and Text
- π€ AI Analysis: Comprehensive CV analysis with actionable insights
- π ATS Scoring: Detailed compatibility metrics for Applicant Tracking Systems
- β¨ Professional Templates: Clean, ATS-friendly resume designs
- π¨ Live Preview: Real-time preview of optimized resume
- πΎ Multiple Formats: Download as Markdown, PDF, or DOCX
- π Keyword Analysis: Match job description keywords with CV content
- β‘ Dynamic Filtering: Show/hide CV sections based on relevance
graph TB
A[User] -->|Upload CV| B[Frontend - React + Vite]
B -->|API Request| C[Backend - FastAPI]
C -->|Store| D[MongoDB Atlas]
C -->|Analyze| E[spaCy NLP]
C -->|Optimize| F[AI - Gemini/OpenRouter]
C -->|Validate| G[Security Scanner]
F -->|Optimized CV| C
C -->|Response| B
B -->|Display| A
Frontend (React + TypeScript + Vite)
- Modern React 19 with TypeScript for type safety
- Vite for lightning-fast development and builds
- TailwindCSS for responsive, utility-first styling
- shadcn/ui for beautiful, accessible components
- Framer Motion for smooth animations
Backend (FastAPI + Python)
- Async FastAPI for high-performance API
- spaCy for advanced NLP and entity extraction
- MongoDB Atlas for scalable cloud database
- Multi-AI support (Gemini & OpenRouter)
- WeasyPrint for server-side PDF generation
Before you begin, ensure you have the following installed:
- Python 3.11+ (Download)
- Node.js 18+ (Download)
- MongoDB Atlas Account (Sign Up - Free M0 tier)
- OpenRouter API Key (Get Key - Free tier available)
- Optional: Google Gemini API Key (Get Key - Alternative AI provider)
- Clone the repository
git clone https://github.com/mu7ammad-3li/cv-lize.git
cd cv-lize/backend- Create virtual environment
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate- Install dependencies
pip install -r requirements.txt- Download spaCy model
python -m spacy download en_core_web_sm- Configure environment variables
Create .env file in backend/ directory:
# MongoDB Atlas
MONGODB_URI=mongodb+srv://username:[email protected]/cvlize?retryWrites=true&w=majority
# OpenRouter AI
OPENROUTER_API_KEY=sk-or-v1-your-key-here
# Google Gemini (Optional - alternative to OpenRouter)
GEMINI_API_KEY=your-gemini-api-key
# Application
ENVIRONMENT=development
DEBUG=True
PORT=8000
HOST=0.0.0.0
# CORS
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000
# File Upload
MAX_FILE_SIZE=5242880
UPLOAD_DIR=./uploads
QUARANTINE_DIR=./quarantine
# Rate Limiting
RATE_LIMIT_PER_MINUTE=10
RATE_LIMIT_WINDOW=900
# Session
SESSION_TTL_HOURS=24- Run the backend server
# Development
python main.py
# Or with uvicorn
uvicorn main:app --reload --host 0.0.0.0 --port 8000Backend will be running at: http://localhost:8000
API Documentation: http://localhost:8000/docs
- Navigate to frontend directory
cd frontend- Install dependencies
npm install- Configure environment (optional)
Create .env file in frontend/ directory:
VITE_API_URL=http://localhost:8000- Run development server
npm run devFrontend will be running at: http://localhost:5173
- Build for production
npm run buildcv-lize/
βββ π backend/ # FastAPI Backend
β βββ main.py # Application entry point
β βββ requirements.txt # Python dependencies
β βββ .env # Environment variables (create this)
β βββ .env.example # Environment template
β βββ Dockerfile # Docker configuration
β βββ API_DOCUMENTATION.md # API documentation
β βββ π routes/ # API endpoints
β β βββ upload.py # CV upload endpoint
β β βββ analyze.py # AI analysis endpoint
β β βββ download.py # Download endpoints (MD, PDF, DOCX)
β βββ π services/ # Business logic
β β βββ nlp_processor.py # spaCy CV parsing
β β βββ gemini_service.py # Google Gemini AI (optional)
β β βββ openrouter_service.py # OpenRouter AI (primary)
β β βββ ats_validator.py # ATS compatibility validation
β β βββ keyword_analyzer.py # Keyword extraction & analysis
β β βββ section_filter.py # Dynamic section filtering
β β βββ markdown_parser.py # Markdown processing
β β βββ pdf_generator.py # PDF generation
β β βββ docx_generator.py # DOCX generation
β β βββ rendercv_generator.py # RenderCV integration
β β βββ rendercv_transformer.py # CV data transformation
β βββ π models/ # Data models
β β βββ schemas.py # Pydantic schemas
β β βββ database.py # MongoDB connection
β βββ π middleware/ # Middleware
β β βββ rate_limit.py # Rate limiting
β βββ π utils/ # Utilities
β β βββ pdf_validator.py # Security validation
β βββ π templates/ # PDF templates
β βββ professional.html # Professional template
β βββ professional_structured_v2.html # ATS-optimized template
βββ π frontend/ # React Frontend
β βββ π src/
β β βββ App.tsx # Main application
β β βββ main.tsx # Entry point
β β βββ index.css # Global styles
β β βββ π components/ # React components
β β β βββ HomePage.tsx # Landing page
β β β βββ FileUpload.tsx # Drag-drop upload
β β β βββ CVAnalysis.tsx # Analysis display
β β β βββ ProfessionalTemplate.tsx # Resume template
β β β βββ π ui/ # shadcn/ui components
β β βββ π lib/ # Utilities
β β β βββ api.ts # API client
β β β βββ utils.ts # Helper functions
β β βββ π templates/ # Additional templates
β βββ package.json # Node dependencies
β βββ vite.config.ts # Vite configuration
β βββ tailwind.config.js # Tailwind configuration
β βββ tsconfig.json # TypeScript configuration
βββ π docs/ # Documentation
β βββ π images/ # Main images
β β βββ screenshot.png # Hero screenshot
β βββ π screenshots/ # Application screenshots
β β βββ cv-lize-upload-interface.png
β β βββ cv-lize-ats-scoring.png
β β βββ cv-lize-analysis-view.png
β β βββ cv-lize-full-analysis-result.png
β βββ π setup/ # Setup guides
β β βββ INSTALLATION_GUIDE.md # Installation instructions
β β βββ SETUP.md # Quick setup guide
β β βββ DEPLOYMENT.md # Deployment guides
β β βββ FREE_DEPLOYMENT.md # Free deployment options
β β βββ AWS_DEPLOYMENT.md # AWS deployment guide
β β βββ GIT_SETUP.md # Git configuration
β β βββ GITIGNORE_GUIDE.md # Gitignore documentation
β βββ π project-status/ # Project status documents
β β βββ PROJECT_COMPLETE.md # Project completion status
β β βββ BACKEND_COMPLETE.md # Backend completion status
β β βββ IMPLEMENTATION_STATUS.md # Implementation details
β β βββ TESTING_COMPLETE.md # Testing status
β β βββ STATUS.md # Overall status
β β βββ SYSTEM_STATUS.md # System status
β βββ π development/ # Development docs
β β βββ ATS_SYSTEM_PROMPT.md # ATS optimization prompts
β βββ π migration/ # Migration guides
β β βββ RENDERCV_MIGRATION.md # RenderCV migration
β βββ ATS_IMPLEMENTATION.md # ATS feature implementation
β βββ ATS_RECOMMENDATIONS.md # ATS best practices
β βββ DYNAMIC_SECTIONS_FEATURE.md # Dynamic sections feature
β βββ INTEGRATION_GUIDE.md # Integration documentation
β βββ CHANGELOG.md # Project changelog
βββ .gitignore # Git ignore rules
βββ CHANGELOG.md # Changelog (root copy)
βββ README.md # This file
βββ LICENSE # MIT License
http://localhost:8000
POST /api/upload
Content-Type: multipart/form-data
Parameters:
- file: File (PDF, Markdown, or Text)
Response: 200 OK
{
"session_id": "uuid-v4",
"filename": "john_doe_cv.pdf",
"file_hash": "sha256...",
"file_type": "pdf",
"extracted_text": "...",
"parsed_data": {
"skills": ["Python", "FastAPI", "React"],
"experience": [...],
"education": [...],
"contact": {...}
}
}POST /api/analyze
Content-Type: application/json
Body:
{
"session_id": "uuid-v4",
"job_description": "We are seeking a Full Stack Developer..."
}
Response: 200 OK
{
"analysis": {
"score": 85,
"ats_compatibility": 92,
"match_percentage": 78,
"strengths": ["Strong technical skills", ...],
"weaknesses": ["Limited management experience", ...],
"suggestions": ["Add cloud certifications", ...]
},
"optimized_cv": {
"markdown": "# Full Name\n\n## Professional Summary\n..."
},
"parsed_resume": {
"personalInfo": {...},
"sections": [...]
}
}GET /api/download/{session_id}/markdown
GET /api/download/{session_id}/pdf
Response: File downloadGET /health
Response: 200 OK
{
"status": "healthy",
"database": "connected"
}Visit http://localhost:8000/docs for Swagger UI interactive documentation.
CV-lize implements enterprise-grade security measures:
β
Magic Byte Verification - Validates actual file type
β
Size Limits - Maximum 5MB per file
β
Format Validation - Only PDF, Markdown, and Text allowed
β
Embedded JavaScript - Detects XSS attempts
β
Executable Files - Blocks PE/ELF/Mach-O binaries
β
Remote File Redirects - Prevents SMB attacks
β
XFA Forms - Detects XXE vulnerabilities
β
Bash Reverse Shells - bash -i >& /dev/tcp/
β
Python Sockets - socket.socket()
β
Netcat/Socat - Common backdoor patterns
β
PowerShell TCP - System.Net.Sockets.TCPClient
β
Ruby/Perl Shells - Various reverse shell patterns
β
Rate Limiting - 50 requests/hour per IP
β
CORS Protection - Whitelist-based origins
β
Input Sanitization - All user inputs sanitized
β
Session Management - 24-hour TTL with auto-cleanup
β
File Quarantine - Suspicious files isolated with SHA-256 logging
cd frontend
vercel |
cd backend
# Connect GitHub repo |
# See AWS guide |
Backend:
MONGODB_URI=mongodb+srv://...
OPENROUTER_API_KEY=sk-or-v1-...
ALLOWED_ORIGINS=https://your-frontend.vercel.app
ENVIRONMENT=production
DEBUG=FalseFrontend:
VITE_API_URL=https://your-backend.render.comFor detailed deployment instructions, see:
- Free Deployment Guide - Vercel + Render (100% Free)
- AWS Deployment Guide - AWS Free Tier
- General Deployment - All options
Comprehensive documentation is available in the docs/ directory:
- Installation Guide - Detailed installation instructions
- Quick Setup - Fast setup guide
- Git Setup - Git configuration
- Gitignore Guide - Git ignore patterns
- Free Deployment - Deploy for free (Vercel + Render)
- AWS Deployment - AWS EC2 + MongoDB Atlas
- General Deployment - All deployment options
- ATS Implementation - ATS optimization features
- ATS Recommendations - ATS best practices
- Dynamic Sections - Dynamic section filtering
- Integration Guide - Integration documentation
- API Documentation - Backend API reference
- ATS System Prompt - AI optimization prompts
- RenderCV Migration - RenderCV integration guide
- Project Complete - Overall completion status
- Backend Complete - Backend status
- Implementation Status - Feature implementation
- Testing Complete - Testing status
- System Status - System overview
- CHANGELOG.md - Version history and changes
Contributions are what make the open-source community amazing! Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow existing code style
- Write clear commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project follows the Contributor Covenant Code of Conduct.
Distributed under the MIT License. See LICENSE for more information.
Muhammad Ali
- GitHub: @mu7ammad-3li
- Email: [email protected]
- LinkedIn: linkedin.com/in/muhammad-3lii
Project Link: https://github.com/mu7ammad-3li/cv-lize
- FastAPI - Modern Python web framework
- React - UI library
- shadcn/ui - Beautiful component library
- spaCy - Advanced NLP
- OpenRouter - AI gateway and API
- NVIDIA Nemotron - AI language model
- Google Gemini - Alternative AI analysis
- MongoDB Atlas - Cloud database
- RenderCV - Professional CV templates
- Vercel - Frontend deployment
- Render - Backend deployment
If you find this project helpful, please consider giving it a star!
Built with β€οΈ by Muhammad Ali