cv_quality / app.py
Nassiraaa's picture
Update app.py
7aea58f verified
import streamlit as st
from cv_analyzer import analyze_cv
from cv_quality import CV
from get_supabase import Supabase
from datetime import datetime
st.set_page_config(page_title="CV Analyzer", layout="wide")
st.title('CV Analyzer')
# Initialize Supabase client
supabase_client = Supabase().init_supabase_client()
# Supabase storage details
BUCKET_NAME = "CVs UX"
SUPABASE_PROJECT_ID = "abjtqzgnrtsikkqgnqeg"
# Get list of files from the Supabase bucket
files = supabase_client.storage.from_(BUCKET_NAME).list()
file_names = [file['name'] for file in files]
# Create a dropdown to select the file
selected_file = st.selectbox("Select a CV to analyze", file_names)
if selected_file:
with st.spinner('Analyzing CV...'):
# Construct the public URL of the selected file
timestamp = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ")
file_url = f"https://{SUPABASE_PROJECT_ID}.supabase.co/storage/v1/object/public/{BUCKET_NAME}/{selected_file}?t={timestamp}"
# Create CV object with the file URL
cv = CV(file_url)
result = cv.analyse_cv_quality()
if "error" in result:
st.error(result["error"])
else:
# Display results
st.header("Personal Information")
personal_info = result["personal_info"]
st.json(personal_info)
st.write(f"Personal Information Score: {personal_info['personal_info_score']}")
st.header("Detected Sections")
st.write(result["detected_sections"])
st.write(f"Section Detection Score: {result['section_detection_score']}")
st.header("Spelling and Grammar")
st.write(f"Error Percentage: {result['spelling_grammar_error_percentage']:.2f}%")
st.write(f"Spelling and Grammar Score: {result['spelling_grammar_score']}")
st.header("Content Quality Analysis")
for section, evaluation in result['content_analysis'].items():
st.subheader(section.capitalize())
st.json(evaluation)
st.write(f"Overall Content Quality Score: {result['overall_score']:.2f} / 10")
st.header("Total CV Score")
total_score = (
personal_info['personal_info_score'] +
result['section_detection_score'] +
result['spelling_grammar_score'] +
result['overall_score']
)
st.write(f"Total Score: {total_score:.2f}")
if __name__ == "__main__":
st.sidebar.title("About")
st.sidebar.info(
"This CV Analyzer extracts personal information, detects sections, "
"checks spelling and grammar, analyzes content quality, "
"and provides a detailed evaluation of the CV."
)