naukri-pa / Profile_Detail.py
AnishaG0201's picture
Update Profile_Detail.py
fa10662 verified
import streamlit as st
import os
from dotenv import load_dotenv
from langchain_community.llms import OpenAI
from langchain_google_genai import ChatGoogleGenerativeAI
from fpdf import FPDF
import fitz
# Load environment variables
load_dotenv()
def generate_resume(details):
prompt = f"""
Create an ATS-optimized resume based on the following details:
Name: {details['name']}
Contact Information: {details['contact']}
LinkedIn Profile: {details['linkedin']}
Professional Summary: {details['summary']}
Work Experience: {details['experience']}
Education: {details['education']}
Skills: {details['skills']}
Certifications: {details['certifications']}
Projects: {details['projects']}
Provide the resume in a well-structured format.
"""
llm = OpenAI(temperature=0.7, openai_api_key=st.secrets["OPENAI_API_KEY"],max_tokens=1500)
resume = llm(prompt)
return resume
def create_pdf(resume_text, filename):
pdf = FPDF()
pdf.add_page()
pdf.set_auto_page_break(auto=True, margin=15)
pdf.set_font("Arial", size=12)
for line in resume_text.split('\n'):
pdf.multi_cell(0, 10, line.encode('latin-1', 'replace').decode('latin-1'))
pdf.output(filename)
def extract_text_from_pdf(pdf_file):
doc = fitz.open(stream=pdf_file.read(), filetype="pdf")
text = ""
for page in doc:
text += page.get_text()
return text
def parse_extracted_text(text):
details = {
'name': "",
'contact': "",
'linkedin': "",
'summary': "",
'experience': "",
'education': "",
'skills': "",
'certifications': "",
'projects': ""
}
# Here, you would implement parsing logic to extract details from the text.
# For simplicity, this example assumes the text is well-structured and uses basic keyword extraction.
# In a real-world scenario, you would use more sophisticated text parsing techniques.
lines = text.split('\n')
for i, line in enumerate(lines):
if "Name:" in line:
details['name'] = line.split("Name:")[1].strip()
elif "Contact Information:" in line:
details['contact'] = line.split("Contact Information:")[1].strip()
elif "LinkedIn Profile:" in line:
details['linkedin'] = line.split("LinkedIn Profile:")[1].strip()
elif "Professional Summary:" in line:
details['summary'] = line.split("Professional Summary:")[1].strip()
elif "Work Experience:" in line:
details['experience'] = " ".join(lines[i+1:i+5]).strip()
elif "Education:" in line:
details['education'] = " ".join(lines[i+1:i+3]).strip()
elif "Skills:" in line:
details['skills'] = line.split("Skills:")[1].strip()
elif "Certifications:" in line:
details['certifications'] = line.split("Certifications:")[1].strip()
elif "Projects:" in line:
details['projects'] = " ".join(lines[i+1:i+3]).strip()
return details
def app():
st.title("Resume Creation")
uploaded_file = st.file_uploader("Upload a resume to pre-fill details", type=["pdf"])
if uploaded_file:
if st.button("Submit"):
extracted_text = extract_text_from_pdf(uploaded_file)
details = parse_extracted_text(extracted_text)
st.write("Extracted Text:", extracted_text) # Debug: Show the extracted text
st.write("Parsed Details:", details) # Debug: Show the parsed details
else:
details = {
'name': "",
'contact': "",
'linkedin': "",
'summary': "",
'experience': "",
'education': "",
'skills': "",
'certifications': "",
'projects': ""
}
else:
details = {
'name': "",
'contact': "",
'linkedin': "",
'summary': "",
'experience': "",
'education': "",
'skills': "",
'certifications': "",
'projects': ""
}
with st.form("resume_form"):
st.header("Enter your details to generate an ATS-optimized resume")
name = st.text_input("Name", value=details['name'])
contact = st.text_area("Contact Information (phone, email, address)", value=details['contact'])
linkedin = st.text_input("LinkedIn Profile URL", value=details['linkedin'])
summary = st.text_area("Professional Summary", value=details['summary'])
experience = st.text_area("Work Experience (provide details of each job including company name, job title, duration, and responsibilities)", value=details['experience'])
education = st.text_area("Education (provide details of degrees, institutions, and graduation dates)", value=details['education'])
skills = st.text_area("Skills (list your skills)", value=details['skills'])
certifications = st.text_area("Certifications (list any relevant certifications)", value=details['certifications'])
projects = st.text_area("Projects (provide details of your projects)", value=details['projects'])
submitted = st.form_submit_button("Generate Resume")
if submitted:
if name and contact and linkedin and summary and experience and education and skills and certifications and projects:
details = {
'name': name,
'contact': contact,
'linkedin': linkedin,
'summary': summary,
'experience': experience,
'education': education,
'skills': skills,
'certifications': certifications,
'projects': projects
}
resume = generate_resume(details)
st.header("Generated Resume")
st.text(resume)
# Save resume as PDF and provide download link
pdf_filename = "resume.pdf"
create_pdf(resume, pdf_filename)
with open(pdf_filename, "rb") as pdf_file:
st.download_button(
label="Download Resume as PDF",
data=pdf_file,
file_name=pdf_filename,
mime="application/pdf"
)
else:
st.error("Please fill in all the fields to generate the resume.")
# st.title("Resume Creation")
# uploaded_file = st.file_uploader("Upload a resume to pre-fill details", type=["pdf"])
# if uploaded_file:
# extracted_text = extract_text_from_pdf(uploaded_file)
# details = parse_extracted_text(extracted_text)
# else:
# details = {
# 'name': "",
# 'contact': "",
# 'linkedin': "",
# 'summary': "",
# 'experience': "",
# 'education': "",
# 'skills': "",
# 'certifications': "",
# 'projects': ""
# }
# with st.form("profile_form"):
# st.header("Enter your details to generate an ATS-optimized resume")
# name = st.text_input("Name")
# contact = st.text_area("Contact Information (phone, email, address)")
# linkedin = st.text_input("LinkedIn Profile URL")
# summary = st.text_area("Professional Summary")
# experience = st.text_area("Work Experience (provide details of each job including company name, job title, duration, and responsibilities)")
# education = st.text_area("Education (provide details of degrees, institutions, and graduation dates)")
# skills = st.text_area("Skills (list your skills)")
# certifications = st.text_area("Certifications (list any relevant certifications)")
# projects = st.text_area("Projects (provide details of your projects)")
# submitted = st.form_submit_button("Generate Resume")
# if submitted:
# if name and contact and linkedin and summary and experience and education and skills and certifications and projects:
# details = {
# 'name': name,
# 'contact': contact,
# 'linkedin': linkedin,
# 'summary': summary,
# 'experience': experience,
# 'education': education,
# 'skills': skills,
# 'certifications': certifications,
# 'projects': projects
# }
# resume = generate_resume(details)
# st.header("Generated Resume")
# st.text(resume)
# # Save resume as PDF and provide download link
# pdf_filename = "resume.pdf"
# create_pdf(resume, pdf_filename)
# with open(pdf_filename, "rb") as pdf_file:
# st.download_button(
# label="Download Resume as PDF",
# data=pdf_file,
# file_name=pdf_filename,
# mime="application/pdf"
# )
# else:
# st.error("Please fill in all the fields to generate the resume.")