jobDescriptionParser / utils /job_desc_pydantic.py
LeoWalker's picture
re organized the file structure in order to work with building a streamlit app to test the job description extraction.
f7fc876
raw
history blame
6.64 kB
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