Open Standard · MIT License · v0.1

Open Talent Protocol

A machine-first, vendor-neutral JSON standard for professional profiles — designed for humans, agents, and the agentic talent marketplaces of tomorrow.

Why Open Talent Protocol?


Existing resume formats — PDF, Word, LinkedIn exports — were designed for humans reading documents. As autonomous hiring agents and career assistants become real, we need a format that software can reason over reliably.

Open Talent Protocol (OTP) is that format. It encodes the things that matter to agents: structured preferences for matching, verification and provenance for trust, and privacy controls so candidates decide what to share and with whom.

Goal What it means in practice
Machine-first JSON is the canonical format. PDF/HTML rendering is out of scope and done by separate tooling.
Candidate-controlled The visibility section is first-class. Candidates decide what to share, with whom, and when.
Agent-ready preferences, verification, and impact are structured fields agents can act on — not prose to be parsed.
Vendor-neutral MIT licensed. No required registry, platform, or identity provider.
Interoperable Clearly mappable to JSON Resume, HR-XML, and schema.org vocabularies.

Quick start


Validate a document

The validator CLI checks any JSON file against the schema and prints readable errors.

# Install and build the validator
git clone https://github.com/neogene-ai/open-talent-protocol.git
cd open-talent-protocol/tools/validator-cli
npm install && npm run build

# Validate one of the example documents
node dist/index.js ../../examples/developer-junior.json
✓ Valid Open Talent Protocol document

Minimal valid document

Only meta and identity are required. Everything else is optional.

{
  "meta": {
    "schemaVersion": "0.1",
    "language": "en",
    "source": "user"
  },
  "identity": {
    "fullName": "Ada Lovelace",
    "contact": {
      "email": "[email protected]",
      "location": { "city": "London", "country": "GB" }
    }
  }
}

Schema reference


The full schema is a JSON Schema (draft 2020-12) document at schema/opentalent-protocol.schema.json. Below, each section is documented with its fields, types, and intent.

Tip: Only meta and identity are required at the top level. All other sections are optional, so you can start minimal and add richness incrementally.

Document-level metadata describing the schema version, language, and provenance of the document itself.

PropertyTypeReq.Description
schemaVersion string yes Must be "0.1". Used by parsers to select the correct validation rules.
language string no BCP 47 language tag of the document's primary language. Default: "en".
lastUpdated date-time no ISO 8601 timestamp of the last modification.
source string no System or actor that last wrote this document. Examples: "user", "import:jsonresume", "agent".
dataController string no Legal data controller responsible for this document (GDPR Art. 4(7) hook). May be a name, URI, or platform-assigned ID.
subjectId string no Stable, portable identifier for the human subject. Not necessarily an email; may be a DID or platform ID. Enables de-duplication and agent ownership.

Core personal and contact information. The only required property within identity is fullName.

PropertyTypeReq.Description
fullName string yes Legal full name.
preferredName string no Name the person prefers to be called (first name or nickname).
pronouns string no Preferred pronouns, free-form. Examples: "she/her", "they/them".
contact object no Contains email, phone, location (city / region / country / postalCode), and timezone (IANA name).
profiles array no Online profiles. Each item: network (e.g. "github"), url, optional username.
workAuthorization object no Contains description (free text), authorizedCountries (ISO 3166-1 alpha-2 array), and requiresSponsorship (boolean).

A short professional summary written in first or third person. Plain text only — no markup. Agents may use this as context in a system prompt but should not rely on it for structured matching; use preferences and skills for that.

Chronological work history array, most recent first. Each entry represents one position.

PropertyTypeReq.Description
organization string yes Employer or client name.
role string yes Job title or role name.
startDate date yes ISO 8601 date (YYYY-MM-DD).
endDate date no Omit if current; use current: true instead.
current boolean no Set to true for current position.
employmentType enum no One of:
full-timepart-timecontract freelanceinternshipvolunteerother
highlights string[] no Bullet-point accomplishments. Plain text.
impact array no Quantified impact objects. Each: metric, value (string), optional period. Designed for agent-driven ranking.
tags string[] no Free-form domain or technology tags for search and matching.
verification object no See verification object.

Formal education history. Each entry requires institution and degree.

PropertyTypeReq.Description
institutionstringyesName of the institution.
degreestringyesDegree type, e.g. "Bachelor of Science", "Ausbildung".
fieldstringnoField or major of study.
startDate / endDatedatenoISO 8601 dates.
gradestringnoFinal grade in the institution's own notation.
highlightsstring[]noThesis, clubs, awards, relevant courses.
verificationobjectnoSee verification object.

Normalized skill inventory. Designed to be machine-matchable across profiles — use canonical names ("TypeScript" not "TS") and consistent levels.

PropertyTypeReq.Description
namestringyesCanonical skill name.
levelenumno
beginnerintermediateadvancedexpert
categorystringnoE.g. "programming language", "framework", "soft skill", "clinical".
lastUseddatenoWhen this skill was last actively used.
yearsOfExperiencenumbernoApproximate years of practical experience.
verificationobjectnoSee verification object.

Selected personal, open-source, or professional projects that demonstrate skills.

PropertyTypeReq.Description
namestringyesProject name.
descriptionstringnoWhat the project does and why it matters. Plain text.
rolestringnoThe person's role in the project.
technologiesstring[]noTechnologies or tools used.
linksarraynoEach item: label (e.g. "GitHub") and url.

