File size: 2,748 Bytes
4a310d0
 
f7c3790
 
 
 
 
 
 
 
4a310d0
 
 
f7c3790
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a310d0
 
f7c3790
 
 
 
 
f9495d8
f7c3790
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b2c7518
f7c3790
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
from dotenv import load_dotenv

load_dotenv()
import base64
import streamlit as st
import os
import io
from PIL import Image
import pdf2image
import google.generativeai as genai

genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

def get_gemini_response(input_text, pdf_content, prompt):
    model = genai.GenerativeModel('gemini-pro-vision')
    response = model.generate_content([input_text, pdf_content, prompt])
    return response.text

def input_pdf_setup(uploaded_file):
    if not uploaded_file:
        st.warning("Please upload a PDF file.")
        st.stop()

    # Convert PDF to images
    images = pdf2image.convert_from_bytes(uploaded_file.read())
    first_page = images[0]

    # Convert first page to bytes
    img_byte_arr = io.BytesIO()
    first_page.save(img_byte_arr, format='JPEG')
    img_byte_arr = img_byte_arr.getvalue()

    # Encode as base64
    pdf_parts = [{
        "mime_type": "image/jpeg",
        "data": base64.b64encode(img_byte_arr).decode()
    }]
    return pdf_parts

# Streamlit App
st.set_page_config(page_title="ATS Resume Expert")
st.header("ATS Tracking System")

input_text = st.text_area("Job Description:", key="input")
uploaded_file = st.file_uploader("Upload your resume (PDF)...", type=["pdf"])

if uploaded_file:
    st.success("PDF Uploaded Successfully")

submit1 = st.button("Tell Me About the Resume")
submit3 = 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 a skilled ATS (Applicant Tracking System) scanner with expertise in data science and ATS functionality. 
Your task is to evaluate the resume against the provided job description. Provide a percentage match if the resume aligns with the job description.
First, output the percentage match. Then, list missing keywords, followed by final thoughts.
"""

if submit1 and not submit3:
    if uploaded_file:
        pdf_content = input_pdf_setup(uploaded_file)
        response = get_gemini_response(input_prompt1, pdf_content, input_text)
        st.subheader("Response:")
        st.write(response)
    else:
        st.warning("Please upload the resume.")

elif submit3 and not submit1:
    if uploaded_file:
        pdf_content = input_pdf_setup(uploaded_file)
        response = get_gemini_response(input_prompt3, pdf_content, input_text)
        st.subheader("Response:")
        st.write(response)
    else:
        st.warning("Please upload the resume.")