Spaces:
Sleeping
Sleeping
File size: 2,469 Bytes
cb0c53a | 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 | import streamlit as st
from resume_parser import ResumeParser
from job_matcher import JobMatcher
from langflow_chain import LangflowChain
from ui_components import (
render_header,
render_upload_section,
render_results_section,
render_footer
)
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Check if API key is set
if not os.getenv("OPENAI_API_KEY"):
st.error("Please set your OPENAI_API_KEY in the .env file")
st.stop()
# Set page configuration
st.set_page_config(
page_title="Resume Analyzer & Job Matcher",
page_icon="📄",
layout="wide"
)
# Initialize session state
if "resume_data" not in st.session_state:
st.session_state.resume_data = None
st.session_state.job_matches = None
st.session_state.skill_gaps = None
st.session_state.improvement_tips = None
st.session_state.processed = False
def main():
# Render header
render_header()
# Render upload section
uploaded_file = render_upload_section()
# Process the uploaded file
if uploaded_file is not None and st.button("Analyze Resume"):
with st.spinner("Analyzing your resume..."):
# Parse resume
resume_parser = ResumeParser()
resume_data = resume_parser.parse(uploaded_file)
st.session_state.resume_data = resume_data
# Process with LLM
langflow_chain = LangflowChain()
analysis_results = langflow_chain.analyze_resume(resume_data)
# Match jobs
job_matcher = JobMatcher()
job_matches = job_matcher.find_matches(analysis_results)
# Store results in session state
st.session_state.job_matches = analysis_results.get("job_matches", [])
st.session_state.skill_gaps = analysis_results.get("skill_gaps", [])
st.session_state.improvement_tips = analysis_results.get("improvement_tips", [])
st.session_state.processed = True
st.success("Resume analyzed successfully!")
# Render results
if st.session_state.processed:
render_results_section(
st.session_state.resume_data,
st.session_state.job_matches,
st.session_state.skill_gaps,
st.session_state.improvement_tips
)
# Render footer
render_footer()
if __name__ == "__main__":
main()
|