├── file1 ├── file ├── file3 └── README.md /file1: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | from sklearn.metrics.pairwise import cosine_similarity 4 | from sklearn.feature_extraction.text import TfidfVectorizer 5 | 6 | # Step 1: Generate synthetic team member profiles 7 | team_members = pd.DataFrame({ 8 | 'name': ['Alice', 'Bob', 'Charlie', 'Diana', 'Ethan'], 9 | 'skills': [ 10 | 'python machine-learning data-science', 11 | 'java spring backend api-development', 12 | 'react javascript frontend ui-ux', 13 | 'sql data-analysis visualization', 14 | 'cloud aws devops docker kubernetes' 15 | ], 16 | 'past_projects': [ 17 | 'built ML models for sales prediction', 18 | 'developed RESTful APIs for ecommerce', 19 | 'created UI for a healthcare dashboard', 20 | 'analyzed survey data for marketing', 21 | 'deployed cloud infrastructure for fintech' 22 | ] 23 | }) 24 | 25 | # Step 2: Define a new project with required skills 26 | new_project = { 27 | 'title': 'AI-Powered Marketing Dashboard', 28 | 'description': 'Develop a dashboard that integrates machine learning models and interactive UI for marketing analytics', 29 | 'required_skills': 'python machine-learning data-visualization dashboard ui' 30 | } 31 | 32 | # Step 3: Create a profile representation (combine skills and project experience) 33 | team_members['profile'] = team_members['skills'] + ' ' + team_members['past_projects'] 34 | 35 | # Step 4: Append new project profile 36 | project_profile = new_project['required_skills'] + ' ' + new_project['description'] 37 | profiles = team_members['profile'].tolist() + [project_profile] 38 | 39 | # Step 5: Vectorize using TF-IDF 40 | vectorizer = TfidfVectorizer() 41 | profile_vectors = vectorizer.fit_transform(profiles) 42 | 43 | # Step 6: Compute cosine similarity between new project and each team member 44 | cosine_sim = cosine_similarity(profile_vectors[-1:], profile_vectors[:-1]).flatten() 45 | 46 | # Step 7: Create recommendations 47 | team_members['match_score'] = cosine_sim 48 | recommended = team_members.sort_values(by='match_score', ascending=False) 49 | 50 | # Display recommended team members 51 | print("Recommended Team Members for Project:") 52 | print(recommended[['name', 'skills', 'match_score']]) 53 | -------------------------------------------------------------------------------- /file: -------------------------------------------------------------------------------- 1 | # team_recommender_app.py 2 | 3 | import streamlit as st 4 | import pandas as pd 5 | from sklearn.feature_extraction.text import TfidfVectorizer 6 | from sklearn.metrics.pairwise import cosine_similarity 7 | 8 | # --- Synthetic Data --- 9 | team_members = pd.DataFrame({ 10 | 'name': ['Alice', 'Bob', 'Charlie', 'Diana', 'Ethan'], 11 | 'skills': [ 12 | 'python machine-learning data-science', 13 | 'java spring backend api-development', 14 | 'react javascript frontend ui-ux', 15 | 'sql data-analysis visualization', 16 | 'cloud aws devops docker kubernetes' 17 | ], 18 | 'past_projects': [ 19 | 'built ML models for sales prediction', 20 | 'developed RESTful APIs for ecommerce', 21 | 'created UI for a healthcare dashboard', 22 | 'analyzed survey data for marketing', 23 | 'deployed cloud infrastructure for fintech' 24 | ] 25 | }) 26 | team_members['profile'] = team_members['skills'] + ' ' + team_members['past_projects'] 27 | 28 | # --- Streamlit Interface --- 29 | st.title("🚀 Team Member Recommendation System") 30 | 31 | st.subheader("Enter Project Details:") 32 | project_title = st.text_input("Project Title", "AI-Powered Marketing Dashboard") 33 | project_desc = st.text_area("Project Description", "Develop a dashboard with ML and interactive UI for marketing analytics") 34 | required_skills = st.text_input("Required Skills", "python machine-learning data-visualization dashboard ui") 35 | 36 | if st.button("Recommend Team Members"): 37 | # Build project profile 38 | project_profile = required_skills + ' ' + project_desc 39 | profiles = team_members['profile'].tolist() + [project_profile] 40 | 41 | # Vectorize and compute similarity 42 | vectorizer = TfidfVectorizer() 43 | profile_vectors = vectorizer.fit_transform(profiles) 44 | similarity_scores = cosine_similarity(profile_vectors[-1:], profile_vectors[:-1]).flatten() 45 | 46 | team_members['match_score'] = similarity_scores 47 | recommended = team_members.sort_values(by='match_score', ascending=False) 48 | 49 | st.subheader("Recommended Members:") 50 | st.dataframe(recommended[['name', 'skills', 'match_score']].reset_index(drop=True)) 51 | 52 | st.markdown("✅ Sorted by match score using TF-IDF & cosine similarity.") 53 | 54 | -------------------------------------------------------------------------------- /file3: -------------------------------------------------------------------------------- 1 | # team_recommender_app_embeddings.py 2 | 3 | import streamlit as st 4 | import pandas as pd 5 | from sentence_transformers import SentenceTransformer 6 | from sklearn.metrics.pairwise import cosine_similarity 7 | 8 | # Load SentenceTransformer model 9 | model = SentenceTransformer('all-MiniLM-L6-v2') 10 | 11 | # --- Synthetic Team Member Data --- 12 | team_members = pd.DataFrame({ 13 | 'name': ['Alice', 'Bob', 'Charlie', 'Diana', 'Ethan'], 14 | 'skills': [ 15 | 'python machine-learning data-science', 16 | 'java spring backend api-development', 17 | 'react javascript frontend ui-ux', 18 | 'sql data-analysis visualization', 19 | 'cloud aws devops docker kubernetes' 20 | ], 21 | 'past_projects': [ 22 | 'built ML models for sales prediction', 23 | 'developed RESTful APIs for ecommerce', 24 | 'created UI for a healthcare dashboard', 25 | 'analyzed survey data for marketing', 26 | 'deployed cloud infrastructure for fintech' 27 | ] 28 | }) 29 | team_members['profile'] = team_members['skills'] + ' ' + team_members['past_projects'] 30 | 31 | # --- Streamlit UI --- 32 | st.title("🧠 Semantic Team Member Recommendation System") 33 | st.markdown("Uses **SentenceTransformer Embeddings** for smarter matching") 34 | 35 | st.subheader("Enter New Project Details:") 36 | project_title = st.text_input("Project Title", "AI-Powered Marketing Dashboard") 37 | project_desc = st.text_area("Project Description", "Develop a dashboard with ML and interactive UI for marketing analytics") 38 | required_skills = st.text_input("Required Skills", "python machine-learning data-visualization dashboard ui") 39 | 40 | if st.button("Find Recommendations"): 41 | project_profile = required_skills + ' ' + project_desc 42 | 43 | # Encode profiles 44 | member_profiles = team_members['profile'].tolist() 45 | embeddings = model.encode(member_profiles + [project_profile]) 46 | 47 | # Compute similarity 48 | project_embedding = embeddings[-1].reshape(1, -1) 49 | member_embeddings = embeddings[:-1] 50 | similarities = cosine_similarity(project_embedding, member_embeddings).flatten() 51 | 52 | # Add scores and display 53 | team_members['match_score'] = similarities 54 | recommended = team_members.sort_values(by='match_score', ascending=False) 55 | 56 | st.subheader("Top Recommended Team Members:") 57 | st.dataframe(recommended[['name', 'skills', 'match_score']].reset_index(drop=True)) 58 | 59 | st.success("✅ Recommendations generated using deep semantic understanding.") 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🧠 Team Member Recommendation System 2 | 3 | A smart, interactive **Team Member Recommendation System** that helps project managers find the most suitable team members for new projects based on **skills**, **past project experience**, and **semantic relevance**. Built with `Streamlit` and powered by `SentenceTransformer` for contextual matching. 4 | 5 | --- 6 | 7 | ## 🚀 Features 8 | 9 | - 🔍 **Semantic Matching** using `SentenceTransformer` (`all-MiniLM-L6-v2`) 10 | - 📊 **Streamlit Dashboard** for interactive team recommendations 11 | - 📁 **Synthetic Dataset** for demo purposes (easy to extend) 12 | - ✅ Cosine similarity-based ranking 13 | - 🔧 Easy to plug into real-world HR/project management systems 14 | 15 | --- 16 | 17 | ## 🧠 How It Works 18 | 19 | 1. Team members have **skills** and **project history**. 20 | 2. A new project is described with **required skills** and a **brief description**. 21 | 3. The system uses SentenceTransformers to embed these into vectors. 22 | 4. **Cosine similarity** measures how closely each team member matches the project. 23 | 5. Results are **ranked and displayed** in an interactive Streamlit app. 24 | 25 | --- 26 | 27 | ## 📦 Installation 28 | 29 | 1. **Clone the Repository**: 30 | ```bash 31 | git clone https://github.com/your-username/team-member-recommendation.git 32 | cd team-member-recommendation 33 | 34 | Install Required Libraries: 35 | 36 | pip install -r requirements.txt 37 | 38 | Run the App: 39 | 40 | streamlit run team_recommender_app_embeddings.py 41 | 42 | 📁 File Structure 43 | 44 | . 45 | ├── team_recommender_app_embeddings.py # Main Streamlit app 46 | ├── README.md 47 | ├── requirements.txt 48 | 49 | 🛠 Requirements 50 | 51 | Python 3.8+ 52 | 53 | streamlit 54 | 55 | pandas 56 | 57 | sentence-transformers 58 | 59 | scikit-learn 60 | 61 | 📈 Sample Output 62 | 63 | 🤖 Future Enhancements 64 | 65 | Add filters: experience, location, availability 66 | 67 | Role-based recommendations (e.g., ML engineer, DevOps) 68 | 69 | Real-time integration with HR/project management systems 70 | 71 | Visualizations: radar charts, network graphs 72 | 73 | 👨‍💻 Author 74 | 75 | [Your Name] 76 | Data Scientist | Geospatial Analyst | ML Engineer 77 | LinkedIn • GitHub 78 | 📄 License 79 | 80 | MIT License. Feel free to use and modify for commercial or educational purposes. 81 | 82 | 83 | --- 84 | 85 | Let me know if you'd like this README tailored with your actual name, GitHub, or LinkedIn links—or if you'd like a version with **demo screenshots** and **deployment steps** for platforms like **Streamlit Cloud** or **Render**. 86 | 87 | --------------------------------------------------------------------------------