File size: 2,126 Bytes
318df0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from pydantic import BaseModel, Field, ValidationError
from typing import List, Optional, Dict

# The following classes are for the resume template

class ContactInfo(BaseModel):
    email: Optional[str] = None
    phone: Optional[str] = None
    linkedin: Optional[str] = None

class PersonalDetails(BaseModel):
    full_name: str
    contact_info: ContactInfo
    professional_summary: Optional[str] = None

class Education(BaseModel):
    institution: Optional[str] = None
    degree: Optional[str] = None
    field_of_study: Optional[str] = None
    graduation_date: Optional[str] = None

class WorkExperience(BaseModel):
    company: Optional[str] = None
    title: Optional[str] = None
    duration: Optional[str] = None
    description: Optional[str] = None
    notable_contributions: Optional[List[str]] = None

class Project(BaseModel):
    name: Optional[str] = None
    description: Optional[str] = None
    technologies: Optional[str] = None
    role: Optional[str] = None

class Certification(BaseModel):
    title: Optional[str] = None
    certifying_body: Optional[str] = None
    date: Optional[str] = None

class Publication(BaseModel):
    title: Optional[str] = None
    co_authors: List[str] = []
    date: Optional[str] = None

class Award(BaseModel):
    title: Optional[str] = None
    awarding_body: Optional[str] = None
    date: Optional[str] = None

class VolunteerExperience(BaseModel):
    organization: Optional[str] = None
    role: Optional[str] = None
    duration: Optional[str] = None
    description: Optional[str] = None

class AdditionalSections(BaseModel):
    volunteer_experience: Optional[List[VolunteerExperience]] = []
    languages: Optional[List[str]] = []
    interests: Optional[List[str]] = []

class Resume(BaseModel):
    personal_details: PersonalDetails
    education: List[Education] = []
    work_experience: List[WorkExperience] = []
    projects: List[Project] = []
    skills: List[str] = []
    certifications: List[Certification] = []
    publications: List[Publication] = []
    awards: List[Award] = []
    additional_sections: Optional[AdditionalSections] = None