Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
from backend.agents.remoteok_agent import fetch_remoteok_jobs
|
| 3 |
+
from backend.agents.matcher import compute_match
|
| 4 |
+
from backend.agents.resume_parser import extract_text
|
| 5 |
+
|
| 6 |
+
st.set_page_config(page_title="MATCHHIVE", layout="wide")
|
| 7 |
+
|
| 8 |
+
st.title("🚀 MATCHHIVE - AI Job Matcher")
|
| 9 |
+
|
| 10 |
+
# Upload resume
|
| 11 |
+
uploaded = st.file_uploader("Upload your resume (PDF/DOCX)", type=["pdf","docx"])
|
| 12 |
+
resume_text = None
|
| 13 |
+
if uploaded:
|
| 14 |
+
with open("temp_resume."+uploaded.name.split(".")[-1], "wb") as f:
|
| 15 |
+
f.write(uploaded.read())
|
| 16 |
+
resume_text = extract_text(f.name)
|
| 17 |
+
st.success("Resume uploaded & parsed!")
|
| 18 |
+
|
| 19 |
+
# Fetch jobs
|
| 20 |
+
st.subheader("Job Feed (RemoteOK)")
|
| 21 |
+
jobs = fetch_remoteok_jobs(limit=5)
|
| 22 |
+
|
| 23 |
+
for job in jobs:
|
| 24 |
+
st.markdown(f"### {job['title']} at {job['company']}")
|
| 25 |
+
st.write(job['description'][:200] + "...")
|
| 26 |
+
if resume_text:
|
| 27 |
+
score = compute_match(resume_text, job["description"])
|
| 28 |
+
st.progress(score)
|
| 29 |
+
st.write(f"**Match Score:** {score}")
|
| 30 |
+
st.markdown(f"[Apply Here]({job['url']})")
|
| 31 |
+
st.divider()
|