-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
93 lines (74 loc) · 3.01 KB
/
Copy pathapp.py
File metadata and controls
93 lines (74 loc) · 3.01 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# TODO:
# 1) Field to put my JD
# 2) Upload my PDF
# 3) PDF to Image ----> preprocessing ----> Google Gemini Pro
# 4) Prompts Template [Multiple Prompts]
"""Importing Libraries"""
from dotenv import load_dotenv
import base64
import io
import streamlit as st
import os
from PIL import Image
import pdf2image
import google.generativeai as genai
load_dotenv()
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
def get_gemini_response(input, pdf_content, prompt):
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content([input, pdf_content[0], prompt])
return response.text
def input_pdf_setup(uploaded_file):
if uploaded_file is not None:
images = pdf2image.convert_from_bytes(uploaded_file.read())
first_page = images[0]
# convert to bytes
img_byte_arr = io.BytesIO()
first_page.save(img_byte_arr, format="JPEG")
img_byte_arr = img_byte_arr.getvalue()
pdf_parts = [
{
"mine_type": "image/jpeg",
"data":base64.b64decode(img_byte_arr).decode()
}
]
return pdf_parts
else:
raise FileNotFoundError("No File Upload")
# streamlit app
st.set_page_config(page_title="ATS Resume Expert")
st.header("ATS Tracking System")
job_desc = st.text_area("Job Description: ", key="input")
uploaded_file = st.file_uploader("Upload your Resume. Only pdfs are accepted", type=["pdf"])
if uploaded_file is not None:
st.write("PDF Uploaded Successdully")
submit1 = st.button('Tell me aboput your resume')
submit2 = st.button("How can I improve my skills")
submit3 = st.button("What are the keywords that are missing")
submit4 = st.button("Percentage match")
input_prompt1 = """
You are an experienced Technical Human Resource Manager,your task is to review the provided resume against the job description.
Please share your professional evaluation on whether the candidate's profile aligns with the role.
Highlight the strengths and weaknesses of the applicant in relation to the specified job requirements.
"""
input_prompt3 = """
You are an skilled ATS (Applicant Tracking System) scanner with a deep understanding of data science and ATS functionality,
your task is to evaluate the resume against the provided job description. give me the percentage of match if the resume matches
the job description. First the output should come as percentage and then keywords missing and last final thoughts.
"""
if submit1:
if uploaded_file is not None:
pdf_content=input_pdf_setup(uploaded_file)
response=get_gemini_response(input_prompt1,pdf_content,job_desc)
st.subheader("The Repsonse is")
st.write(response)
else:
st.write("Please uplaod the resume")
elif submit3:
if uploaded_file is not None:
pdf_content=input_pdf_setup(uploaded_file)
response=get_gemini_response(input_prompt3,pdf_content,job_desc)
st.subheader("The Repsonse is")
st.write(response)
else:
st.write("Please uplaod the resume")