tensorboy0101 commited on
Commit
3c3103f
·
verified ·
1 Parent(s): 53ae874

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +75 -41
app.py CHANGED
@@ -1,53 +1,87 @@
1
- import streamlit as st
2
- import google.generativeai as genai
3
- import os
4
- import PyPDF2 as pdf
5
  from dotenv import load_dotenv
6
- import json
7
 
8
- load_dotenv() ## load all our environment variables
 
 
 
 
 
 
 
9
 
10
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
11
 
12
- # Gemini Pro Response
13
- def get_gemini_repsonse(input):
14
- # Assigning the Model
15
- model=genai.GenerativeModel('gemini-pro')
16
- response=model.generate_content(input)
17
  return response.text
18
 
19
- # Extract and concatenate text from all pages of the given PDF file
20
- def input_pdf_text(uploaded_file):
21
- reader=pdf.PdfReader(uploaded_file)
22
- text=""
23
- # Iterate through all the pages
24
- for page in range(len(reader.pages)):
25
- page=reader.pages[page]
26
- # Extracting the text
27
- text+=str(page.extract_text())
28
- return text
29
-
30
- #Prompt Template --> The Better the prompt better is the result
31
- input_prompt="""
32
- Hey Act Like a skilled or very experienced ATS(Application Tracking System) with a deep understanding of the tech field, software engineering, data science, data analysis and big data engineering. Your task is to evaluate the resume based on the given job description.
33
- You must consider the job market is very competitive and you should provide the best assistance for improving the resumes. Assign the percentage Matching based on the Job description and the missing keywords with high accuracy.
34
- resume:{text}
35
- description:{jd}
36
-
37
- I want the response in one single string having the structure
38
- {{"JD Match":"%","MissingKeywords:[]","Profile Summary":""}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  """
40
 
41
- ## Creating the Streamlit App
42
- st.title("Smart ATS")
43
- st.text("Improve Your Resume ATS")
44
- jd=st.text_area("Paste the Job Description")
45
- uploaded_file=st.file_uploader("Upload Your Resume",type="pdf",help="Please uplaod the pdf")
46
 
47
- submit = st.button("Submit")
 
 
 
 
 
 
 
48
 
49
- if submit:
50
  if uploaded_file is not None:
51
- text=input_pdf_text(uploaded_file)
52
- response=get_gemini_repsonse(input_prompt)
53
- st.subheader(response)
 
 
 
 
 
 
 
 
1
  from dotenv import load_dotenv
 
2
 
3
+ load_dotenv()
4
+ import base64
5
+ import streamlit as st
6
+ import os
7
+ import io
8
+ from PIL import Image
9
+ import pdf2image
10
+ import google.generativeai as genai
11
 
12
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
13
 
14
+ def get_gemini_response(input,pdf_cotent,prompt):
15
+ model=genai.GenerativeModel('gemini-pro-vision')
16
+ response=model.generate_content([input,pdf_content[0],prompt])
 
 
17
  return response.text
18
 
19
+ def input_pdf_setup(uploaded_file):
20
+ if uploaded_file is not None:
21
+ ## Convert the PDF to image
22
+ images=pdf2image.convert_from_bytes(uploaded_file.read())
23
+
24
+ first_page=images[0]
25
+
26
+ # Convert to bytes
27
+ img_byte_arr = io.BytesIO()
28
+ first_page.save(img_byte_arr, format='JPEG')
29
+ img_byte_arr = img_byte_arr.getvalue()
30
+
31
+ pdf_parts = [
32
+ {
33
+ "mime_type": "image/jpeg",
34
+ "data": base64.b64encode(img_byte_arr).decode() # encode to base64
35
+ }
36
+ ]
37
+ return pdf_parts
38
+ else:
39
+ raise FileNotFoundError("No file uploaded")
40
+
41
+ ## Streamlit App
42
+
43
+ st.set_page_config(page_title="ATS Resume EXpert")
44
+ st.header("ATS Tracking System")
45
+ input_text=st.text_area("Job Description: ",key="input")
46
+ uploaded_file=st.file_uploader("Upload your resume(PDF)...",type=["pdf"])
47
+
48
+
49
+ if uploaded_file is not None:
50
+ st.write("PDF Uploaded Successfully")
51
+
52
+
53
+ submit1 = st.button("Tell Me About the Resume")
54
+
55
+ #submit2 = st.button("How Can I Improvise my Skills")
56
+
57
+ submit3 = st.button("Percentage match")
58
+
59
+ input_prompt1 = """
60
+ You are an experienced Technical Human Resource Manager,your task is to review the provided resume against the job description.
61
+ Please share your professional evaluation on whether the candidate's profile aligns with the role.
62
+ Highlight the strengths and weaknesses of the applicant in relation to the specified job requirements.
63
  """
64
 
65
+ input_prompt3 = """
66
+ You are an skilled ATS (Applicant Tracking System) scanner with a deep understanding of data science and ATS functionality,
67
+ your task is to evaluate the resume against the provided job description. give me the percentage of match if the resume matches
68
+ the job description. First the output should come as percentage and then keywords missing and last final thoughts.
69
+ """
70
 
71
+ if submit1:
72
+ if uploaded_file is not None:
73
+ pdf_content=input_pdf_setup(uploaded_file)
74
+ response=get_gemini_response(input_prompt1,pdf_content,input_text)
75
+ st.subheader("The Repsonse is")
76
+ st.write(response)
77
+ else:
78
+ st.write("Please uplaod the resume")
79
 
80
+ elif submit3:
81
  if uploaded_file is not None:
82
+ pdf_content=input_pdf_setup(uploaded_file)
83
+ response=get_gemini_response(input_prompt3,pdf_content,input_text)
84
+ st.subheader("The Repsonse is")
85
+ st.write(response)
86
+ else:
87
+ st.write("Please uplaod the resume")