Resume JSON
The editor, THEA, and MCP all load this document. sections is a top-level array.
Do not nest items under education / experience / projects / skills object keys — that content will not show up.
Canonical document
{
"header": {
"name": "",
"location": "",
"email": "",
"phone": "",
"linkedin": "",
"github": "",
"portfolio": ""
},
"sections": [
{
"id": "education",
"type": "education",
"name": "Education",
"visible": true,
"items": [{ "degree": "", "location": "", "institution": "", "cgpa": "", "dates": "" }]
},
{
"id": "skills",
"type": "skills",
"name": "Skills",
"visible": true,
"items": [{ "label": "Languages", "value": "" }]
},
{
"id": "experience",
"type": "experience",
"name": "Experience",
"visible": true,
"items": [{ "title": "", "dates": "", "company": "", "type": "", "bullets": [""] }]
},
{
"id": "projects",
"type": "projects",
"name": "Projects",
"visible": true,
"items": [{ "name": "", "url": "", "stack": "", "bullets": [""] }]
},
{
"id": "certifications",
"type": "certifications",
"name": "Certifications",
"visible": true,
"items": ["Certificate name (year)"]
}
]
}
Header rules
- Do not add extra header keys. Unused fields must be
"". linkedin: profile slug only (alexvanceorin/alexvance), never a full URL.github: username only, never a full URL.portfolio: domain or URL. Aliaseswebsite,url,siteare mapped here.
Section types
| type | items |
|---|---|
education | { degree, location, institution, cgpa, dates } |
skills | { label, value } |
experience | { title, dates, company, type, bullets[] } — type is work arrangement / location. |
projects | { name, url, stack, bullets[] } |
certifications | strings |
custom | { type: "text"|"bullet", heading?, content } |
Unknown type values do not crash the renderer. visible: false omits the section from PDF/LaTeX.
Optional filename on the document sets the download name.