Spaces:
Runtime error
Runtime error
File size: 2,786 Bytes
7a80626 d1fdd60 7a80626 d1fdd60 7a80626 d1fdd60 7a80626 057b8e4 afbdb1b 79489bd fa78bf7 286c609 a627a66 ed01864 286c609 f51cf5e a627a66 286c609 f51cf5e d75019b f51cf5e bc3fe81 286c609 afbdb1b a627a66 03de099 fa78bf7 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 = 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
model_feedback = modelFeedback(ATS_score, resume["text"])
resume["model_feedback"] = model_feedback # 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:** {model_feedback}")
st.write("---")
else:
st.info("Please upload resumes and provide a job description.")
# Process when submit button is clicked
if submit:
start()
|