MianAbdullahShahKakakhel commited on
Commit
7ed3ede
·
verified ·
1 Parent(s): 2fb4dfb

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import PyPDF2
3
+ from huggingface_hub import InferenceClient
4
+
5
+ # Initialize Hugging Face Inference client
6
+ client = InferenceClient()
7
+
8
+ # Models
9
+ GRAMMAR_MODEL = "pszemraj/grammar-synthesis-base"
10
+ SENTIMENT_MODEL = "distilbert-base-uncased-finetuned-sst-2-english"
11
+
12
+ st.set_page_config(page_title="Resume & Cover Letter Analyzer", layout="wide")
13
+
14
+ st.title("📄 Resume & Cover Letter Analyzer")
15
+ st.write("Upload your resume or cover letter (PDF/Text) and get instant AI feedback.")
16
+
17
+ # File uploader
18
+ uploaded_file = st.file_uploader("Upload PDF or paste text below", type=["pdf", "txt"])
19
+
20
+ resume_text = ""
21
+
22
+ if uploaded_file:
23
+ if uploaded_file.type == "application/pdf":
24
+ pdf_reader = PyPDF2.PdfReader(uploaded_file)
25
+ for page in pdf_reader.pages:
26
+ resume_text += page.extract_text() + "\n"
27
+ else:
28
+ resume_text = uploaded_file.read().decode("utf-8")
29
+
30
+ # Text area input
31
+ manual_text = st.text_area("Or paste your resume / cover letter text here:")
32
+
33
+ if manual_text.strip():
34
+ resume_text = manual_text
35
+
36
+ if resume_text:
37
+ st.subheader("Extracted Text")
38
+ st.write(resume_text[:1000] + "..." if len(resume_text) > 1000 else resume_text)
39
+
40
+ st.subheader("AI Feedback")
41
+
42
+ # Grammar correction
43
+ with st.spinner("Checking grammar..."):
44
+ response = client.text_generation(
45
+ model=GRAMMAR_MODEL,
46
+ prompt=resume_text[:500], # shorten to avoid token limits
47
+ max_new_tokens=200
48
+ )
49
+ st.markdown("✅ **Grammar Suggestions:**")
50
+ st.write(response)
51
+
52
+ # Sentiment analysis
53
+ with st.spinner("Analyzing tone..."):
54
+ sentiment = client.text_classification(
55
+ model=SENTIMENT_MODEL,
56
+ inputs=resume_text[:500]
57
+ )
58
+ st.markdown("🎭 **Tone & Sentiment:**")
59
+ st.json(sentiment)
60
+ else:
61
+ st.info("⬆️ Upload a file or paste text to get started.")