from pydantic import BaseModel, Field from typing import List, Optional class SkillRequirement(BaseModel): name: str = Field( ..., description="Skill or technology required for the job (e.g., Python, SQL, React)" ) level: Optional[str] = Field( None, description="Expected proficiency level: beginner | intermediate | strong" ) class ResponsibilityItem(BaseModel): description: str = Field( ..., description="Key responsibility or task expected from the candidate" ) class RequirementItem(BaseModel): description: str = Field( ..., description="Qualification or requirement such as education, availability, etc." ) class JobDescriptionExtract(BaseModel): job_title: Optional[str] = Field( None, description="Job role/title (e.g., AI/ML Intern, Web Developer)" ) company_name: Optional[str] = Field( None, description="Company offering the job" ) skills_required: Optional[List[SkillRequirement]] = Field( None, description="List of required skills and expected levels" ) responsibilities: Optional[List[ResponsibilityItem]] = Field( None, description="Key job responsibilities" ) tools_technologies: Optional[List[str]] = Field( None, description="Specific tools/frameworks mentioned (e.g., Pandas, WordPress)" ) requirements: Optional[List[RequirementItem]] = Field( None, description="General requirements like availability, qualifications" )