honeyangelhp commited on
Commit
2bfad1d
Β·
verified Β·
1 Parent(s): 9ea9660

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +75 -71
app.py CHANGED
@@ -18,74 +18,78 @@ job_description = st.text_area("Paste the job description below:")
18
  # Upload Resumes
19
  uploaded_files = st.file_uploader("Upload your resumes (PDF only):", type="pdf", accept_multiple_files=True)
20
 
21
- if uploaded_files and job_description:
22
- resumes_data = []
23
-
24
- # Initialize progress bar
25
- progress_bar = st.progress(0)
26
- total_resumes = len(uploaded_files)
27
-
28
- # Placeholder to show the current processing file
29
- current_file_placeholder = st.empty()
30
-
31
- for idx, file in enumerate(uploaded_files, start=1):
32
- # Update the current file being processed in the placeholder
33
- current_file_placeholder.text(f"Currently processing: {file.name}")
34
-
35
- # Process the file
36
- text = ExtractPDFText(file)
37
- ats_score = calculateATSscore(text, job_description)
38
- skill_analysis = skill_gap_analysis(text, required_skills)
39
- feedback = modelFeedback(ats_score, text, skill_analysis['missing'])
40
- resumes_data.append({
41
- "name": file.name,
42
- "ATS Score": ats_score,
43
- "Skills Present": skill_analysis['present'],
44
- "Missing Skills": skill_analysis['missing'],
45
- "Feedback": feedback
46
- })
47
-
48
- # Update progress bar
49
- progress_bar.progress(idx / total_resumes)
50
-
51
- # Clear the current file placeholder after processing all files
52
- current_file_placeholder.empty()
53
-
54
- # Sort resumes by ATS score
55
- sorted_resumes = sorted(resumes_data, key=lambda x: x["ATS Score"], reverse=True)
56
-
57
- # Add rankings
58
- for rank, resume in enumerate(sorted_resumes, start=1):
59
- resume["Rank"] = rank
60
-
61
- # Display results
62
- st.subheader("Top Matches:")
63
- for resume in sorted_resumes:
64
- st.write(f"### Rank {resume['Rank']}: {resume['name']}")
65
- st.write(f"**ATS Score:** {resume['ATS Score']*100:.0f}%")
66
- st.write("**Missing Skills:**", ", ".join(resume["Missing Skills"]) if resume["Missing Skills"] else "None")
67
- st.write("**Feedback:**", resume["Feedback"])
68
- st.write("---")
69
-
70
- # Skill Gap Analysis Table
71
- st.subheader("Skill Gap Analysis")
72
- for resume in sorted_resumes:
73
- st.write(f"**{resume['name']} (Rank {resume['Rank']})**")
74
- skill_data = {
75
- "Required Skills": required_skills,
76
- "Present in Resume": ["βœ…" if skill in resume["Skills Present"] else "❌" for skill in required_skills],
77
- "Missing": [skill if skill in resume["Missing Skills"] else "β€”" for skill in required_skills]
78
- }
79
- df = pd.DataFrame(skill_data)
80
- st.table(df)
81
-
82
- # Visualize ATS Scores with Rankings
83
- st.subheader("ATS Score Distribution")
84
- names_with_ranks = [f"Rank {r['Rank']}: {r['name']}" for r in sorted_resumes]
85
- scores = [r["ATS Score"]*100 for r in sorted_resumes]
86
- plt.figure(figsize=(8, 5))
87
- plt.bar(names_with_ranks, scores)
88
- plt.title("ATS Scores by Resume (Ranked)")
89
- plt.ylabel("ATS Score (%)")
90
- plt.xticks(rotation=45, ha="right")
91
- st.pyplot(plt)
 
 
 
 
 
18
  # Upload Resumes
19
  uploaded_files = st.file_uploader("Upload your resumes (PDF only):", type="pdf", accept_multiple_files=True)
20
 
21
+ # Add a submit button
22
+ if st.button("Submit"):
23
+ if uploaded_files and job_description:
24
+ resumes_data = []
25
+
26
+ # Initialize progress bar
27
+ progress_bar = st.progress(0)
28
+ total_resumes = len(uploaded_files)
29
+
30
+ # Placeholder to show the current processing file
31
+ current_file_placeholder = st.empty()
32
+
33
+ for idx, file in enumerate(uploaded_files, start=1):
34
+ # Update the current file being processed in the placeholder
35
+ current_file_placeholder.text(f"Currently processing: {file.name}")
36
+
37
+ # Process the file
38
+ text = ExtractPDFText(file)
39
+ ats_score = calculateATSscore(text, job_description)
40
+ skill_analysis = skill_gap_analysis(text, required_skills)
41
+ feedback = modelFeedback(ats_score, text, skill_analysis['missing'])
42
+ resumes_data.append({
43
+ "name": file.name,
44
+ "ATS Score": ats_score,
45
+ "Skills Present": skill_analysis['present'],
46
+ "Missing Skills": skill_analysis['missing'],
47
+ "Feedback": feedback
48
+ })
49
+
50
+ # Update progress bar
51
+ progress_bar.progress(idx / total_resumes)
52
+
53
+ # Clear the current file placeholder after processing all files
54
+ current_file_placeholder.empty()
55
+
56
+ # Sort resumes by ATS score
57
+ sorted_resumes = sorted(resumes_data, key=lambda x: x["ATS Score"], reverse=True)
58
+
59
+ # Add rankings
60
+ for rank, resume in enumerate(sorted_resumes, start=1):
61
+ resume["Rank"] = rank
62
+
63
+ # Display results
64
+ st.subheader("Top Matches:")
65
+ for resume in sorted_resumes:
66
+ st.write(f"### Rank {resume['Rank']}: {resume['name']}")
67
+ st.write(f"**ATS Score:** {resume['ATS Score']*100:.0f}%")
68
+ st.write("**Missing Skills:**", ", ".join(resume["Missing Skills"]) if resume["Missing Skills"] else "None")
69
+ st.write("**Feedback:**", resume["Feedback"])
70
+ st.write("---")
71
+
72
+ # Skill Gap Analysis Table
73
+ st.subheader("Skill Gap Analysis")
74
+ for resume in sorted_resumes:
75
+ st.write(f"**{resume['name']} (Rank {resume['Rank']})**")
76
+ skill_data = {
77
+ "Required Skills": required_skills,
78
+ "Present in Resume": ["βœ…" if skill in resume["Skills Present"] else "❌" for skill in required_skills],
79
+ "Missing": [skill if skill in resume["Missing Skills"] else "β€”" for skill in required_skills]
80
+ }
81
+ df = pd.DataFrame(skill_data)
82
+ st.table(df)
83
+
84
+ # Visualize ATS Scores with Rankings
85
+ st.subheader("ATS Score Distribution")
86
+ names_with_ranks = [f"Rank {r['Rank']}: {r['name']}" for r in sorted_resumes]
87
+ scores = [r["ATS Score"]*100 for r in sorted_resumes]
88
+ plt.figure(figsize=(8, 5))
89
+ plt.bar(names_with_ranks, scores)
90
+ plt.title("ATS Scores by Resume (Ranked)")
91
+ plt.ylabel("ATS Score (%)")
92
+ plt.xticks(rotation=45, ha="right")
93
+ st.pyplot(plt)
94
+ else:
95
+ st.warning("Please upload resumes and provide a job description before submitting.")