Skip to content

Resume Models

resume

Data models for resume information.

This module defines Pydantic models representing structured resume data, including contact information, work experience, education, certifications, and other resume sections.

Classes

ContactLocation

Bases: BaseModel

Geographic location information.

Attributes:

Name Type Description
city str | None

City name.

state str | None

State or province name.

country str | None

Country name.

postal_code str | None

Postal or ZIP code.

ContactInformation

Bases: BaseModel

Contact information for a person.

Attributes:

Name Type Description
name str | None

Full name of the person.

location ContactLocation | None

Geographic location information.

email str | None

Email address.

phone str | None

Phone number.

linkedin str | None

LinkedIn profile URL.

EducationEntry

Bases: BaseModel

Education history entry.

Attributes:

Name Type Description
degree str | None

Degree name (e.g., "Bachelor of Science in Computer Science").

institution str | None

Name of the educational institution.

years str | None

Years attended or duration.

description str | None

Additional description or details.

graduated_date str | None

Graduation date (as string).

WorkExperienceEntry

Bases: BaseModel

Work experience entry.

Attributes:

Name Type Description
role str | None

Job title or role name.

company str | None

Company name.

location ContactLocation | None

Work location.

duration str | None

Duration of employment (e.g., "2 years").

achievements list[str] | None

List of achievements or accomplishments.

responsibilities list[str] | None

List of job responsibilities.

start_date str | None

Employment start date (as string).

end_date str | None

Employment end date (as string).

CertificationEntry

Bases: BaseModel

Certification entry.

Attributes:

Name Type Description
certificate str | None

Name of the certification.

issuer str | None

Organization that issued the certification.

year str | None

Year obtained (as string).

ProjectEntry

Bases: BaseModel

Project entry.

Attributes:

Name Type Description
name str | None

Project name.

description str | None

Project description.

technologies list[str] | None

List of technologies used in the project.

ResumeData

Bases: BaseModel

Complete resume data structure.

This is the main model representing a parsed resume with all its sections. It aggregates all resume information into a structured format suitable for scoring and analysis.

Attributes:

Name Type Description
executive_summary str | None

Professional summary or objective statement.

skills list[str]

List of skills (technical, soft skills, etc.).

contact_information ContactInformation | None

Contact details and location.

education list[EducationEntry]

List of education entries.

work_experience list[WorkExperienceEntry]

List of work experience entries.

certifications list[CertificationEntry]

List of certification entries.

projects list[ProjectEntry]

List of project entries.

languages list[str]

List of languages spoken.

other_sections dict | None

Additional sections as a dictionary (flexible structure).

Example
resume = ResumeData(
    executive_summary="Experienced software engineer...",
    skills=["Python", "FastAPI", "PostgreSQL"],
    work_experience=[
        WorkExperienceEntry(
            role="Senior Software Engineer",
            company="Tech Corp",
            achievements=["Led team of 5 developers"]
        )
    ],
    education=[
        EducationEntry(
            degree="BS Computer Science",
            institution="University"
        )
    ]
)
Functions
aggregate_text
aggregate_text()

Concatenate key textual fields for keyword-style analysis.

Combines all text content from the resume into a single string for keyword matching and text analysis. Includes summary, skills, education, work experience, certifications, projects, and languages.

Returns:

Type Description
str

Single string containing all resume text content, with fields

str

separated by spaces.

Source code in at_scorer/models/resume.py
def aggregate_text(self) -> str:
    """Concatenate key textual fields for keyword-style analysis.

    Combines all text content from the resume into a single string for
    keyword matching and text analysis. Includes summary, skills, education,
    work experience, certifications, projects, and languages.

    Returns:
        Single string containing all resume text content, with fields
        separated by spaces.
    """
    parts: list[str] = []
    if self.executive_summary:
        parts.append(self.executive_summary)
    parts.extend(self.skills)
    for edu in self.education:
        parts.extend(filter(None, [edu.degree, edu.institution, edu.description]))
    for exp in self.work_experience:
        parts.extend(filter(None, [exp.role, exp.company, exp.duration]))
        if exp.achievements:
            parts.extend(exp.achievements)
        if exp.responsibilities:
            parts.extend(exp.responsibilities)
    for cert in self.certifications:
        parts.extend(filter(None, [cert.certificate, cert.issuer, cert.year]))
    for proj in self.projects:
        parts.extend(filter(None, [proj.name, proj.description]))
        if proj.technologies:
            parts.extend(proj.technologies)
    parts.extend(self.languages)
    return " ".join(parts)