Spaces:
Sleeping
Sleeping
| # Directory structure: | |
| # - app.py | |
| # - utils.py | |
| # - job_api.py | |
| # - requirements.txt | |
| # - assets/ (for optional icons/images) | |
| # app.py | |
| import streamlit as st | |
| from utils import parse_resume, get_recommendations, load_models, generate_career_insights | |
| from job_api import fetch_jobs | |
| st.set_page_config(page_title="Universal CV Analyzer", layout="wide") | |
| st.title("π Universal Smart CV Analyzer & Career Roadmap") | |
| uploaded_file = st.file_uploader("Upload your CV (PDF)", type="pdf") | |
| if uploaded_file: | |
| with st.spinner("Analyzing your CV. Please wait..."): | |
| nlp, llm = load_models() | |
| text, parsed = parse_resume(uploaded_file, nlp) | |
| st.success("β Resume parsed successfully") | |
| st.header("π CV Summary & Score") | |
| st.json(parsed) | |
| score, feedback = get_recommendations(parsed) | |
| st.metric(label="CV Score (out of 100)", value=score) | |
| st.write("**Suggestions to improve:**") | |
| st.write(feedback) | |
| st.header("πΌ Live Job Listings") | |
| jobs = fetch_jobs(parsed) | |
| for job in jobs: | |
| st.markdown(f"**{job['title']}** at {job['company']}\n\n{job['location']} - {job['salary']}\n\n[Apply]({job['url']})") | |
| st.header("π Certification & Higher Education Suggestions") | |
| certs = generate_career_insights(parsed, llm, suggestion_type="certifications") | |
| degrees = generate_career_insights(parsed, llm, suggestion_type="degrees") | |
| st.write("**Recommended Certifications:**") | |
| st.write(certs) | |
| st.write("**Higher Education Paths:**") | |
| st.write(degrees) | |
| st.header("π§ Personalized Career Roadmap & Visa Advice") | |
| roadmap = generate_career_insights(parsed, llm, suggestion_type="roadmap") | |
| st.write(roadmap) | |
| st.header("π§ Career Counselor Advice") | |
| advice = generate_career_insights(parsed, llm, suggestion_type="counselor") | |
| st.write(advice) |