Download app.py from Rahul-Sainy/Simple_ResumeATSTracking: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/spaces/Rahul-Sainy/Simple_ResumeATSTracking/resolve/main/app.py
- Command line
-
hf download hf://spaces/Rahul-Sainy/Simple_ResumeATSTracking/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Rahul-Sainy/Simple_ResumeATSTracking/resolve/main/app.py
2.56 kB
| import streamlit as st | |
| import google.generativeai as genai | |
| import os | |
| from PyPDF2 import PdfReader | |
| import json | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| genai.configure(api_key=os.getenv('Google_API_KEY')) | |
| input_prompt=""" | |
| Hey Act Like a skilled or very experience ATS(Application Tracking System) | |
| with a deep understanding of tech field,software engineering,data science ,data analyst | |
| and big data engineer. Your task is to evaluate 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 thr resumes. Assign the percentage Matching based | |
| on Jd and | |
| the missing keywords with high accuracy | |
| resume:{text} | |
| description:{jd} | |
| I want the response in one single string having the structure | |
| {{"JD Match":"%","MissingKeywords:[]","Profile Summary":""}} | |
| """ | |
| def get_gemini_response(input): | |
| model = genai.GenerativeModel('gemini-pro') | |
| response = model.generate_content(input) | |
| return response.text | |
| def input_pdf_text(uploaded_file): | |
| reader = PdfReader(uploaded_file) | |
| text = '' | |
| for page in reader.pages: | |
| text += str(page.extract_text()) | |
| return text | |
| # Set page configuration | |
| st.set_page_config( | |
| page_title="Resume ATS Tracking", | |
| page_icon="📄", | |
| layout="wide", | |
| initial_sidebar_state="expanded", | |
| ) | |
| sidebar = st.sidebar | |
| sidebar.title('Navigation') | |
| sidebar.markdown('Use this panel to navigate through the application and input your data.') | |
| # Add a title and a subtitle | |
| st.title('Resume ATS Tracking') | |
| st.subheader('Upload your resume and paste the job description to get the ATS tracking response') | |
| jd = st.text_area('Paste the Job Description') | |
| uploaded_file = sidebar.file_uploader('Upload Resume', type=['pdf']) | |
| submit = st.button('Submit') | |
| # Process the uploaded file and job description when the submit button is clicked | |
| try: | |
| if submit: | |
| if uploaded_file is not None: | |
| text = input_pdf_text(uploaded_file) | |
| response = get_gemini_response(input_prompt) | |
| response_dict = json.loads(response) | |
| # Display the response in a structured way | |
| st.subheader('ATS Tracking Response:') | |
| st.markdown(f"**JD Match:** {response_dict['JD Match']}") | |
| st.markdown(f"**Missing Keywords:** {', '.join(response_dict['MissingKeywords'])}") | |
| st.markdown(f"**Profile Summary:** {response_dict['Profile Summary']}") | |
| except Exception as e: | |
| st.error(f"An error occurred: {str(e)}") | |
| st.error(traceback.format_exc()) |