File size: 4,308 Bytes
ab78615
 
 
 
 
 
 
 
 
 
210d38b
d6f26da
 
 
ab78615
 
 
d6f26da
210d38b
ab78615
 
 
210d38b
d6f26da
 
 
ab78615
 
 
210d38b
ab78615
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d6f26da
ab78615
 
 
 
d6f26da
 
 
 
 
 
ab78615
d6f26da
ab78615
d6f26da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ab78615
d6f26da
 
 
 
 
 
 
 
 
 
 
 
 
 
ab78615
 
d6f26da
ab78615
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import streamlit as st
import requests
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# Set up the Streamlit page
st.title("AI Opportunity Finder for Youth")
st.write("Find Scholarships, Internships, Online Courses, and more!")

# Function to get scholarships data from a mock API
def get_scholarships(country, interests):
    # Example: Replace with a real API URL (mocked for demonstration)
    url = f"https://jsonplaceholder.typicode.com/posts"  # Mock API
    response = requests.get(url)
    
    if response.status_code == 200:
        posts = response.json()[:5]  # Take only the first 5 posts as mock scholarships
        return [{"title": f"Scholarship {i+1}", "description": post['body'], "eligibility": "Any student from any background."} for i, post in enumerate(posts)]
    else:
        return []

# Function to get internships data from a mock API
def get_internships(country):
    # Example: Replace with a real API URL (mocked for demonstration)
    url = f"https://jsonplaceholder.typicode.com/posts"  # Mock API for testing
    response = requests.get(url)
    
    if response.status_code == 200:
        return [{"jobtitle": f"Internship {i+1}", "company": "Sample Company", "location": "Remote", "snippet": "Description of the internship."} for i in range(5)]
    else:
        return []

# Function to recommend opportunities based on user input
def recommend_opportunities(user_interests, user_skills, opportunities):
    user_profile = [f"{user_interests} {user_skills}"]
    opportunities_text = [f"{opportunity['description']} {opportunity['eligibility']}" for opportunity in opportunities]
    
    # Vectorize the text using TF-IDF
    vectorizer = TfidfVectorizer(stop_words='english')
    tfidf_matrix = vectorizer.fit_transform(opportunities_text + user_profile)
    
    # Compute cosine similarity
    cosine_sim = cosine_similarity(tfidf_matrix[-1], tfidf_matrix[:-1])
    
    # Get the top 5 recommendations
    recommendations = cosine_sim[0].argsort()[-5:][::-1]
    
    return [opportunities[i] for i in recommendations]

# Form to gather user profile and country selection
with st.form(key='user_form'):
    st.sidebar.header("User Profile")
    location = st.selectbox("Select your Country", ["Pakistan", "USA", "Germany", "India", "UK", "Australia"])  # Add more countries as needed
    skills = st.text_input("Skills (e.g., Python, Marketing)")
    interests = st.text_input("Interests (e.g., Technology, Science)")

    submit_button = st.form_submit_button("Find Opportunities")

# Fetch data based on the user input
if submit_button:
    # Fetch scholarships and internships based on the selected country and profile
    scholarships = get_scholarships(location, interests)
    internships = get_internships(location)
    
    # Display Scholarships
    if scholarships:
        st.write("Scholarships found:")
        for scholarship in scholarships:
            st.write(f"Title: {scholarship['title']}")
            st.write(f"Description: {scholarship['description']}")
            st.write(f"Eligibility: {scholarship['eligibility']}")
            st.write("---")
    else:
        st.write("No scholarships found for the selected country.")
    
    # Display Internships
    if internships:
        st.write("Internships found:")
        for internship in internships:
            st.write(f"Title: {internship['jobtitle']}")
            st.write(f"Company: {internship['company']}")
            st.write(f"Location: {internship['location']}")
            st.write(f"Snippet: {internship['snippet']}")
            st.write("---")
    else:
        st.write("No internships found for the selected country.")
    
    # AI Recommendations based on interests and skills
    all_opportunities = scholarships + internships
    recommended_opportunities = recommend_opportunities(interests, skills, all_opportunities)
    
    st.write("AI-based Recommended Opportunities based on your profile:")
    for opportunity in recommended_opportunities:
        st.write(f"Title: {opportunity['title']}")
        st.write(f"Description: {opportunity['description']}")
        st.write(f"Eligibility: {opportunity.get('eligibility', 'Not available')}")
        st.write("---")