{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://genedai.cv/resume.schema.json",
  "title": "ModernCV resume",
  "description": "Import format for the ModernCV editor (Editor menu → Import backup). JSON Resume documents (https://jsonresume.org/schema) are also accepted and converted automatically.",
  "type": "object",
  "required": [
    "fullName"
  ],
  "properties": {
    "templateId": {
      "type": "string",
      "enum": [
        "classic",
        "modern",
        "ivy",
        "banking",
        "vanguard",
        "timeline",
        "executive",
        "compact",
        "academic",
        "tech",
        "silk",
        "lateral",
        "opal",
        "meridian",
        "keystone",
        "vital",
        "plain",
        "text",
        "graduate",
        "wallstreet",
        "scholar",
        "oxford",
        "standard",
        "lumen",
        "federal",
        "minimalist",
        "duo",
        "altitude",
        "halo",
        "europa",
        "tokyo",
        "jade",
        "portrait",
        "prism",
        "sidebar",
        "creative",
        "professional",
        "elegant",
        "swiss",
        "berlin",
        "iron",
        "ginto",
        "symmetry",
        "path",
        "wireframe",
        "quartz",
        "bronx",
        "paper",
        "moda",
        "noir",
        "mono",
        "pop",
        "cast"
      ],
      "default": "modern"
    },
    "design": {
      "type": "object",
      "properties": {
        "accent": {
          "type": "string",
          "pattern": "^(#[0-9A-Fa-f]{6})?$",
          "description": "Accent colour; empty for the template default."
        },
        "font": {
          "type": "string",
          "enum": [
            "template",
            "inter",
            "source-sans",
            "lato",
            "roboto",
            "source-serif",
            "charis",
            "garamond",
            "tinos",
            "plex-serif",
            "latin-modern"
          ]
        },
        "scale": {
          "type": "number",
          "minimum": 0.85,
          "maximum": 1.15,
          "default": 1
        },
        "paper": {
          "type": "string",
          "enum": [
            "a4",
            "letter"
          ],
          "default": "a4",
          "description": "Paper size: A4 or US Letter."
        }
      }
    },
    "fullName": {
      "type": "string"
    },
    "title": {
      "type": "string",
      "description": "Target job title."
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "website": {
      "type": "string"
    },
    "linkedin": {
      "type": "string"
    },
    "photo": {
      "type": "string",
      "maxLength": 200000,
      "pattern": "^data:image/(jpeg|png|webp);base64,",
      "description": "Optional headshot as a base64 JPEG, PNG or WebP data URL (3:4 portrait, about 420 × 560 px). Only photo templates show it; leave it out for ATS portals and US or UK applications."
    },
    "links": {
      "type": "array",
      "maxItems": 8,
      "description": "Extra profiles shown with the contact details (GitHub, portfolio, X, Dribbble, Google Scholar…). Leave label empty to detect it from the URL.",
      "items": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        }
      },
      "examples": [
        [
          {
            "label": "",
            "url": "github.com/alexsterling"
          },
          {
            "label": "Portfolio",
            "url": "alexsterling.design/work"
          }
        ]
      ]
    },
    "summary": {
      "type": "string",
      "description": "Two or three sentences."
    },
    "experience": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "company": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "isCurrent": {
            "type": "boolean"
          },
          "hours": {
            "type": "string",
            "description": "Hours worked per week, e.g. \"40\". Shown by templates with hours: true in list_templates (Federal); USAJOBS requires it for every job."
          },
          "description": {
            "type": "string",
            "description": "One bullet per line, each starting with \"- \"."
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM (or YYYY).",
            "examples": [
              "2021-03"
            ]
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM, or empty when current."
          }
        }
      }
    },
    "education": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "school": {
            "type": "string"
          },
          "degree": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM (or YYYY).",
            "examples": [
              "2021-03"
            ]
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM, or empty when current."
          }
        }
      }
    },
    "publications": {
      "type": "array",
      "description": "Papers, articles and posters for academic and research CVs. Shown by templates with publications: true in list_templates (Scholar, Academic, Plain, Text, Graduate). The owner's name is bolded in authors automatically.",
      "items": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "authors": {
            "type": "string",
            "description": "Author list in publication order, e.g. \"Lee, P., Chen, J.\""
          },
          "title": {
            "type": "string"
          },
          "venue": {
            "type": "string",
            "description": "Journal, conference, publisher or \"Preprint\"."
          },
          "year": {
            "type": "string",
            "description": "\"2025\" or \"In press\"."
          },
          "link": {
            "type": "string",
            "description": "DOI or URL."
          }
        }
      }
    },
    "awards": {
      "type": "array",
      "description": "Grants, fellowships, scholarships, prizes and performance awards. Shown by templates with awards: true in list_templates (the academic ones and Federal).",
      "items": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "e.g. \"Graduate Research Fellowship\"."
          },
          "issuer": {
            "type": "string",
            "description": "Funder or awarding body."
          },
          "year": {
            "type": "string",
            "description": "\"2025\" or \"2023–2026\"."
          },
          "detail": {
            "type": "string",
            "description": "Optional amount, role or note, e.g. \"$450,000, co-PI\"."
          }
        }
      }
    },
    "talks": {
      "type": "array",
      "description": "Invited talks, conference presentations, seminars and posters. Shown by the same templates as publications.",
      "items": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "event": {
            "type": "string",
            "description": "Conference, seminar series or host, e.g. \"NeurIPS, invited talk\"."
          },
          "location": {
            "type": "string"
          },
          "year": {
            "type": "string"
          }
        }
      }
    },
    "teaching": {
      "type": "array",
      "description": "Courses taught, TA roles and guest lectures. Shown by the same templates as publications.",
      "items": {
        "type": "object",
        "required": [
          "course"
        ],
        "properties": {
          "course": {
            "type": "string",
            "description": "Course code and name, e.g. \"CS 229: Machine Learning\"."
          },
          "role": {
            "type": "string",
            "description": "\"Instructor\", \"Teaching Assistant\" or \"Guest lecturer\"."
          },
          "institution": {
            "type": "string"
          },
          "year": {
            "type": "string",
            "description": "\"2024\" or \"Fall 2023, Spring 2024\"."
          }
        }
      }
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "link": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      }
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Plain skills, or grouped as \"Category: item, item\".",
      "examples": [
        [
          "Languages: Go, TypeScript",
          "Kubernetes"
        ]
      ]
    }
  }
}
