Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -15,12 +15,13 @@ if "resume_data" not in st.session_state:
|
|
15 |
if "jobdescription" not in st.session_state:
|
16 |
st.session_state.jobdescription = ""
|
17 |
|
18 |
-
#
|
19 |
st.session_state.jobdescription = st.text_area("Paste the job description below:")
|
20 |
|
21 |
-
#
|
22 |
pdf_files = st.file_uploader("Upload your resumes (PDF only):", type="pdf", accept_multiple_files=True)
|
23 |
|
|
|
24 |
if pdf_files:
|
25 |
st.session_state.resume_data = []
|
26 |
for pdf in pdf_files:
|
@@ -28,9 +29,9 @@ if pdf_files:
|
|
28 |
st.session_state.resume_data.append({"name": pdf.name, "text": extracted_text})
|
29 |
st.success(f"{len(pdf_files)} resumes uploaded and processed successfully!")
|
30 |
|
|
|
31 |
submit = st.button("Submit")
|
32 |
|
33 |
-
|
34 |
# Define start function
|
35 |
def start():
|
36 |
if st.session_state.resume_data and st.session_state.jobdescription:
|
@@ -43,27 +44,28 @@ def start():
|
|
43 |
ATS_score = calculateATSscore(resume["text"], st.session_state.jobdescription)
|
44 |
|
45 |
if ATS_score is None:
|
46 |
-
st.warning(f"Warning: Unable to calculate ATS score for {resume['name']}.")
|
47 |
continue # Skip this resume if ATS score is None
|
48 |
|
49 |
resume["ATS_score"] = ATS_score # Add ATS score to resume data
|
50 |
|
51 |
-
|
|
|
52 |
|
53 |
-
# Sort resumes based on ATS score in descending order
|
54 |
-
sorted_resumes = sorted(st.session_state.resume_data
|
|
|
55 |
|
56 |
# Display the results
|
57 |
for rank, resume in enumerate(sorted_resumes, 1):
|
58 |
st.write(f"##### Resume: {resume['name']}")
|
59 |
-
st.write(f"**ATS Score:** {int(resume['ATS_score']*100)}%")
|
60 |
st.write(f"**Ranking:** {rank}")
|
61 |
st.write(f"**Summary:** {resume['model_feedback']}")
|
62 |
st.write("---")
|
63 |
else:
|
64 |
st.info("Please upload resumes and provide a job description.")
|
65 |
|
66 |
-
|
67 |
# Process when submit button is clicked
|
68 |
if submit:
|
69 |
start()
|
|
|
15 |
if "jobdescription" not in st.session_state:
|
16 |
st.session_state.jobdescription = ""
|
17 |
|
18 |
+
# Input Job Description (Fixed position to ensure it's initialized correctly)
|
19 |
st.session_state.jobdescription = st.text_area("Paste the job description below:")
|
20 |
|
21 |
+
# Upload Resumes (Multiple PDFs)
|
22 |
pdf_files = st.file_uploader("Upload your resumes (PDF only):", type="pdf", accept_multiple_files=True)
|
23 |
|
24 |
+
# Handle PDF file upload
|
25 |
if pdf_files:
|
26 |
st.session_state.resume_data = []
|
27 |
for pdf in pdf_files:
|
|
|
29 |
st.session_state.resume_data.append({"name": pdf.name, "text": extracted_text})
|
30 |
st.success(f"{len(pdf_files)} resumes uploaded and processed successfully!")
|
31 |
|
32 |
+
# Submit button
|
33 |
submit = st.button("Submit")
|
34 |
|
|
|
35 |
# Define start function
|
36 |
def start():
|
37 |
if st.session_state.resume_data and st.session_state.jobdescription:
|
|
|
44 |
ATS_score = calculateATSscore(resume["text"], st.session_state.jobdescription)
|
45 |
|
46 |
if ATS_score is None:
|
47 |
+
st.warning(f"Warning: Unable to calculate ATS score for {resume['name']}. Skipping this resume.")
|
48 |
continue # Skip this resume if ATS score is None
|
49 |
|
50 |
resume["ATS_score"] = ATS_score # Add ATS score to resume data
|
51 |
|
52 |
+
# Generate feedback (only summary)
|
53 |
+
resume["model_feedback"] = modelFeedback(resume["text"]) # Generate summary feedback
|
54 |
|
55 |
+
# Sort resumes based on ATS score in descending order, skip resumes without an ATS score
|
56 |
+
sorted_resumes = sorted([resume for resume in st.session_state.resume_data if resume.get("ATS_score")],
|
57 |
+
key=lambda x: x["ATS_score"], reverse=True)
|
58 |
|
59 |
# Display the results
|
60 |
for rank, resume in enumerate(sorted_resumes, 1):
|
61 |
st.write(f"##### Resume: {resume['name']}")
|
62 |
+
st.write(f"**ATS Score:** {int(resume['ATS_score'] * 100)}%")
|
63 |
st.write(f"**Ranking:** {rank}")
|
64 |
st.write(f"**Summary:** {resume['model_feedback']}")
|
65 |
st.write("---")
|
66 |
else:
|
67 |
st.info("Please upload resumes and provide a job description.")
|
68 |
|
|
|
69 |
# Process when submit button is clicked
|
70 |
if submit:
|
71 |
start()
|