File size: 2,474 Bytes
d708c06
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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