Thanks to visit codestin.com
Credit goes to github.com

Skip to content

AI-powered resume optimization tool (React + FastAPI + MongoDB)

Notifications You must be signed in to change notification settings

mu7ammad-3li/cv-lize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“„ CV-lize

AI-Powered Resume Optimization Platform

Transform your resume with cutting-edge AI technology. Get instant analysis, ATS compatibility checks, and professionally optimized resumes tailored to your target job.

License: MIT Python React FastAPI TypeScript

Live Demo Β· Report Bug Β· Request Feature

CV-lize Screenshot


πŸ“‘ Table of Contents


πŸ†• What's New

Version 1.0.0 - Latest Updates

🎯 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 checking
  • keyword_analyzer.py - Advanced keyword analysis
  • docx_generator.py - DOCX file generation
  • section_filter.py - Smart section filtering
  • rendercv_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


✨ Features

🎯 Core Features

  • Multi-Format Support: Upload CVs in PDF, Markdown, or Text
  • AI-Powered Analysis: Powered by OpenRouter AI (NVIDIA Nemotron)
  • ATS Optimization: 95%+ ATS compatibility score with keyword analysis
  • Real-time Preview: Professional resume template with live preview
  • Instant Results: Get optimized CV in under 30 seconds
  • Export Options: Download as Markdown, PDF, or DOCX
  • Keyword Matching: Advanced keyword extraction and density analysis
  • Dynamic Sections: Filter CV sections based on job description

πŸ”’ Security & Performance

  • Multi-Layer Validation: Advanced security scanning
  • Malware Detection: Reverse shell & malicious content detection
  • Rate Limiting: 50 requests/hour protection
  • Anonymous Usage: No sign-up required
  • Data Privacy: 24-hour auto-deletion
  • File Quarantine: Suspicious files isolated

🎬 Demo

Screenshots

Upload Interface

Upload Interface

ATS Scoring

ATS Scoring

Analysis View

Analysis View

Full Results

Full Results

Key Capabilities

  • πŸ“€ 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

πŸ—οΈ Architecture

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
Loading

Components

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

πŸ›  Tech Stack

Frontend

React TypeScript Vite TailwindCSS

Backend

Python FastAPI MongoDB

AI & ML

OpenRouter NVIDIA spaCy


πŸš€ Getting Started

Prerequisites

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)

Backend Setup

  1. Clone the repository
git clone https://github.com/mu7ammad-3li/cv-lize.git
cd cv-lize/backend
  1. Create virtual environment
python -m venv venv

# Windows
venv\Scripts\activate

# Linux/Mac
source venv/bin/activate
  1. Install dependencies
    pip install -r requirements.txt
  1. Download spaCy model
python -m spacy download en_core_web_sm
  1. 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
  1. Run the backend server
# Development
python main.py

# Or with uvicorn
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Backend will be running at: http://localhost:8000

API Documentation: http://localhost:8000/docs

Frontend Setup

  1. Navigate to frontend directory
cd frontend
  1. Install dependencies
npm install
  1. Configure environment (optional)

Create .env file in frontend/ directory:

VITE_API_URL=http://localhost:8000
  1. Run development server
npm run dev

Frontend will be running at: http://localhost:5173

  1. Build for production
npm run build

πŸ“ Project Structure

cv-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

πŸ“š API Documentation

Base URL

http://localhost:8000

Endpoints

1. Upload CV

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": {...}
  }
}

2. Analyze CV

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": [...]
  }
}

3. Download Optimized CV

GET /api/download/{session_id}/markdown
GET /api/download/{session_id}/pdf

Response: File download

4. Health Check

GET /health

Response: 200 OK
{
  "status": "healthy",
  "database": "connected"
}

Interactive API Docs

Visit http://localhost:8000/docs for Swagger UI interactive documentation.


πŸ”’ Security

CV-lize implements enterprise-grade security measures:

File Validation

βœ… Magic Byte Verification - Validates actual file type
βœ… Size Limits - Maximum 5MB per file
βœ… Format Validation - Only PDF, Markdown, and Text allowed

Malware Detection

βœ… Embedded JavaScript - Detects XSS attempts
βœ… Executable Files - Blocks PE/ELF/Mach-O binaries
βœ… Remote File Redirects - Prevents SMB attacks
βœ… XFA Forms - Detects XXE vulnerabilities

Reverse Shell Detection

βœ… 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

Application Security

βœ… 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


🌐 Deployment

Quick Deployment Options

Vercel (Frontend)

cd frontend
vercel

Deploy Guide

Render (Backend)

cd backend
# Connect GitHub repo

Deploy Guide

AWS (Full Stack)

# See AWS guide

Deploy Guide

Environment Variables (Production)

Backend:

MONGODB_URI=mongodb+srv://...
OPENROUTER_API_KEY=sk-or-v1-...
ALLOWED_ORIGINS=https://your-frontend.vercel.app
ENVIRONMENT=production
DEBUG=False

Frontend:

VITE_API_URL=https://your-backend.render.com

For detailed deployment instructions, see:


πŸ“š Documentation

Comprehensive documentation is available in the docs/ directory:

Setup & Installation

Deployment

Features & Implementation

Development

Project Status

Changelog


🀝 Contributing

Contributions are what make the open-source community amazing! Any contributions you make are greatly appreciated.

How to Contribute

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow existing code style
  • Write clear commit messages
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting PR

Code of Conduct

This project follows the Contributor Covenant Code of Conduct.


πŸ“ License

Distributed under the MIT License. See LICENSE for more information.


πŸ“§ Contact

Muhammad Ali

Project Link: https://github.com/mu7ammad-3li/cv-lize


πŸ™ Acknowledgments


⭐ Star History

If you find this project helpful, please consider giving it a star!

Star History Chart


Built with ❀️ by Muhammad Ali

⬆ Back to Top

About

AI-powered resume optimization tool (React + FastAPI + MongoDB)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published