AI-Powered Career Readiness Analysis Platform
A comprehensive full-stack web application that analyzes university syllabi and identifies skill gaps compared to industry requirements. Upload your syllabus PDF or paste text content, and get personalized insights on what skills you already have and what you need to learn for your target career.
- Smart PDF Processing: Extract and analyze text from university syllabus PDFs
- Advanced NLP: Uses spaCy, NLTK, and scikit-learn for intelligent skill extraction
- Industry Comparison: Comprehensive database of industry skill requirements
- Multi-format Support: PDF upload or direct text input
- Visual Analytics: Interactive charts and radar visualizations
- Skill Categorization: Organized by programming, tools, frameworks, etc.
- Coverage Metrics: Detailed percentage-based coverage analysis
- Gap Identification: Clear identification of missing skills
- Learning Recommendations: Curated course suggestions from top platforms
- Resource Links: Direct links to Coursera, Udemy, and other learning platforms
- Progress Tracking: Save and retrieve previous analyses
- Field-Specific Insights: Tailored for Computer Science, Engineering, Data Science, etc.
- Frontend: React 18 + Tailwind CSS + Chart.js
- Backend: FastAPI + Python + SQLite
| Upload Interface | Analysis Results | Skill Visualization |
|---|---|---|
![]() |
![]() |
![]() |
- Python 3.13.4+ with pip
- Node.js 16+ with npm
- No API keys required - completely free to use!
# Clone the repository
git clone <repository-url>
cd skill-gap-predictor
# Make scripts executable
chmod +x start.sh backend/start.sh frontend/start.sh
# Start both backend and frontend
./start.shThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
cd backend
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Setup NLP models and data
python setup_nlp.py
# Setup environment variables
cp .env.example .env
# No API keys needed - ready to use!
# Initialize database
cd ../database
python populate_skills.py
cd ../backend
# Start backend server
python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reloadcd frontend
# Install dependencies
npm install
# Create environment file
echo "REACT_APP_API_URL=http://localhost:8000" > .env.local
# Start development server
npm start# Environment Configuration
ENVIRONMENT=development
ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
# Optional: Enable debug logging for NLP processing
DEBUG_NLP=falseREACT_APP_API_URL=http://localhost:8000
REACT_APP_ENV=developmentskill-gap-predictor/
βββ π backend/ # FastAPI backend
β βββ π main.py # Main FastAPI application
β βββ π requirements.txt # Python dependencies
β βββ βοΈ .env.example # Environment template
β βββ π start.sh # Backend startup script
β βββ π database/ # SQLite database files
βββ π frontend/ # React frontend
β βββ π src/
β β βββ βοΈ App.js # Main React component
β β βββ π components/ # React components
β β β βββ FileUpload.js # File upload interface
β β β βββ Results.js # Analysis results display
β β β βββ SkillChart.js # Data visualizations
β β β βββ Loading.js # Loading states
β β β βββ Error.js # Error handling
β β βββ π¨ index.css # Tailwind CSS styles
β βββ π¦ package.json # Node.js dependencies
β βββ βοΈ tailwind.config.js # Tailwind configuration
β βββ π start.sh # Frontend startup script
βββ π database/ # Database utilities
β βββ π populate_skills.py # Industry skills data
βββ π start.sh # Main startup script
βββ π README.md # This file
POST /analyze- Analyze syllabus (PDF or text)GET /skills/{analysis_id}- Retrieve analysis by IDGET /fields- Get available fields of studyGET /analyses- Get recent analysesGET /health- Health check
// Analyze syllabus
const formData = new FormData();
formData.append('university', 'Mumbai University');
formData.append('field', 'Computer Science');
formData.append('file', pdfFile);
const response = await fetch('/analyze', {
method: 'POST',
body: formData
});
const analysis = await response.json();# In database/populate_skills.py
new_skills = [
("Computer Science", "Skill Name", "Category", 8, "Source"),
# Add more skills...
]# In backend/main.py - extract_skills_with_llm function
prompt = f"""
Custom prompt for skill extraction...
Analyze: {syllabus_text}
Return: JSON array of skills
"""// In frontend/src/components/SkillChart.js
const customChartData = {
// Add new chart configurations
};# Build and run with Docker Compose
docker-compose up --build
# Or build individual containers
docker build -t skillgap-backend ./backend
docker build -t skillgap-frontend ./frontend# Backend production server
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
# Frontend production build
npm run build
serve -s build -l 3000cd backend
python -m pytest tests/ -vcd frontend
npm test# Test API endpoints
curl -X POST http://localhost:8000/analyze \
-F "university=Test University" \
-F "field=Computer Science" \
-F "text_content=Python programming, data structures, algorithms"Backend won't start:
# Check Python version
python3 --version # Should be 3.13.4+
# Check virtual environment
source venv/bin/activate
pip list
# Setup NLP dependencies
python setup_nlp.pyFrontend won't start:
# Check Node.js version
node --version # Should be 16+
# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm installAPI connection issues:
- Verify backend is running on port 8000
- Check
REACT_APP_API_URLin frontend.env.local - Ensure CORS is configured correctly
NLP processing issues:
- Run
python setup_nlp.pyto download required models - Check if spaCy model is installed:
python -c "import spacy; spacy.load('en_core_web_sm')" - Verify NLTK data:
python -c "import nltk; nltk.data.find('tokenizers/punkt')"
# View backend logs
tail -f logs/backend.log
# View frontend logs
tail -f logs/frontend.log
# Database inspection
sqlite3 backend/database/skill_predictor.db
.tables
SELECT * FROM industry_skills LIMIT 10;

