- Overview
- Demo
- Features
- Tech Stack
- System Architecture
- Usage
- API Documentation
- Project Structure
- Authors
skillbridge.AI is an intelligent career development platform that helps students and job seekers identify skill gaps between their résumé and target job positions. Using advanced Large Language Models (LLMs), the platform provides personalized course recommendations, hands-on project ideas, and AI-generated cover letters to help bridge these gaps and land dream internships or new grad positions.
- Skill Gap Analysis: Automatically identify missing skills required for target positions
- Personalized Learning: Recommend relevant courses from Udemy and Coursera
- Project-Based Learning: Generate actionable project ideas to build missing skills
- Cover Letter Generation: Create tailored cover letters using AI
Or visit the live application: https://level-up-llm-skill-analyzer.onrender.com/
- Automated Skill Extraction: Extracts skills from both résumé and job descriptions using LLM
- Intelligent Matching: Compares required vs. available skills with weighted scoring
- Visual Analytics: Displays match percentages, coverage statistics, and gap analysis
- Skill Categorization: Organizes skills into Programming Languages, Frameworks/Libraries, Tools/Platforms, and Soft Skills
- Multi-Platform Support: Searches across Udemy and Coursera databases
- Free & Paid Options: Provides both free and paid course recommendations
- Skill-Based Matching: Matches courses to missing skills with deep search algorithms
- Detailed Course Info: Includes duration, difficulty, ratings, costs, and direct links
- Two-Track Approach:
- Project 1: Build with your current skills (immediate portfolio projects)
- Project 2: Learn missing skills (projects that help you grow)
- Comprehensive Details: Includes tech stack, implementation phases, key features, and portfolio impact
- Actionable Outlines: Step-by-step project breakdowns with specific deliverables
- Personalized Content: Generates job-specific cover letters using your résumé
- Template Support: Accepts custom templates (.txt, .docx, .pdf)
- Professional Formatting: Creates ready-to-use cover letters
- One-Click Copy: Easy copy-to-clipboard functionality
- Real-time Progress: Live progress updates during generation
- Request Caching: Intelligent request deduplication to prevent duplicate processing (60-second TTL)
- Streaming Responses: Server-Sent Events (SSE) for real-time progress updates
- Graduate Student Detection: Automatically detects if a job requires graduate-level education
- Multi-format Support: Handles PDF, DOCX, and TXT files for templates
- HTML5 - Markup language for structuring web pages
- CSS3 - Styling and modern design with custom responsive layouts
- JavaScript (Vanilla JS) - Client-side scripting for interactive UI
- Jinja2 - Server-side templating engine for dynamic HTML generation
- Server-Sent Events (SSE) - Real-time streaming updates for progress tracking
- Python 3.8+ - Primary programming language
- FastAPI - Modern, fast web framework for building APIs
- Uvicorn - ASGI server for running FastAPI applications
- python-multipart - File upload handling
- OpenAI API - GPT models for:
- Skill extraction from résumés and job descriptions
- Course and project recommendations
- AI-powered cover letter generation
- OpenAI Python SDK - Official Python client for OpenAI API
- MongoDB - NoSQL database for storing course data
- PyMongo - MongoDB Python driver
- MongoDB Atlas - Cloud database hosting
- PDF Processing:
- PyMuPDF (fitz) - Fast and efficient PDF parsing
- PyPDF2 - PDF text extraction
- pdfminer.six - Advanced PDF parsing and text extraction
- OCR (Optical Character Recognition):
- pytesseract - Text extraction from scanned documents
- Pillow (PIL) - Image processing for OCR
- Word Documents:
- python-docx - Microsoft Word (.docx) file processing
- pandas - Data manipulation and analysis for course data
- chardet - Character encoding detection
- argparse - Command-line argument parsing
- python-dotenv - Environment variable management
- Git & GitHub - Version control and code repository
- Render - Cloud hosting platform for deployment
- Request Deduplication - In-memory caching to prevent duplicate processing
- Progress Callbacks - Real-time progress tracking during long-running operations
- Error Handling - Comprehensive error handling with detailed error messages
- File Validation - Automatic file type validation and error reporting
┌─────────────────────────────────────────────────────────────┐
│ Frontend (Web UI) │
│ HTML/CSS/JavaScript + Jinja2 Templates │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ FastAPI Backend Server │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Resume │ │ Job Skills │ │ Scoring │ │
│ │ Extraction │ │ Extraction │ │ Engine │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Course │ │ Project │ │ Cover │ │
│ │ Recommender │ │ Recommender │ │ Letter │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└───────────┬───────────────────┬───────────────────┬────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ OpenAI │ │ MongoDB │ │ PDF Parser │
│ API │ │ Database │ │ Libraries │
└──────────────┘ └──────────────┘ └──────────────┘
┌─────────────────────┐
│ Resume Text │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ │
│ Extract Skills │
└─────────────────────┘
│
▼
│
└─────────────────┐
│
┌─────────────────────┐ │
│ Job Text │ │
└─────────────────────┘ │
│ │
▼ │
┌─────────────────────┐ │
│ │ │
│ Extract Skills │ │
└─────────────────────┘ │
│ │
▼ │
│ │
└────────┬────────┘
│
▼
┌─────────────────────┐
│ │
│ Match & Score │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ match_scores │
└─────────────────────┘
│
┌────────┴────────┐
│ │
▼ │
┌─────────────────────┐ │
│ │ │
│ Recommend │ │
│ Courses │ │
└─────────────────────┘ │
│ │
▼ │
│ │
└────────┬────────┘
│
▼
┌─────────────────────┐
│ │
│ Recommend │
│ Projects │
└─────────────────────┘
│
│
▼
┌─────────────────────┐
│ final_report │
└─────────────────────┘
- Input: User uploads PDF résumé and pastes job description
- Parsing: PDF text extraction using multiple parsing methods
- Skill Extraction: LLM extracts and categorizes skills from both documents
- Comparison: Skills are compared to identify gaps
- Scoring: Match scores calculated (overall, required, preferred)
- Recommendations:
- Courses fetched from MongoDB based on missing skills
- Projects generated using LLM
- Output: Comprehensive report with all recommendations
Visit the live application and:
-
Skill Gap Analyzer Tab:
- Upload your PDF résumé
- Paste the job description
- Click "Analyze Match"
- Watch real-time progress updates as the system processes your request
- View comprehensive skill gap analysis with:
- Overall match score and coverage statistics
- Required and preferred skills breakdown
- Course recommendations (free and paid options)
- Project recommendations (build with current skills vs. learn missing skills)
- Graduate student job detection warnings
-
Cover Letter Generator Tab:
- Upload your PDF résumé
- Paste the job description
- Optionally upload a cover letter template (.txt, .docx, or .pdf)
- Click "Generate Cover Letter"
- Watch real-time progress updates during generation
- Copy the generated cover letter with one click
GET /
- Returns the main web interface with tabs for Skill Gap Analyzer and Cover Letter Generator
POST /analyze (SSE Streaming)
- Content-Type:
multipart/form-data - Parameters:
resume(file, required): PDF resume filejob_text(string, required): Job description text
- Response: Server-Sent Events stream with progress updates and final JSON result
- Features: Request caching, real-time progress tracking
curl -X POST "https://level-up-llm-skill-analyzer.onrender.com/analyze" \
-F "resume=@your_resume.pdf" \
-F "job_text=Your job description here"POST /cover-letter (SSE Streaming)
- Content-Type:
multipart/form-data - Parameters:
resume(file, required): PDF resume filejob_text(string, required): Job description texttemplate(file, optional): Cover letter template (.txt, .docx, or .pdf)
- Response: Server-Sent Events stream with progress updates and final cover letter
curl -X POST "https://level-up-llm-skill-analyzer.onrender.com/cover-letter" \
-F "resume=@your_resume.pdf" \
-F "job_text=Your job description here" \
-F "template=@template.txt" # OptionalGET /health
- Returns service health status
- Response:
{"status": "healthy", "service": "Resume-Job Match Analyzer"}
The /analyze endpoint returns Server-Sent Events (SSE) with the following message types:
Progress Messages:
{
"type": "progress",
"message": "Extracting skills from resume..."
}Complete Response:
{
"type": "complete",
"data": {
"overall_score": {
"weighted_score": 75.5,
"total_skills": 20,
"matched_skills": 15
},
"required_skills": {
"total_count": 10,
"covered_count": 8,
"match_score": 80.0,
"covered_skills": ["Python", "FastAPI", "MongoDB"],
"missing_skills": ["Docker", "Kubernetes"]
},
"preferred_skills": {
"total_count": 10,
"covered_count": 7,
"match_score": 70.0,
"covered_skills": ["React", "TypeScript"],
"missing_skills": ["AWS", "GraphQL", "Redis"]
},
"course_recommendations": {
"free_courses": [
{
"title": "Course Title",
"platform": "Udemy",
"duration": "10 hours",
"difficulty": "Intermediate",
"cost": "Free",
"link": "https://...",
"skills_covered": ["Python", "FastAPI"],
"description": "...",
"why_efficient": "..."
}
],
"paid_courses": [
{
"title": "Course Title",
"platform": "Coursera",
"duration": "20 hours",
"difficulty": "Advanced",
"cost": "$49.99",
"link": "https://...",
"skills_covered": ["Docker", "Kubernetes"],
"description": "...",
"why_efficient": "..."
}
],
"skill_coverage": {...},
"coverage_percentage": 75
},
"project_recommendations": {
"Track Name": [
{
"title": "Project Name",
"description": "...",
"difficulty": "Intermediate",
"estimated_time": "2-3 weeks",
"tech_stack": ["Python", "FastAPI", "MongoDB"],
"key_features": ["Feature 1", "Feature 2"],
"skills_demonstrated": ["Skill 1", "Skill 2"],
"technologies": ["Tech 1", "Tech 2"],
"project_outline": "High-level overview",
"implementation_phases": [
{
"phase": "Phase 1: Setup",
"details": "Detailed steps..."
}
],
"portfolio_impact": "...",
"bonus_challenges": ["Challenge 1", "Challenge 2"]
}
]
},
"is_grad_student_job": false
}
}Error Response:
{
"type": "error",
"message": "Error description here"
}The /cover-letter endpoint returns Server-Sent Events (SSE) with similar structure:
Progress Messages:
{
"type": "progress",
"message": "Extracting personal information from resume..."
}Complete Response:
{
"type": "complete",
"data": {
"cover_letter": "Generated cover letter text here..."
}
}FastAPI automatically generates interactive API documentation:
- Swagger UI: Available at
/docswhen running locally - ReDoc: Available at
/redocwhen running locally
level-up-llm-skill-analyzer/
├── app_fastapi.py # Main FastAPI application with SSE streaming
├── extract_skills.py # Résumé skill extraction using LLM
├── extract_job_skills.py # Job description skill extraction using LLM
├── score_skills_match.py # Skill matching and scoring engine
├── recommend_courses.py # Course recommendation engine (MongoDB integration)
├── recommend_projects.py # Project recommendation generator using LLM
├── generate_report.py # Report generation orchestrator
├── generate_cover_letter.py # AI-powered cover letter generator
├── pdf_resume_parser.py # Multi-method PDF text extraction (PyMuPDF, PyPDF2, pdfminer)
├── skill_normalization.py # Skill normalization and canonicalization
├── check_setup.py # Setup verification script
├── requirements.txt # Python dependencies
├── README.md # Project documentation
├── CTP_template.txt # Cover letter template example
├── scripts/
│ └── load_courses_to_mongo.py # Script to load course data into MongoDB
└── templates/
├── index.html # Main UI template with tabs
├── skill_analyzer.html # Skill analysis form template
└── cover_letter.html # Cover letter form template
Made with ❤️ for students and job seekers