Automated Action 3d6b44a6e6 Implement SkillSync AI-Powered Resume & Job Match Hub backend
- Complete FastAPI backend with SQLite database
- AI-powered resume parsing and job matching using OpenAI
- JWT authentication with role-based access control
- Resume upload, job management, and matching endpoints
- Recruiter dashboard with candidate ranking
- Analytics and skill gap analysis features
- Comprehensive API documentation with OpenAPI
- Alembic database migrations
- File upload support for PDF, DOCX, and TXT resumes
- CORS enabled for frontend integration

🤖 Generated with BackendIM

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-27 14:58:12 +00:00

212 lines
6.6 KiB
Markdown

# SkillSync - AI Resume & Job Match Hub
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.
## Features
### Core Features
- **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
### Technical Features
- **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
## Tech Stack
- **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
## Installation & Setup
### Prerequisites
- Python 3.9 or higher
- pip package manager
### Local Development Setup
1. **Clone the repository**
```bash
git clone <repository-url>
cd airesumejobmatchingapi-5g56kf
```
2. **Install dependencies**
```bash
pip install -r requirements.txt
```
3. **Set up environment variables**
Create a `.env` file in the root directory:
```env
SECRET_KEY=your-super-secret-key-change-in-production
OPENAI_API_KEY=your-openai-api-key
```
4. **Run database migrations**
```bash
alembic upgrade head
```
5. **Start the development server**
```bash
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
### Production Deployment
For production deployment, ensure you set the following environment variables:
- `SECRET_KEY`: A strong secret key for JWT token signing
- `OPENAI_API_KEY`: Your OpenAI API key for AI functionality
## API Documentation
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
## API Endpoints
### Authentication
- `POST /api/v1/auth/register` - User registration
- `POST /api/v1/auth/login` - User login
### Resume Management
- `POST /api/v1/resumes/upload` - Upload and parse resume
- `GET /api/v1/resumes/` - Get user's resumes
- `GET /api/v1/resumes/{resume_id}` - Get specific resume
- `PUT /api/v1/resumes/{resume_id}` - Update resume
- `DELETE /api/v1/resumes/{resume_id}` - Delete resume
### Job Management
- `POST /api/v1/jobs/` - Create job posting (recruiters only)
- `GET /api/v1/jobs/` - Get all active jobs with filters
- `GET /api/v1/jobs/my-jobs` - Get recruiter's jobs
- `GET /api/v1/jobs/{job_id}` - Get specific job
- `PUT /api/v1/jobs/{job_id}` - Update job posting
- `DELETE /api/v1/jobs/{job_id}` - Delete job posting
### AI Matching
- `POST /api/v1/matching/analyze` - Analyze resume-job match
- `GET /api/v1/matching/` - Get user's matches
- `GET /api/v1/matching/{match_id}` - Get specific match
- `POST /api/v1/matching/{match_id}/cover-letter` - Generate cover letter
### Recruiter Dashboard
- `GET /api/v1/dashboard/candidates/{job_id}` - Get ranked candidates for job
- `GET /api/v1/dashboard/jobs/stats` - Get job statistics
- `GET /api/v1/dashboard/overview` - Get dashboard overview
### Analytics
- `GET /api/v1/analytics/user-stats` - Get user analytics
- `GET /api/v1/analytics/skill-gaps` - Get skill gap analysis
- `GET /api/v1/analytics/improvement-suggestions` - Get improvement suggestions
- `POST /api/v1/analytics/track-event` - Track custom events
## User Roles
### Applicant (Default)
- 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
### Recruiter
- All applicant features
- Create and manage job postings
- Access recruiter dashboard
- View ranked candidates for jobs
- Get job performance statistics
### Admin
- All recruiter and applicant features
- System administration capabilities
## Database Schema
The application uses SQLite with the following main tables:
- `users` - User accounts and authentication
- `resumes` - Resume data and metadata
- `jobs` - Job postings and requirements
- `matches` - Resume-job matches with AI scoring
- `skill_gaps` - Identified skill gaps from matches
- `analytics` - User activity and improvement tracking
## Environment Variables
### Required Variables
- `OPENAI_API_KEY`: Your OpenAI API key for AI functionality
### Optional Variables (with defaults)
- `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)
## File Storage
The application stores uploaded files in `/app/storage/` with the following structure:
- `/app/storage/db/` - SQLite database file
- `/app/storage/uploads/` - Uploaded resume files
## Development
### Code Style
The project uses Ruff for linting and code formatting:
```bash
ruff check .
ruff format .
```
### Testing
Run tests with pytest:
```bash
pytest
```
### Database Migrations
Create new migrations:
```bash
alembic revision --autogenerate -m "Description"
```
Apply migrations:
```bash
alembic upgrade head
```
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Run tests and linting
5. Submit a pull request
## License
This project is licensed under the MIT License.
## Support
For support and questions, please create an issue in the repository.