Spaces:
Runtime error
Runtime error
| 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() |