Spaces:
Sleeping
Sleeping
File size: 3,831 Bytes
4a2e94e 66e260e 4a2e94e 66e260e 4a2e94e 1744fe5 66e260e 1744fe5 66e260e 1744fe5 66e260e 4a2e94e 1744fe5 4a2e94e 1744fe5 66e260e 1744fe5 66e260e 1744fe5 4a2e94e 1744fe5 66e260e 4a2e94e 1744fe5 66e260e 4a2e94e 1744fe5 66e260e 1744fe5 66e260e 1744fe5 66e260e 4a2e94e 66e260e 1744fe5 |
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# app.py
import os
import streamlit as st
from features import (ats,
analyzer,
company_recommend,
cover_letter,
enhance,
improve,
interview,
linkedin,
newresume,
recommend,
review)
from components import docLoader
from dotenv import load_dotenv
import google.generativeai as genai
from langchain_google_genai import ChatGoogleGenerativeAI
# Load environment variables
load_dotenv()
# Initialize CareerEnchanter
class CareerEnchanter(object):
def __init__(self, title="CareerEnchanter"):
self.title = title
@staticmethod
def model():
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
return ChatGoogleGenerativeAI(model="gemini-pro")
# Initialize CareerEnchanter instance
enchanter = CareerEnchanter()
# Set Streamlit page configuration
st.set_page_config(page_title=enchanter.title, page_icon='🤖', layout='wide')
# Main title
st.title("🚀 Career Enchanter 🚀")
# Load document
text = docLoader.load_doc()
st.session_state['doc_text'] = text
# Job Description input
jd = st.text_area("Job Description: ", key="input")
# Sidebar options
with st.sidebar:
st.title('🔮 Career Enchanter Options 🔮')
option = st.radio("Select an option: ", (
"ATS Score",
"Resume Review",
"Resume Enhancements",
"Resume Improvements",
"Recommendation",
"Keywords",
"Generate Cover Letter",
"Resume Generator",
"Linkedin Profile Update",
"Possible Interview Questions",
"Company Recommendations"
))
# Load model
with st.spinner("Loading Model..."):
llm = enchanter.model()
if option == "ATS Score":
calculation_method = st.radio("Choose how you want to calculate ATS Score: ", ("Using AI", "Manually (Cosine Similarity)"), horizontal=True)
elif option == "Recommendation":
recommendation_type = st.radio("Select the type of recommendation you want: ", ("Entire Resume", "Section Wise"), horizontal=True)
elif option == "Keywords":
analyz_type = st.radio("Select the type of Keywords Fucntion you want: ", ("Analyse Keywords", "Keyword Synonyms"), horizontal=True)
# Dictionary mapping options to functions
option_functions = {
"ATS Score": ats.run_ats,
"Resume Review": review.run_review,
"Resume Enhancements": enhance.run_enhance,
"Resume Improvements": improve.run_improve,
"Recommendation": recommend.run_recommend,
"Keywords": analyzer.run_analyzer,
"Generate Cover Letter": cover_letter.run_letter,
"Resume Generator": newresume.run_newresume,
"Linkedin Profile Update": linkedin.run_linkedin,
"Possible Interview Questions": interview.run_interview,
"Company Recommendations": company_recommend.run_company
}
# Handle the selected option
if option in option_functions:
func = option_functions[option]
if option == "ATS Score":
if calculation_method == "Manually (Cosine Similarity)":
func(llm, st.session_state['doc_text'], jd, manual=True)
else:
func(llm, st.session_state['doc_text'], jd)
elif option == "Recommendation":
if recommendation_type == "Entire Resume":
func(llm, st.session_state['doc_text'], jd, section=True)
else:
func(llm, st.session_state['doc_text'], jd)
elif option == "Keywords":
if analyz_type == "Analyse Keywords":
func(llm, st.session_state['doc_text'], jd, analysis=True)
else:
func(llm, st.session_state['doc_text'], jd)
else:
func(llm, st.session_state['doc_text'], jd)
|