ResumeParser / resume_field_extraction.py
LeoWalker's picture
updated with gemini and new anthropic models too
d708c06
from typing import List, Optional
from langchain.chains import create_structured_output_runnable
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI
class CompanyOverview(BaseModel):
"""Information about the company offering the job."""
about: Optional[str] = Field(..., description="Brief description of the company")
mission_and_values: Optional[str] = Field(None, description="Company mission and values")
size_and_locations: Optional[str] = Field(None, description="Company size and locations")
class RoleSummary(BaseModel):
"""Summary information about the job role."""
title: str = Field(..., description="Job title")
team_or_department: Optional[str] = Field(None, description="Team or department the role belongs to")
role_type: Optional[str] = Field(..., description="Type of role (full-time, part-time, contract, etc.)")
location: Optional[str] = Field(..., description="Location (on-site, remote, hybrid)")
class ResponsibilitiesAndQualifications(BaseModel):
"""Key responsibilities and qualifications for the job role."""
responsibilities: List[str] = Field(..., description="Key responsibilities of the role")
projects_and_problems: Optional[str] = Field(None, description="Types of projects and problems to be worked on")
required_skills_and_experience: List[str] = Field(..., description="Required skills and experience for the role")
preferred_skills_and_experience: Optional[List[str]] = Field(None, description="Preferred skills and experience for the role")
class CompensationAndBenefits(BaseModel):
"""Compensation and benefits offered for the job role."""
salary_or_pay_range: Optional[str] = Field(None, description="Salary or hourly pay range")
bonus_and_equity: Optional[str] = Field(None, description="Bonus and equity compensation")
benefits: Optional[List[str]] = Field(None, description="Benefits (health insurance, retirement plans, PTO, etc.)")
perks: Optional[List[str]] = Field(None, description="Perks (food, commuter benefits, learning stipend, etc.)")
class JobDescription(BaseModel):
"""Extracted information from a job description."""
company_overview: CompanyOverview
role_summary: RoleSummary
responsibilities_and_qualifications: ResponsibilitiesAndQualifications
compensation_and_benefits: CompensationAndBenefits