Noo88ear's picture
πŸš€ Initial deployment of Multi-Agent Job Application Assistant
7498f2c
from __future__ import annotations
from typing import List, Optional, Dict
from pydantic import BaseModel, Field
class WorkExperience(BaseModel):
title: str
company: str
start_date: Optional[str] = None
end_date: Optional[str] = None
location: Optional[str] = None
achievements: List[str] = Field(default_factory=list)
technologies: List[str] = Field(default_factory=list)
class Education(BaseModel):
school: str
degree: Optional[str] = None
field_of_study: Optional[str] = None
start_date: Optional[str] = None
end_date: Optional[str] = None
class UserProfile(BaseModel):
full_name: str
headline: Optional[str] = None
summary: Optional[str] = None
email: Optional[str] = None
phone: Optional[str] = None
location: Optional[str] = None
skills: List[str] = Field(default_factory=list)
experiences: List[WorkExperience] = Field(default_factory=list)
education: List[Education] = Field(default_factory=list)
links: Dict[str, str] = Field(default_factory=dict)
class JobPosting(BaseModel):
id: str
title: str
company: str
location: Optional[str] = None
description: str
url: Optional[str] = None
source: Optional[str] = None
saved_by_user: bool = False
seniority: Optional[str] = None
employment_type: Optional[str] = None
metadata: Optional[Dict[str, object]] = None
class ResumeDraft(BaseModel):
job_id: str
text: str
keywords_used: List[str] = Field(default_factory=list)
class CoverLetterDraft(BaseModel):
job_id: str
text: str
keywords_used: List[str] = Field(default_factory=list)
class OrchestrationResult(BaseModel):
job: JobPosting
resume: ResumeDraft
cover_letter: CoverLetterDraft
metrics: Optional[Dict[str, object]] = None