An open, JSON-based protocol for representing job applicant profiles in a structured, interoperable, and extensible manner.
🌐 Website: app-protocol.org | 📦 npm: applicant-profile-protocol
There are many competing applicant profile formats — JSON Resume, Europass, HR-XML, and countless proprietary ATS schemas. Each has limitations:
- JSON Resume — Developer-friendly but limited scope. No confidence metrics or verification.
- Europass — EU-focused, not globally adopted. Tied to government infrastructure.
- HR-XML — Enterprise-grade but heavyweight XML. Complex to implement.
- ATS Vendors — Proprietary, fragmented. No interoperability between systems.
APP unifies these into a single JSON protocol that is:
- ✅ Interoperable — Export to all major formats
- ✅ Machine-readable — JSON Schema validation, AI-ready
- ✅ Extensible — Layered architecture (core + enrichment + evidence)
- ✅ Open — Community-governed, Apache 2.0 license
| Use Case | APP Helps You... |
|---|---|
| HR Tech Companies | Build interoperable applicant systems |
| ATS/CRM Developers | Import/export profiles across platforms |
| Job Boards | Standardize applicant data formats |
| AI/ML Engineers | Access structured data with confidence scores |
| Career Platforms | Give users portable, verifiable profiles |
| Individual Developers | Create validated, schema-compliant resumes |
# Install globally for CLI usage
npm install -g applicant-profile-protocol
# Or install locally in your project
npm install applicant-profile-protocol# Configure npm to use GitHub Packages for @caglarorhan scope
npm config set @caglarorhan:registry https://npm.pkg.github.com
# Install globally
npm install -g @caglarorhan/applicant-profile-protocol
# Or locally
npm install @caglarorhan/applicant-profile-protocol# Validate an APP profile
app validate your-profile.json
# Export to JSON Resume format
app export:jsonresume your-profile.json > resume.json
# Export to Europass XML
app export:europass your-profile.json > europass.xml
# Export to HR-XML
app export:hrxml your-profile.json > hrxml.xml
# Export to JSON-LD (Schema.org)
app export:jsonld your-profile.json > profile.jsonldThis repository contains the specification, JSON Schema, validation tools, and examples for the Applicant Profile Protocol (APP).
SPEC.md: Full protocol specificationschema/app.schema.json: JSON Schema (v1.0) for validating APP profilesCHANGELOG.md: Version history and release notes
examples/minimal.json: Minimal valid APP profileexamples/full.json: Full featured example with semantic and evidence layers- docs/EXAMPLES.md: 10 detailed real-world examples across industries (Software Engineer, Nurse, Marketing Manager, Data Scientist, Mechanical Engineer, UX Designer, Financial Analyst, Sales Rep, Teacher, Recent Graduate)
docs/mappings/: Export mapping guides for JSON Resume, Europass, HR-XMLdocs/semantic/json-ld.md: Guidance for the optional JSON-LD semantic layersrc/: Validator and exporters (Node.js)public/tools/: Online tools for creating, validating, and converting profiles
You can validate APP JSON using common validators.
npm init -y
npm install ajv@8 ajv-formats
node -e "const Ajv=require('ajv');const addFormats=require('ajv-formats');const fs=require('fs');const schema=JSON.parse(fs.readFileSync('schema/app.schema.json'));const data=JSON.parse(fs.readFileSync('examples/full.json'));const ajv=new Ajv({allErrors:true});addFormats(ajv);const validate=ajv.compile(schema);console.log(validate(data)?'valid':'invalid',validate.errors||'');"pip install jsonschema
python - << 'PY'
import json
from jsonschema import validate, Draft202012Validator
schema = json.load(open('schema/app.schema.json'))
instance = json.load(open('examples/full.json'))
Draft202012Validator.check_schema(schema)
validate(instance=instance, schema=schema)
print('valid')
PYUse the browser-based tools at app-protocol.org — no installation required:
- Profile Builder — Create APP profiles using an intuitive form interface. Saves drafts to localStorage.
- Validator — Validate your APP JSON against the official schema with detailed error messages.
- Converter — Export APP profiles to JSON Resume, Europass XML, HR-XML, or JSON-LD.
- Importer — Import existing profiles from JSON Resume, Europass, HR-XML, or LinkedIn formats.
- PDF Extractor — NEW! AI-powered PDF resume extraction with OpenAI GPT-4 and Google Vision OCR. Achieves 90-95% accuracy.
We've added a powerful backend service that extracts resume data from PDF files using AI:
- AI Entity Extraction — OpenAI GPT-4 intelligently extracts contact info, experience, education, skills, projects, certifications, and more
- OCR Support — Google Cloud Vision automatically detects and processes scanned PDFs
- High Accuracy — 90-95% extraction accuracy vs 60-75% with pattern matching
- Async Processing — Bull queue with Redis handles large files efficiently
- Secure Storage — Firebase Storage + Firestore for authenticated users
- Real-time Status — Poll API for processing progress with detailed stages
- Set up the backend (see backend/QUICKSTART.md)
- Configure Firebase, OpenAI, and Google Cloud credentials
- Start server:
cd backend && npm run dev - Open
public/tools/pdf-extractor-backend.htmlin your browser - Sign in and upload a PDF resume
PDF Upload → Text Extraction → OCR (if needed) → AI Extraction (GPT-4)
→ APP Mapping → Schema Validation → Confidence Scoring → Firestore
Processing Time: 5-30 seconds depending on PDF complexity
Cost: ~$0.01 per resume (OpenAI) + ~$0.0015 per page (Vision API)
- Backend Setup Guide — Detailed configuration
- Quick Start — Get running in 5 minutes
- API Documentation — Full API reference
- Docker Setup — Container deployment
Install dependencies and run the CLI:
npm install
npx app validate examples/full.json
npx app export:jsonresume examples/full.json > dist/full.jsonresume.json
npx app export:europass examples/full.json > dist/full.europass.xml
npx app export:hrxml examples/full.json > dist/full.hrxml.xmlOr via npm scripts:
npm run validate
npm run export:jsonresume
npm run export:europass
npm run export:hrxml
npm run export:jsonldExport APP profiles to other formats:
- ✅ JSON Resume (implemented)
- ✅ Europass XML (implemented)
- ✅ HR-XML (implemented)
- ✅ JSON-LD / Schema.org (implemented)
- 🔜 ATS-specific payloads (planned)
- Protocol uses Semantic Versioning.
- See
SPEC.mdfor versioning policy.
Apache 2.0 — Open source, free to use and modify.
Contributions are welcome! Please open an issue or submit a pull request.
Open specification, community proposals, and backward compatibility encouraged.