Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from reportlab.pdfgen import canvas | |
| from io import BytesIO | |
| import os | |
| from groq import Groq | |
| from transformers import pipeline | |
| # ========== API Keys ========== | |
| GROQ_API_KEY = st.secrets["GROQ_API_KEY"] | |
| # ========== Groq Client ========== | |
| client = Groq(api_key=GROQ_API_KEY) | |
| # ========== Hugging Face Summarizer (optional) ========== | |
| summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
| # ========== Resume Parser ========== | |
| def parse_resume(uploaded_file): | |
| return uploaded_file.read().decode("utf-8") | |
| # ========== Groq Prompt Engine ========== | |
| def query_groq(prompt, model="llama3-8b-8192"): | |
| chat_completion = client.chat.completions.create( | |
| model=model, | |
| messages=[{"role": "user", "content": prompt}] | |
| ) | |
| return chat_completion.choices[0].message.content | |
| # ========== Resume Tip Generator ========== | |
| def generate_resume_tips(resume_text, exp_level, salary, grad_year, stream, job_desc=None): | |
| if job_desc: | |
| prompt = f"""Give resume improvement suggestions for this resume based on this job description: | |
| Resume:\n{resume_text}\n\nJob Description:\n{job_desc}""" | |
| else: | |
| prompt = f"""Provide tips to improve the resume based on experience level: {exp_level}, expected salary: {salary}, graduation year: {grad_year}, graduation stream: {stream}. | |
| Resume:\n{resume_text}""" | |
| return query_groq(prompt) | |
| # ========== Cover Letter Generator ========== | |
| def generate_cover_letter(resume_text, job_title, word_limit): | |
| prompt = f"""Create a professional cover letter for the job '{job_title}' based on this resume. Limit it to {word_limit} words.\nResume:\n{resume_text}""" | |
| return query_groq(prompt) | |
| def create_pdf(text, filename="cover_letter.pdf"): | |
| buffer = BytesIO() | |
| c = canvas.Canvas(buffer) | |
| text_object = c.beginText(40, 800) | |
| for line in text.split('\n'): | |
| text_object.textLine(line) | |
| c.drawText(text_object) | |
| c.save() | |
| buffer.seek(0) | |
| return buffer | |
| # ========== Roadmap Generator ========== | |
| def generate_roadmap(job_profile): | |
| prompt = f"Generate a module-wise detailed roadmap to become a skilled {job_profile}. Divide it into weeks or phases with topics." | |
| roadmap = query_groq(prompt) | |
| summarized = summarizer(roadmap, max_length=300, min_length=150, do_sample=False)[0]["summary_text"] | |
| return summarized, roadmap | |
| # ========== UI ========== | |
| st.set_page_config(page_title="Smart Career Chatbot", layout="wide") | |
| st.title("π§ Smart Career Chatbot") | |
| st.sidebar.header("User Inputs") | |
| uploaded_resume = st.sidebar.file_uploader("Upload Resume (Text format only)", type=["txt"]) | |
| exp_level = st.sidebar.selectbox("Experience Level", ["Fresher", "Junior", "Mid", "Senior"]) | |
| salary = st.sidebar.text_input("Expected Salary (in βΉ)", "600000") | |
| grad_year = st.sidebar.text_input("Graduation Year", "2023") | |
| grad_stream = st.sidebar.text_input("Graduation Stream", "Computer Science") | |
| if uploaded_resume: | |
| resume_text = parse_resume(uploaded_resume) | |
| st.subheader("π Uploaded Resume Preview") | |
| st.text_area("Resume Content", resume_text, height=300) | |
| st.subheader("π‘ Get Resume Tips") | |
| job_desc = st.text_area("Optional: Paste a Job Description for Custom Tips") | |
| if st.button("Get Resume Tips"): | |
| tips = generate_resume_tips(resume_text, exp_level, salary, grad_year, grad_stream, job_desc) | |
| st.success("Resume Tips Generated:") | |
| st.write(tips) | |
| st.subheader("βοΈ Generate Cover Letter") | |
| job_title = st.text_input("Target Job Title", "Software Engineer") | |
| word_limit = st.slider("Word Limit", min_value=100, max_value=600, value=300) | |
| if st.button("Generate Cover Letter"): | |
| cover_letter = generate_cover_letter(resume_text, job_title, word_limit) | |
| st.text_area("Generated Cover Letter", cover_letter, height=300) | |
| pdf_file = create_pdf(cover_letter) | |
| st.download_button("Download Cover Letter PDF", pdf_file, file_name="cover_letter.pdf") | |
| st.subheader("πΊοΈ Generate Career Roadmap") | |
| target_profile = st.text_input("Enter Job Profile (e.g., Data Scientist, Full Stack Developer)") | |
| if st.button("Generate Roadmap"): | |
| summary, full_roadmap = generate_roadmap(target_profile) | |
| st.info("π Summary:") | |
| st.write(summary) | |
| with st.expander("π Full Roadmap"): | |
| st.write(full_roadmap) | |
| else: | |
| st.warning("Please upload your resume to start.") | |