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." )