CapProj commited on
Commit
ea3e124
·
verified ·
1 Parent(s): 9d1ac73

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +70 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import streamlit as st
3
+ import docx2txt
4
+ import fitz # PyMuPDF
5
+ import re
6
+ import nltk
7
+ from collections import Counter
8
+ nltk.download('punkt')
9
+
10
+ # Helper function to extract text from uploaded resume
11
+ def extract_text(uploaded_file):
12
+ if uploaded_file.name.endswith('.pdf'):
13
+ pdf_document = fitz.open(stream=uploaded_file.read(), filetype="pdf")
14
+ text = ""
15
+ for page in pdf_document:
16
+ text += page.get_text()
17
+ return text
18
+ elif uploaded_file.name.endswith('.docx'):
19
+ return docx2txt.process(uploaded_file)
20
+ else:
21
+ return None
22
+
23
+ # Simple JD keyword extractor
24
+ def extract_keywords(jd_text):
25
+ words = nltk.word_tokenize(jd_text)
26
+ words = [w.lower() for w in words if w.isalpha()]
27
+ common_words = Counter(words)
28
+ keywords = [word for word, freq in common_words.items() if freq >= 1]
29
+ return keywords
30
+
31
+ # Simple resume enhancer
32
+ def enhance_resume(resume_text, keywords):
33
+ enhanced_text = resume_text
34
+ missing_keywords = []
35
+ for keyword in keywords:
36
+ if keyword.lower() not in resume_text.lower():
37
+ missing_keywords.append(keyword)
38
+ if missing_keywords:
39
+ enhanced_text += "\n\nAdditional Skills: " + ", ".join(missing_keywords)
40
+ return enhanced_text, missing_keywords
41
+
42
+ # Streamlit App
43
+ st.title("JobForge - Resume Optimizer")
44
+ st.write("Upload your resume and paste a job description to optimize your resume!")
45
+
46
+ uploaded_resume = st.file_uploader("Upload Your Resume", type=["pdf", "docx"])
47
+
48
+ job_description = st.text_area("Paste Job Description Here")
49
+
50
+ if st.button("Forge My Resume"):
51
+ if uploaded_resume and job_description:
52
+ with st.spinner('Forging your resume...'):
53
+ resume_text = extract_text(uploaded_resume)
54
+ jd_keywords = extract_keywords(job_description)
55
+ enhanced_resume, missing_keywords = enhance_resume(resume_text, jd_keywords)
56
+
57
+ st.subheader("Optimized Resume Preview:")
58
+ st.text_area("", enhanced_resume, height=400)
59
+
60
+ st.subheader("Match Score:")
61
+ match_percent = (len(jd_keywords) - len(missing_keywords)) / len(jd_keywords) * 100
62
+ st.write(f"Your resume matches {match_percent:.2f}% of the job description.")
63
+
64
+ st.subheader("Missing Keywords:")
65
+ if missing_keywords:
66
+ st.write(", ".join(missing_keywords))
67
+ else:
68
+ st.success("Your resume covers all keywords!")
69
+ else:
70
+ st.error("Please upload a resume and paste a job description to proceed.")
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ streamlit
2
+ python-docx
3
+ PyMuPDF
4
+ nltk