What is VitaeFlow?
VitaeFlow is an open standard for embedding structured JSON resume data inside PDF files. A VitaeFlow PDF looks like any normal resume to a human reader, but it also contains machine-readable data that ATS, job boards, and HR tools can extract instantly — no parsing, no guessing.
The .vf.pdf suffix
is recommended for discoverability, but not required.
Install the SDK
Works in Node.js and the browser.
npm install @vitaeflow/sdk Validate a resume
Use strict mode to reject unknown fields, or tolerant for forward compatibility.
import { validateResume } from '@vitaeflow/sdk';
const result = validateResume(resume, { mode: 'strict' });
if (result.valid) {
console.log('Resume is valid!');
} else {
for (const err of result.errors) {
console.log(`${err.path}: ${err.message}`);
}
} Embed in a PDF
Take a plain PDF and embed structured resume data into it. The resume is validated before embedding.
import { embedResume } from '@vitaeflow/sdk';
import { readFileSync, writeFileSync } from 'fs';
const pdf = new Uint8Array(readFileSync('resume.pdf'));
const resume = {
version: '0.1',
profile: 'standard',
basics: {
givenName: 'Marie',
familyName: 'Laurent',
email: 'marie@example.com',
},
work: [{
organization: 'TechCorp',
position: 'Lead Developer',
startDate: '2021-03',
}],
};
const result = await embedResume(pdf, resume);
writeFileSync('resume.vf.pdf', result); Extract from a PDF
Read a VitaeFlow PDF and get the structured data back, automatically validated.
import { extractResume } from '@vitaeflow/sdk';
import { readFileSync } from 'fs';
const pdf = new Uint8Array(readFileSync('resume.vf.pdf'));
const result = await extractResume(pdf);
if (result?.resume) {
console.log(result.resume.basics.givenName); // "Marie"
console.log(result.validation.valid); // true
} CLI
For quick tasks from the terminal.
npm install -g vitaeflow # Validate a JSON resume
vitaeflow validate resume.json
# Embed structured data into a PDF
vitaeflow embed resume.pdf resume.json -o resume.vf.pdf
# Extract data from a VitaeFlow PDF
vitaeflow extract resume.vf.pdf
# Check if a PDF contains VitaeFlow data
vitaeflow inspect resume.vf.pdf Schema overview
Only basics is required. Everything else is optional.
Required
version— schema versionprofile— always "standard"basics— name, email
Optional
- work, education, skills
- languages, certifications
- projects, publications
- volunteer, references, interests