halimbahae commited on
Commit
ed7680f
·
verified ·
1 Parent(s): 288df6b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -47
app.py CHANGED
@@ -16,15 +16,9 @@ def extract_text_from_pdf(file):
16
  text += page.extract_text()
17
  return text
18
 
19
- def parse_score(score_text):
20
- try:
21
- return float(score_text.strip('%').strip()) / 100
22
- except ValueError:
23
- return None
24
-
25
  def ats_friendly_checker(file):
26
  resume_text = extract_text_from_pdf(file)
27
- system_message = "Evaluate the following resume for ATS-friendliness and provide a score and feedback."
28
  message = resume_text
29
  response = client.chat_completion(
30
  [{"role": "system", "content": system_message}, {"role": "user", "content": message}],
@@ -33,15 +27,8 @@ def ats_friendly_checker(file):
33
  top_p=0.95
34
  ).choices[0].message.content
35
 
36
- score_text = response.split("\n")[0].split(":")[-1].strip()
37
- feedback = "\n".join(response.split("\n")[1:])
38
- score = parse_score(score_text)
39
- if score is not None:
40
- score *= 100 # Convert to percentage
41
- else:
42
- score = 0
43
- feedback = "Error parsing score from the response."
44
- return score, feedback
45
 
46
  def scrape_job_description(url):
47
  response = requests.get(url)
@@ -52,7 +39,7 @@ def scrape_job_description(url):
52
  def resume_match_checker(file, job_url):
53
  resume_text = extract_text_from_pdf(file)
54
  job_description = scrape_job_description(job_url)
55
- system_message = "Compare the following resume with the job description and provide a match score and feedback."
56
  message = f"Resume: {resume_text}\n\nJob Description: {job_description}"
57
  response = client.chat_completion(
58
  [{"role": "system", "content": system_message}, {"role": "user", "content": message}],
@@ -61,19 +48,12 @@ def resume_match_checker(file, job_url):
61
  top_p=0.95
62
  ).choices[0].message.content
63
 
64
- match_score_text = response.split(":")[-1].strip()
65
- feedback = "\n".join(response.split("\n")[1:])
66
- match_score = parse_score(match_score_text)
67
- if match_score is not None:
68
- match_score *= 100 # Convert to percentage
69
- else:
70
- match_score = 0
71
- feedback = "Error parsing match score from the response."
72
- return match_score, feedback
73
 
74
  def resume_quality_score(file):
75
  resume_text = extract_text_from_pdf(file)
76
- system_message = "Evaluate the following resume for overall quality and provide a score and interpretation."
77
  message = resume_text
78
  response = client.chat_completion(
79
  [{"role": "system", "content": system_message}, {"role": "user", "content": message}],
@@ -82,16 +62,8 @@ def resume_quality_score(file):
82
  top_p=0.95
83
  ).choices[0].message.content
84
 
85
- score_lines = response.split("\n")
86
- quality_score_text = score_lines[0].split(":")[-1].strip()
87
- interpretation = "\n".join(score_lines[1:])
88
- quality_score = parse_score(quality_score_text)
89
- if quality_score is not None:
90
- quality_score *= 100 # Convert to percentage
91
- else:
92
- quality_score = 0
93
- interpretation = "Error parsing quality score from the response."
94
- return quality_score, interpretation
95
 
96
  def text_to_overleaf(resume_text):
97
  system_message = "Convert the following resume text to Overleaf code."
@@ -113,29 +85,26 @@ with gr.Blocks() as demo:
113
  with gr.Tab("ATS-Friendly Checker"):
114
  with gr.Row():
115
  resume = gr.File(label="Upload your Resume (PDF)")
116
- score = gr.Number(label="ATS Score", interactive=False)
117
- feedback = gr.Textbox(label="Feedback", interactive=False)
118
- resume.upload(ats_friendly_checker, resume, [score, feedback])
119
 
120
  with gr.Tab("Resume Match Checker"):
121
  with gr.Row():
122
  resume = gr.File(label="Upload your Resume (PDF)")
123
  job_url = gr.Textbox(label="Job Description URL")
124
- match_score = gr.Number(label="Match Score", interactive=False)
125
- feedback = gr.Textbox(label="Feedback", interactive=False)
126
- gr.Button("Check Match").click(resume_match_checker, [resume, job_url], [match_score, feedback])
127
 
128
  with gr.Tab("Resume Quality Score"):
129
  with gr.Row():
