File size: 6,642 Bytes
1b96fb3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
from typing import List, Optional
from langchain_core.pydantic_v1 import BaseModel, Field

class CompanyOverview(BaseModel):
    """
    A model for capturing key information about the company offering the job.
    
    Extract relevant details about the company from the job description, 
    including a brief overview of its industry and products, its mission and 
    values, size, and location(s).
    
    Focus on capturing the most salient points that give a well-rounded picture
    of the company and its culture.
    """

    about: Optional[str] = Field(
        None, 
        description="""Brief description of the company, its industry, products, services, 
                    and any notable achievements or differentiators"""
    )

    mission_and_values: Optional[str] = Field(
        None,
        description="""Company mission, vision, values, and culture, including commitments 
                    to diversity, inclusion, social responsibility, and work-life balance"""
    )
    
    size: Optional[str] = Field(
        None,
        description="Details about company size, such as number of employees")
    
    locations: Optional[str] = Field(
        None,
        description="""Geographic presence of the company, including headquarters, 
                    offices, and any remote work options"""
    )
    
    city: Optional[str] = Field(None, description="City where the company is located")
    
    state: Optional[str] = Field(None, description="State where the company is located")


class RoleSummary(BaseModel):
    """
    A model for capturing the key summary points about the job role.
    
    Extract the essential high-level details about the role from the job description,
    such as the job title, the team or department the role belongs to, the role type, 
    and any remote work options.
    
    Prioritize information that helps understand the overall scope and positioning 
    of the role within the company.
    """
    
    title: str = Field(..., description="Title of the job role")
    
    team_or_department: Optional[str] = Field(
        None,
        description="""Team, department, or business unit the role belongs to, 
                    including any collaborations with other teams"""
    )
    
    role_type: Optional[str] = Field(
        None,
        description="Type of role (full-time, part-time, contract, etc.)"
    )
    
    remote: Optional[str] = Field(
        None,
        description="Remote work options for the role (full, hybrid, none)"
    )

class ResponsibilitiesAndQualifications(BaseModel):
    """
    A model for capturing the key responsibilities, requirements, and preferred 
    qualifications for the job role.

    Extract the essential duties and expectations of the role, the mandatory 
    educational background and experience required, and any additional skills 
    or characteristics that are desirable but not strictly necessary.

    The goal is to provide a clear and comprehensive picture of what the role 
    entails and what qualifications the ideal candidate should possess.
    """

    responsibilities: List[str] = Field(
        description="""The core duties, tasks, and expectations of the role, encompassing 
                    areas such as metrics, theories, business understanding, product 
                    direction, systems, leadership, decision making, strategy, and 
                    collaboration, as described in the job description"""
    )

    required_qualifications: List[str] = Field(
        description="""The essential educational qualifications (e.g., Doctorate, 
                    Master's, Bachelor's degrees in specific fields) and years of 
                    relevant professional experience that are mandatory for the role, 
                    including any alternative acceptable combinations of education 
                    and experience, as specified in the job description"""
    )
    
    preferred_qualifications: List[str] = Field(
        description="""Any additional skills, experiences, characteristics, or domain 
                    expertise that are valuable for the role but not absolute 
                    requirements, such as proficiency with specific tools/technologies, 
                    relevant soft skills, problem solving abilities, and industry 
                    knowledge, as mentioned in the job description as preferred or 
                    nice-to-have qualifications"""
    )
    
class CompensationAndBenefits(BaseModel):
    """
    A model for capturing the compensation and benefits package for the job role.
    
    Extract details about the salary or pay range, bonus and equity compensation, 
    benefits, and perks from the job description.
    
    Aim to provide a comprehensive view of the total rewards offered for the role,
    including both monetary compensation and non-monetary benefits and perks.
    """
    
    salary_or_pay_range: Optional[str] = Field(
        None,
        description="""The salary range or hourly pay range for the role, including 
                    any specific numbers or bands mentioned in the job description"""
    )
    
    bonus_and_equity: Optional[str] = Field(
        None,
        description="""Any information about bonus compensation, such as signing bonuses, 
                    annual performance bonuses, or other incentives, as well as details 
                    about equity compensation like stock options or RSUs"""
    )
    
    benefits: Optional[List[str]] = Field(
        None,
        description="""A list of benefits offered for the role, such as health insurance, 
                    dental and vision coverage, retirement plans (401k, pension), paid 
                    time off (vacation, sick days, holidays), parental leave, and any 
                    other standard benefits mentioned in the job description"""
    )
    
    perks: Optional[List[str]] = Field(
        None,
        description="""A list of additional perks and amenities offered, such as free food 
                    or snacks, commuter benefits, wellness programs, learning and development 
                    stipends, employee discounts, or any other unique perks the company 
                    provides to its employees, as mentioned in the job description"""
    )

class JobDescription(BaseModel):
    """Extracted information from a job description."""
    company_overview: CompanyOverview
    role_summary: RoleSummary
    responsibilities_and_qualifications: ResponsibilitiesAndQualifications
    compensation_and_benefits: CompensationAndBenefits