The open, machine-readable standard for career data.
One JSON file. One URL. Always current.
Built for AI agents, ATS systems, and humans.
Spec · JSON Schema · Validator · Builder · Blog Post
Every day, millions of CVs are uploaded as PDFs — then butchered by ATS parsers. Names become addresses. Job titles merge with dates. Skills vanish. AI recruiting agents need structured data, not guesswork from PDF extraction.
cv.json gives every professional a canonical, machine-readable endpoint for their career data.
curl https://freecv.org/p/ashley/cv.jsonNo API key. No auth. Standard HTTP.
Portfolio pages include a <link> tag for automated discovery:
<link rel="alternate" type="application/json" href="/p/ashley/cv.json" title="cv.json" /># Online validator
https://freecv.org/validate
# Schema URL
https://freecv.org/schema/cv/v1.json
# Every cv.json includes a $schema field pointing to this URL
# Use any JSON Schema validator (ajv, zod, etc.)A complete, structured career data schema — all fields optional except basics and meta, production-ready. All date fields validated as YYYY, YYYY-MM, or YYYY-MM-DD.
| Field | Description |
|---|---|
basics |
Name, title, photo, summary, location, social profiles |
work |
Companies, positions, dates, summary + highlights per entry |
education |
Institutions, degrees, fields, scores, summary + highlights |
skills |
Flat array of unique skill names |
languages |
Languages with fluency levels |
projects |
Portfolio projects with role, URLs, keywords + highlights |
certificates |
Professional certifications with issuer, date, expiry, verification URL |
publications |
Papers, articles, books — with publisher, date, and URL |
awards |
Awards, honors, and recognitions with awarder and date |
interests |
Personal interests and hobbies as a flat list |
volunteer |
Volunteer experience with organization URL, summary + highlights |
| Field | Description |
|---|---|
availability |
Job-seeking status, preferred roles, work type, sponsorship |
ats |
Auto-generated ATS metadata: keywords, years of experience, seniority. Treat as hints, not authoritative values. |
verification |
Trust signals: email verified, platform source |
i18n |
Internationalization: primary language, map of translated cv.json URLs |
meta |
Schema version, canonical URL, last modified, generator |
| Field | Constraint |
|---|---|
basics.name |
Required, min length 1 |
skills |
Unique items only |
ats.yearsOfExperience |
Integer, minimum 0 |
ats.seniority |
Enum: entry, junior, mid, senior, lead, executive |
availability.status |
Enum: actively-looking, open, not-looking |
availability.workType[] |
Enum: remote, hybrid, onsite |
availability.employmentType[] |
Enum: full-time, part-time, contract, freelance, internship, temporary, seasonal |
i18n.primary |
Pattern: ^[a-z]{2}(-[A-Z]{2})?$ (ISO 639-1, e.g. en, en-US) |
meta.version |
Pattern: ^[0-9]+\.[0-9]+(\.[0-9]+)?$ (e.g. 1.1 or 1.1.0) |
meta.lastModified |
Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} (ISO 8601 date prefix) |
| All date fields | Pattern: YYYY, YYYY-MM, or YYYY-MM-DD |
- Date validation — all date fields enforce
YYYY,YYYY-MM, orYYYY-MM-DDpatterns publications— papers, articles, books for academics and researchersawards— honors and recognitionsinterests— personal interests as a flat string arrayprojects.role— your role on the project (e.g., "Lead Developer")projects.current— boolean flag for ongoing projectsprojects.highlights— key accomplishments on the projecteducation.summary/volunteer.summary— consistent withwork.summaryvolunteer[].url— organization website URLcertificates[].expiryDate— expiry date for time-limited certificationsemploymentType— added"temporary"and"seasonal"optionsats.seniority— added"entry"and"executive"to enumats.yearsOfExperience— enforcedminimum: 0skills— enforceduniqueItems: truebasics.name— enforcedminLength: 1meta.version/meta.lastModified— format patterns enforcedatsdescription — clarified as auto-generated hints
All changes are non-breaking — v1.0 documents remain valid.
{
"$schema": "https://freecv.org/schema/cv/v1.json",
"basics": {
"name": "Ashley Chen",
"label": "Senior Product Manager",
"location": "San Francisco, CA",
"summary": "10+ years leading cross-functional teams...",
"profiles": [{ "network": "LinkedIn", "url": "..." }]
},
"work": [{
"company": "Stripe",
"position": "Senior PM",
"startDate": "2021-06",
"current": true,
"highlights": ["Increased developer adoption by 34%"]
}],
"skills": ["Product Strategy", "SQL", "Figma"],
"education": [{ "institution": "Stanford", "degree": "MBA" }],
"certificates": [{ "name": "PMP", "issuer": "PMI", "date": "2020-03", "expiryDate": "2026-03" }],
"interests": ["AI Ethics", "Open Source"],
"availability": {
"status": "open",
"workType": ["remote", "hybrid"],
"employmentType": ["full-time", "contract"],
"roles": ["Product Manager", "Head of Product"]
},
"ats": {
"keywords": ["Product Strategy", "SQL"],
"yearsOfExperience": 10,
"seniority": "senior"
},
"verification": { "email": true, "platform": "freecv.org" },
"meta": {
"version": "1.1",
"canonical": "https://freecv.org/p/ashley/cv.json",
"lastModified": "2026-04-11T10:00:00Z",
"generator": "FreeCV"
}
}Unlike static file exports, cv.json is served from a live endpoint:
https://freecv.org/p/{slug}/cv.json # Free tier
https://livelink.cv/{slug}/cv.json # Pro (custom domain)
Update your CV once → every system that fetches your endpoint gets the latest version.
Content-Type: application/json; charset=utf-8
Link: <https://freecv.org/schema/cv/v1.json>; rel="describedby"
X-CV-Version: 1.1
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=300
- Off by default — cv.json returns 404 until explicitly enabled
- Email hidden by default — opt-in to include contact info
- Phone hidden by default — opt-in to include phone number
- One-click disable — turn off your endpoint anytime from Dashboard → Settings
- Guest users — no cv.json endpoint (requires account + slug)
| Who | How |
|---|---|
| AI Recruiting Agents | Fetch, compare, and rank candidates from structured JSON |
| ATS Platforms | Ingest pre-parsed career data — no PDF parsing needed |
| Job Boards | Auto-populate profiles from a cv.json URL |
| Career Tools | Build on top of portable, standardized career data |
| Individuals | Own your career data in a universal, portable format |
- FreeCV Builder — Build and export cv.json (free)
- FreeCV Portfolio — Live endpoint at
/p/{slug}/cv.json
- FreeCV Validator — Paste JSON or enter a URL to validate online
Your tool here — open an issue to be listed.
We welcome contributions:
- Schema improvements — propose new fields via Issues
- Implementations — build generators, parsers, validators in any language
- Documentation — improve examples, add tutorials
MIT — use cv.json in any project, commercial or otherwise.
Built by FreeCV · Used by job seekers in 180+ countries