import os import streamlit as st import google.generativeai as genai import pandas as pd from io import StringIO import fitz # PyMuPDF # Configure Google Generative AI genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) model = genai.GenerativeModel('gemini-1.5-flash') def extract_text_from_pdf(file): """Extract text from PDF.""" text = "" doc = fitz.open(stream=file.read(), filetype="pdf") for page in doc: text += page.get_text() return text def get_gemini_response(prompt): """Function to load Google Gemini model and provide queries as response.""" response = model.generate_content([prompt]) return response[0]['text'] # Adjust this line based on actual response structure def extract_skills(resume_text): prompt = f"Extract the skills from the following resume:\n\n{resume_text}" skills = get_gemini_response(prompt) return skills def match_job_description(resume_text, job_description): prompt = f"Compare the following resume with the job description and provide a match score:\n\nResume:\n{resume_text}\n\nJob Description:\n{job_description}" score = get_gemini_response(prompt) return score # Streamlit application layout st.title('Resume Analyzer for Recruiters') st.header('Upload Resume') uploaded_file = st.file_uploader('Choose a file', type=['pdf', 'docx', 'txt']) if uploaded_file is not None: if uploaded_file.type == "application/pdf": resume_text = extract_text_from_pdf(uploaded_file) else: resume_text = uploaded_file.getvalue().decode("utf-8") st.subheader('Resume Text') st.write(resume_text) st.subheader('Extract Skills') if st.button('Extract Skills'): skills = extract_skills(resume_text) st.write('Skills:', skills) st.subheader('Match with Job Description') job_description = st.text_area('Enter Job Description') if st.button('Match'): score = match_job_description(resume_text, job_description) st.write('Match Score:', score) st.sidebar.header('About') st.sidebar.write(""" This application uses the Google Generative AI Gemini-pro model to analyze resumes, extract key skills, and match resumes with job descriptions. It helps recruiters quickly evaluate candidates and streamline the recruitment process. """)