Spaces:
Runtime error
Runtime error
File size: 2,816 Bytes
7a80626 137adc6 7a80626 137adc6 7a80626 d1fdd60 7a80626 cebe82a 7a80626 137adc6 057b8e4 afbdb1b 79489bd fa78bf7 286c609 a627a66 ed01864 137adc6 ed01864 286c609 137adc6 128c382 137adc6 1fdda22 286c609 137adc6 f51cf5e d75019b 137adc6 f51cf5e 137adc6 286c609 afbdb1b a627a66 03de099 137adc6 03de099 |
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 |
# Import necessary libraries
from convert import ExtractPDFText
from ATS_score import calculateATSscore
from model import modelFeedback
import streamlit as st
import time
# Streamlit app title
st.title("Resume Screening Assistance")
# Initialize session state variables
if "resume_data" not in st.session_state:
st.session_state.resume_data = []
if "jobdescription" not in st.session_state:
st.session_state.jobdescription = ""
# Upload Resumes (Multiple PDFs)
st.session_state.jobdescription = st.text_area("Paste the job description below:")
# Input Job Description
pdf_files = st.file_uploader("Upload your resumes (PDF only):", type="pdf", accept_multiple_files=True)
if pdf_files:
st.session_state.resume_data = []
for pdf in pdf_files:
extracted_text = ExtractPDFText(pdf)
st.session_state.resume_data.append({"name": pdf.name, "text": extracted_text})
st.success(f"{len(pdf_files)} resumes uploaded and processed successfully!")
# Submit button
submit = st.button("Submit")
# Define start function
def start():
if st.session_state.resume_data and st.session_state.jobdescription:
st.subheader("Top Matches:")
# Calculate ATS scores and store them in the resumes
for resume in st.session_state.resume_data:
with st.spinner(f"Analyzing {resume['name']}..."):
# Calculate ATS score
ATS_score = calculateATSscore(resume["text"], st.session_state.jobdescription)
if ATS_score is None:
st.warning(f"Warning: Unable to calculate ATS score for {resume['name']}.")
continue # Skip this resume if ATS score is None
resume["ATS_score"] = ATS_score # Add ATS score to resume data
# Generate feedback from model
resume["model_feedback"] = modelFeedback(ATS_score, resume["text"]) # Store model feedback in the resume data
time.sleep(1) # Optional: Simulate processing time
# Sort resumes based on ATS score in descending order
sorted_resumes = sorted(st.session_state.resume_data, key=lambda x: x["ATS_score"], reverse=True)
# Display the results
for rank, resume in enumerate(sorted_resumes, 1):
st.write(f"##### Resume: {resume['name']}")
st.write(f"**ATS Score:** {int(resume['ATS_score']*100)}%")
st.write(f"**Ranking:** {rank}")
st.write(f"**Summary:** {resume['model_feedback']}") # Display the individual feedback for each resume
st.write("---")
else:
st.info("Please upload resumes and provide a job description.")
# Process when submit button is clicked
if submit:
start()
|