hr_scoring / app.py
mahmodGendy's picture
Update app.py
8f00bc3 verified
import gradio as gr
import os
import uuid
import csv
from datetime import datetime
from services.resume_parser import extract_text
from services.scoring import compute_similarity, skill_score
from services.decision_engine import final_decision
LOG_FILE = "logs.csv"
def log_result(job_title, decision):
file_exists = os.path.isfile(LOG_FILE)
with open(LOG_FILE, "a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
if not file_exists:
writer.writerow(["id", "date", "job_title", "decision"])
writer.writerow([
str(uuid.uuid4()),
datetime.now().isoformat(),
job_title,
decision
])
def analyze(file, job_title, level):
try:
file_path = file.name
resume_text = extract_text(file_path)
sim_score = compute_similarity(resume_text, job_title)
skills = skill_score(resume_text, job_title)
decision = final_decision(sim_score, skills, level)
result = {
"similarity_score": sim_score,
"skill_score": skills,
"job_title": job_title,
"level": level,
"decision": decision
}
log_result(job_title, decision)
os.remove(file_path)
return result
except Exception as e:
return {"error": str(e)}
demo = gr.Interface(
fn=analyze,
inputs=[
gr.File(label="Upload Resume (PDF/DOCX)"),
gr.Textbox(label="Job Title"),
gr.Dropdown(
["Entry", "Junior", "Mid", "Senior"],
label="Job Level",
value="Junior"
)
],
outputs="json",
title="AI Resume Screening System",
description="Upload a resume and evaluate its compatibility with a job role using AI screening."
)
demo.launch()