This project is an intelligent internship recommendation system that matches candidates with suitable internship opportunities based on their skills, education level, preferred sectors, and location. The system uses natural language processing and machine learning techniques to provide personalized recommendations.
- Skill-Based Matching: Uses TF-IDF vectorization and cosine similarity to match candidate skills with internship requirements
- Location-Aware Recommendations: Provides nearby internships based on geographic proximity using the Haversine formula
- Education Level Filtering: Ensures recommendations meet the candidate's education qualifications
- Sector-Specific Matching: Filters internships by preferred industry sectors
- Remote Work Options: Supplements recommendations with remote internships when local options are limited
- FastAPI: High-performance web framework for building APIs with Python
- scikit-learn: Used for TF-IDF vectorization and cosine similarity calculations
- pandas & numpy: For efficient data manipulation and numerical operations
- joblib: For model serialization and persistence
- geopy: For geocoding city names to coordinates
- Haversine Formula: Custom implementation for accurate distance calculations between coordinates
- MongoDB: NoSQL database for storing internship data
- PyMongo: Python driver for MongoDB integration
- python-dotenv: For managing environment variables and configuration
- Data Filtering: Initial filtering of internships based on sector and education requirements
- Geographic Proximity: Calculation of distances between candidate location and internship locations
- Text Similarity: TF-IDF vectorization of skills and job descriptions to calculate similarity scores
- Hybrid Scoring: Combination of text similarity and distance metrics for final ranking
- Remote Fallback: Supplementation with remote internships when local options are insufficient
- /recommend: POST endpoint that accepts candidate preferences and returns personalized internship recommendations
- Python 3.7+
- MongoDB instance
- Clone the repository
- Install dependencies:
pip install -r requirements.txt - Create a
.envfile with the following variables:MONGO_URI=your_mongodb_connection_string DB_NAME=your_database_name COLLECTION_NAME=your_collection_name - Ensure the
tfidf_vectorizer.joblibfile is present in the root directory
uvicorn main:app --reload
Send a POST request to the /recommend endpoint with the following JSON structure:
{
"skills": "python, data analysis, machine learning",
"sectors": "technology, finance",
"education_level": "bachelor",
"city_name": "New York",
"max_distance_km": 100
}{
"recommendations": {
"nearby_ids": ["id1", "id2", "id3"],
"remote_ids": ["id4", "id5"]
}
}- User authentication and profile management
- Improved NLP techniques for better skill matching
- Recommendation feedback and learning system
- Integration with job application platforms
- Mobile application interface