SkillSync is an AI-powered backend API that helps job seekers match their resumes with job descriptions, provides skill gap analysis, resume improvement suggestions, and generates personalized cover letters. It also includes a recruiter dashboard for candidate ranking and management.
- Resume Upload & Parsing: Upload PDF, DOCX, or TXT resume files with AI-powered text extraction
- Job Description Analysis: AI analysis of job postings to extract required skills and requirements
- AI Matching & Scoring: Intelligent matching between resumes and jobs with detailed scoring
- Skill Gap Analysis: Identify missing skills and get suggestions for improvement
- Resume Suggestions: AI-powered recommendations to improve resume content
- Cover Letter Generation: Personalized cover letter creation based on resume and job match
- Recruiter Dashboard: Advanced candidate ranking and job management for recruiters
- Analytics & Tracking: User improvement tracking and engagement analytics
- FastAPI Framework: Modern, fast web framework for building APIs
- SQLite Database: Lightweight, serverless database with SQLAlchemy ORM
- JWT Authentication: Secure user authentication with role-based access control
- OpenAI Integration: Powered by GPT models for intelligent text analysis
- File Upload Support: Secure file handling with validation
- CORS Enabled: Cross-origin resource sharing for frontend integration
- Comprehensive API Documentation: Auto-generated OpenAPI/Swagger docs
- Backend: Python 3.9+ with FastAPI
- Database: SQLite with SQLAlchemy ORM
- AI/ML: OpenAI GPT-3.5/4 for text analysis and generation
- Authentication: JWT tokens with bcrypt password hashing
- File Processing: PyPDF2, python-docx for document parsing
- API Documentation: Automatic OpenAPI/Swagger documentation
- Python 3.9 or higher
- pip package manager
-
Clone the repository
git clone <repository-url> cd skillsync-backend
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables Create a
.envfile in the root directory:SECRET_KEY=your-super-secret-key-change-in-production OPENAI_API_KEY=your-openai-api-key
-
Run database migrations
alembic upgrade head
-
Start the development server
uvicorn main:app --reload --host 0.0.0.0 --port 8000
For production deployment, ensure you set the following environment variables:
SECRET_KEY: A strong secret key for JWT token signingOPENAI_API_KEY: Your OpenAI API key for AI functionality
Once the server is running, you can access:
- Interactive API Documentation: http://localhost:8000/docs
- Alternative API Documentation: http://localhost:8000/redoc
- OpenAPI Schema: http://localhost:8000/openapi.json
- Health Check: http://localhost:8000/health
POST /api/v1/auth/register- User registrationPOST /api/v1/auth/login- User login
POST /api/v1/resumes/upload- Upload and parse resumeGET /api/v1/resumes/- Get user's resumesGET /api/v1/resumes/{resume_id}- Get specific resumePUT /api/v1/resumes/{resume_id}- Update resumeDELETE /api/v1/resumes/{resume_id}- Delete resume
POST /api/v1/jobs/- Create job posting (recruiters only)GET /api/v1/jobs/- Get all active jobs with filtersGET /api/v1/jobs/my-jobs- Get recruiter's jobsGET /api/v1/jobs/{job_id}- Get specific jobPUT /api/v1/jobs/{job_id}- Update job postingDELETE /api/v1/jobs/{job_id}- Delete job posting
POST /api/v1/matching/analyze- Analyze resume-job matchGET /api/v1/matching/- Get user's matchesGET /api/v1/matching/{match_id}- Get specific matchPOST /api/v1/matching/{match_id}/cover-letter- Generate cover letter
GET /api/v1/dashboard/candidates/{job_id}- Get ranked candidates for jobGET /api/v1/dashboard/jobs/stats- Get job statisticsGET /api/v1/dashboard/overview- Get dashboard overview
GET /api/v1/analytics/user-stats- Get user analyticsGET /api/v1/analytics/skill-gaps- Get skill gap analysisGET /api/v1/analytics/improvement-suggestions- Get improvement suggestionsPOST /api/v1/analytics/track-event- Track custom events
- Upload and manage resumes
- Search and view job postings
- Get AI-powered job matching and scoring
- Receive skill gap analysis and resume suggestions
- Generate personalized cover letters
- Track improvement analytics
- All applicant features
- Create and manage job postings
- Access recruiter dashboard
- View ranked candidates for jobs
- Get job performance statistics
- All recruiter and applicant features
- System administration capabilities
The application uses SQLite with the following main tables:
users- User accounts and authenticationresumes- Resume data and metadatajobs- Job postings and requirementsmatches- Resume-job matches with AI scoringskill_gaps- Identified skill gaps from matchesanalytics- User activity and improvement tracking
OPENAI_API_KEY: Your OpenAI API key for AI functionality
SECRET_KEY: JWT secret key (default: change in production)ACCESS_TOKEN_EXPIRE_MINUTES: Token expiration time (default: 30)MAX_FILE_SIZE: Maximum upload file size in bytes (default: 10MB)
The application stores uploaded files in /app/storage/ with the following structure:
/app/storage/db/- SQLite database file/app/storage/uploads/- Uploaded resume files
The project uses Ruff for linting and code formatting:
ruff check .
ruff format .Run tests with pytest:
pytestCreate new migrations:
alembic revision --autogenerate -m "Description"Apply migrations:
alembic upgrade head- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is licensed under the MIT License.
For support and questions, please create an issue in the repository.