130
  resume = gr.File(label="Upload your Resume (PDF)")
131
- quality_score = gr.Number(label="Quality Score", interactive=False)
132
- interpretation = gr.Textbox(label="Interpretation", interactive=False)
133
- resume.upload(resume_quality_score, resume, [quality_score, interpretation])
134
 
135
  with gr.Tab("Text to Overleaf Code"):
136
  with gr.Row():
137
  resume_text = gr.Textbox(label="Resume Text")
138
- overleaf_code = gr.Textbox(label="Overleaf Code", interactive=False)
139
  resume_text.submit(text_to_overleaf, resume_text, overleaf_code)
140
 
141
  gr.Markdown("---\nBuilt with love by [Bahae Eddine HALIM](https://www.linkedin.com/in/halimbahae/)")
 
16
  text += page.extract_text()
17
  return text
18
 
 
 
 
 
 
 
19
  def ats_friendly_checker(file):
20
  resume_text = extract_text_from_pdf(file)
21
+ system_message = "Evaluate the following resume for ATS-friendliness and provide feedback."
22
  message = resume_text
23
  response = client.chat_completion(
24
  [{"role": "system", "content": system_message}, {"role": "user", "content": message}],
 
27
  top_p=0.95
28
  ).choices[0].message.content
29
 
30
+ feedback = response
31
+ return feedback
 
 
 
 
 
 
 
32
 
33
  def scrape_job_description(url):
34
  response = requests.get(url)
 
39
  def resume_match_checker(file, job_url):
40
  resume_text = extract_text_from_pdf(file)
41
  job_description = scrape_job_description(job_url)
42
+ system_message = "Compare the following resume with the job description and provide feedback."
43
  message = f"Resume: {resume_text}\n\nJob Description: {job_description}"
44
  response = client.chat_completion(
45
  [{"role": "system", "content": system_message}, {"role": "user", "content": message}],
 
48
  top_p=0.95
49
  ).choices[0].message.content
50
 
51
+ feedback = response
52
+ return feedback
 
 
 
 
 
 
 
53
 
54
  def resume_quality_score(file):
55
  resume_text = extract_text_from_pdf(file)
56
+ system_message = "Evaluate the following resume for overall quality and provide feedback."
57
  message = resume_text
58
  response = client.chat_completion(
59
  [{"role": "system", "content": system_message}, {"role": "user", "content": message}],
 
62
  top_p=0.95
63
  ).choices[0].message.content
64
 
65
+ interpretation = response
66
+ return interpretation
 
 
 
 
 
 
 
 
67
 
68
  def text_to_overleaf(resume_text):
69
  system_message = "Convert the following resume text to Overleaf code."
 
85
  with gr.Tab("ATS-Friendly Checker"):
86
  with gr.Row():
87
  resume = gr.File(label="Upload your Resume (PDF)")
88
+ feedback = gr.Textbox(label="Feedback", interactive=False, lines=15, max_lines=50) # Increase lines to fill the page
89
+ resume.upload(ats_friendly_checker, resume, feedback)
 
90
 
91
  with gr.Tab("Resume Match Checker"):
92
  with gr.Row():
93
  resume = gr.File(label="Upload your Resume (PDF)")
94
  job_url = gr.Textbox(label="Job Description URL")
95
+ feedback = gr.Textbox(label="Feedback", interactive=False, lines=15, max_lines=50) # Increase lines to fill the page
96
+ gr.Button("Check Match").click(resume_match_checker, [resume, job_url], feedback)
 
97
 
98
  with gr.Tab("Resume Quality Score"):
99
  with gr.Row():
100
  resume = gr.File(label="Upload your Resume (PDF)")
101
+ interpretation = gr.Textbox(label="Interpretation", interactive=False, lines=15, max_lines=50) # Increase lines to fill the page
102
+ resume.upload(resume_quality_score, resume, interpretation)
 
103
 
104
  with gr.Tab("Text to Overleaf Code"):
105
  with gr.Row():
106
  resume_text = gr.Textbox(label="Resume Text")
107
+ overleaf_code = gr.Textbox(label="Overleaf Code", interactive=False, lines=15, max_lines=50) # Increase lines to fill the page
108
  resume_text.submit(text_to_overleaf, resume_text, overleaf_code)
109
 
110
  gr.Markdown("---\nBuilt with love by [Bahae Eddine HALIM](https://www.linkedin.com/in/halimbahae/)")