import streamlit as st import PyPDF2 from huggingface_hub import InferenceClient # Initialize Hugging Face Inference client client = InferenceClient() # Models GRAMMAR_MODEL = "pszemraj/grammar-synthesis-base" SENTIMENT_MODEL = "distilbert-base-uncased-finetuned-sst-2-english" st.set_page_config(page_title="Resume & Cover Letter Analyzer", layout="wide") st.title("📄 Resume & Cover Letter Analyzer") st.write("Upload your resume or cover letter (PDF/Text) and get instant AI feedback.") # File uploader uploaded_file = st.file_uploader("Upload PDF or paste text below", type=["pdf", "txt"]) resume_text = "" if uploaded_file: if uploaded_file.type == "application/pdf": pdf_reader = PyPDF2.PdfReader(uploaded_file) for page in pdf_reader.pages: resume_text += page.extract_text() + "\n" else: resume_text = uploaded_file.read().decode("utf-8") # Text area input manual_text = st.text_area("Or paste your resume / cover letter text here:") if manual_text.strip(): resume_text = manual_text if resume_text: st.subheader("Extracted Text") st.write(resume_text[:1000] + "..." if len(resume_text) > 1000 else resume_text) st.subheader("AI Feedback") # Grammar correction with st.spinner("Checking grammar..."): response = client.text_generation( model=GRAMMAR_MODEL, prompt=resume_text[:500], # shorten to avoid token limits max_new_tokens=200 ) st.markdown("✅ **Grammar Suggestions:**") st.write(response) # Sentiment analysis with st.spinner("Analyzing tone..."): sentiment = client.text_classification( model=SENTIMENT_MODEL, inputs=resume_text[:500] ) st.markdown("🎭 **Tone & Sentiment:**") st.json(sentiment) else: st.info("⬆️ Upload a file or paste text to get started.")