nasirkhan786's picture
ATS app
bee6083
from langchain_google_genai import ChatGoogleGenerativeAI
import streamlit as st
from dotenv import load_dotenv
from langchain.prompts import PromptTemplate
import PyPDF2 as pdf
import os
load_dotenv()
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
# gemini pro response
def get_gemini_response(resume_text,job_description):
# llm
llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro",temperature=0,)
# prompt
prompt_template = """
Hey asct like a skilled or very experience ATS(Application Tracking System)
with a deep understanding of tech fields, Software Engineering, Data Science,
Fullstack web dwvelopment, Big Data Engineering, DEVOPS, Data Analyest,ML and DL Engineering,
Generative AI engineering and having deep ATS functionality,
Your Task is to avaluate the resume based on the given job description.
You must consider the job market is very competitive and you should provide best assistance
for improving the resumes. Assign the percentage Matching based on the jd and
the missing keywordswith high accuracy
resume:{text}
description:{job_description}
I want the reason that having structure
{{"JD Match":"%",
"MissingKeywieds:[]",
"Profile Summary":""}}
"""
prompt = PromptTemplate(template=prompt_template, input_variables=["text", "job_description"] )
# chaining
chain = prompt | llm
# invoke the response
response = chain.invoke({"text":resume_text, "job_description":job_description })
return response.content
# extract the text from uploaded_file
def input_pdf_text(uploaded_file):
reader = pdf.PdfReader(uploaded_file)
text=""
for page_num in range(len(reader.pages)):
page = reader.pages[page_num]
text+=page.extract_text()
return text
# streamlit app
st.set_page_config(page_title="ATS Resume Expert")
st.header("ATS Tracking System")
st.text("Improve Your Resume Through ATS")
job_description = st.text_area("Past the Job Description :")
uploaded_file = st.file_uploader("Upload Your Resume" ,type="pdf", help="please upload the pdf")
if uploaded_file is not None:
st.write("PDF Uploaded Successfully")
submit = st.button("Submit")
if submit:
if uploaded_file is not None:
resume_text = input_pdf_text(uploaded_file)
response = get_gemini_response(resume_text,job_description)
st.subheader("The response is:")
st.write(response)
else:
st.write("please upload a resume")