from pydantic import BaseModel | |
from typing import List, Dict | |
# Applicant Side Models: | |
class ResumeRequest(BaseModel): | |
"""The request body for matching a single resume.""" | |
raw_text: str | |
top_k: int | None = None | |
class JobMatch(BaseModel): | |
"""Represents a single job match with its score.""" | |
job_title: str | |
match_score: float | |
class ApplicantResponse(BaseModel): | |
"""The response body containing job matches and a message.""" | |
matches: List[JobMatch] | |
message: str | |
# Recruiter Side Models: | |
class RecruiterRequest(BaseModel): | |
"""The request body for ranking multiple resumes against a job description.""" | |
raw_job_text: str | |
raw_resume_texts: Dict[str, str] # dict of {filename: raw_resume_text} | |
top_k: int | None = None | |
class ResumeMatch(BaseModel): | |
"""Represents a single ranked resume with its score.""" | |
resume_filename: str | |
match_score: float | |
class RecruiterResponse(BaseModel): | |
"""The response body containing ranked resumes and a message.""" | |
matches: List[ResumeMatch] | |
message: str |