""" For HF, the interface should be called app.py """ import pathlib import streamlit as st from utils.process_doc import parse_docx, parse_pdf from Interview import InterviewPage from CVReview import CVReviewPage CURRENT_DIR = pathlib.Path(__file__).parent.resolve() def main(): st.set_page_config(layout="wide") if "api_key" not in st.session_state: st.session_state.api_key = "" if "report" not in st.session_state: st.session_state.report = {} if "shared_materials" not in st.session_state: st.session_state.shared_materials = {"valid_flag": False, "report": None} SHARED_MATERIALS = st.session_state.shared_materials st.markdown("\n") st.markdown("\n") st.markdown("\n") with st.sidebar: st.session_state["api_key"] = st.text_input( "Cohere API Key Entry", value="", placeholder="Enter your Free Tier Cohere API Key", ) job_posting_upload_box = st.text_area( "Job Description Upload Box", value="", placeholder="Copy and Paste the contents of a job post you are interested in.", help="In this box, please dump text content for a job description you are interested in. This could easily be setup to work directly with a webpage (we'd simply need to scrape said page) however I do not want to do that on HF spaces.", ) cv_upload_box = st.file_uploader( "CV Upload Box", help="Upload your CV in .docx or .pdf form. This CV will be parsed, and used to analyse against the given job post.", type=["docx", "pdf"], accept_multiple_files=False, ) if cv_upload_box and job_posting_upload_box != "": SHARED_MATERIALS["job_posting"] = job_posting_upload_box cv_filetype = cv_upload_box.name.split(".")[-1] cv_file_contents = cv_upload_box.getvalue() SHARED_MATERIALS["cv"] = ( parse_docx(cv_file_contents) if cv_filetype == "docx" else parse_pdf(cv_file_contents) ) SHARED_MATERIALS["valid_flag"] = True pg = st.navigation( { "Jonah's AI Job Tools": [ st.Page( InterviewPage, title="Practice Interview", icon=":material/chat:", ), st.Page( CVReviewPage, title="CV Review", icon=":material/description:", ), ], } ) pg.run() if __name__ == "__main__": main()