Degrees, professional certifications, and regulated licenses.

PropertyTypeReq.Description
namestringyesCredential name, e.g. "AWS Certified Solutions Architect", "RN License".
issuerstringyesIssuing organization.
issueDatedatenoDate of issue.
expiryDatedatenoExpiry date, if applicable.
credentialIdstringnoCertificate or license ID for public verification.
urlurinoLink to the credential record or badge.
verificationobjectnoSee verification object.

Human language proficiencies.

PropertyTypeReq.Description
codestringyesBCP 47 language tag, e.g. "de", "pt-BR".
namestringyesHuman-readable name, e.g. "German".
levelenumno CEFR scale:
A1A2B1B2C1C2native

Job search preferences — the primary input for agentic matching. Agents filter on preferences before reading work history. This is the most important section for agentic marketplace use cases.

Design note: An OTP-compliant agent must not present a role to a candidate whose constraints the role violates. This is a hard rule, not a hint.
PropertyTypeReq.Description
desiredRolesstring[]noJob titles or role types the candidate is actively seeking.
industriesstring[]noIndustries or verticals of interest.
locationsstring[]noPreferred cities, regions, or countries.
workModesenum[]no
remotehybridonsite
salaryobjectnomin, max (numbers), currency (ISO 4217), period (annual/monthly/daily/hourly), negotiable (boolean).
workHoursenum[]no
full-timepart-timecontractfreelance
constraintsobjectnonoticePeriod, availableFrom (date), travelWillingness (none/occasional/frequent), notes (free text for non-negotiables).

Reusable portfolio artifacts and proof-of-work items. Each item is linked to specific skills.

PropertyTypeReq.Description
typeenumyes
codearticleportfolio test-resultpublicationtalkother
titlestringyesTitle of the artifact.
urluriyesLink to the artifact.
descriptionstringnoWhat this artifact demonstrates.
relatedSkillsstring[]noNames of skills (from skills[]) this artifact supports.
issuerstringnoPlatform or organization hosting this artifact.
verificationobjectnoSee verification object.

Provenance and trust metadata. Appears in two places: (1) as a top-level section recording document-level provenance, and (2) as an optional nested object on individual work, education, skills, credentials, and evidence items.

Document-level fields

PropertyTypeReq.Description
createdByenumnouser platform agent import
createdAtdate-timenoWhen the document was first created.
updatedBystringnoActor that last updated the document.
integritystringnoContent hash for tamper detection. Format: "<algorithm>:<hex-digest>", e.g. "sha256:abc123…". Informational in v0.1.

Item-level verification object

PropertyTypeReq.Description
levelenumno How this item was verified:
selftestissuerplatform
self = self-reported · test = passed an assessment · issuer = confirmed by the credential issuer · platform = verified by the hosting platform.
issuerNamestringnoName of the verifying entity.
issuerTypeenumnocompany school cert-provider platform other
issuedAtdatenoWhen the verification was performed.
urlurinoLink to the verification artifact or badge.

Privacy controls. Set a default visibility level for the whole document, then override specific fields using JSON Pointer paths.

PropertyTypeReq.Description
defaultVisibilityenumno Baseline for the document:
publicrecruitersprivate
public = anyone · recruiters = authenticated employer-side actors · private = owner only.
overridesarrayno Array of { path, visibility } objects. path is a JSON Pointer (RFC 6901), e.g. "/identity/contact/phone". Overrides apply on top of defaultVisibility.
"visibility": {
  "defaultVisibility": "recruiters",
  "overrides": [
    { "path": "/identity/contact/phone", "visibility": "private" },
    { "path": "/preferences/salary",          "visibility": "recruiters" }
  ]
}

A free extension object for domain-specific or proprietary fields. Use namespaced keys to avoid collisions with future spec additions.

"custom": {
  "jobgrow:talentScore": 94,
  "myapp:internalId": "cand-00421"
}

Adding data to custom never breaks a conforming parser. Removing custom never breaks core functionality.

Examples


Three complete, schema-conforming documents are included in the repository. They illustrate how preferences, verification, and visibility are used in practice, and demonstrate that the schema is not developer-centric.

Tools


Validator CLI

A Node.js CLI that validates any JSON file against the OTP schema and prints readable errors. Source: tools/validator-cli/

cd tools/validator-cli
npm install && npm run build
node dist/index.js path/to/profile.json

Agent tools

TypeScript stubs for integrating OTP into MCP-compatible agent frameworks. Source: tools/agent-examples/

Provides two composable functions ready to be registered as MCP tools: validateProfile and introspectProfile.

Migration


OTP is designed to be clearly mappable to and from existing formats.

FormatGuideNotes
JSON Resume migration-json-resume.md Full field-by-field table. OTP is a superset; mapping is lossless for all core fields.
HR-XML migration-hrxml.md High-level conceptual guide. Internal ATS fields (recruiter notes, workflow state) are intentionally dropped.

Governance & neutrality


Open Talent Protocol is vendor-neutral. JobGrow and neogene.ai are its initial sponsors, but the spec is designed for broad ecosystem adoption. No single company has veto power over the schema.

The project is governed by a maintainer council using lazy consensus. See GOVERNANCE.md for the full process, and docs/governance-roadmap.md for the long-term direction (including possible neutral foundation hosting).

Licensed under MIT. The spec will always be free to implement.