Resume Data Schema
Overview
The barbara_resume_golden.json file serves as the single source of truth for my professional experience data. It powers the Experience page with dynamic filtering, and is designed to support multiple output formats (web, PDF, TimelineJS, etc.).
Visual Schema Map
Data Flow Architecture
Why This Architecture?
Problem: Maintaining multiple resume versions (PDF, Word, web) leads to inconsistencies and manual sync work.
Solution: Store all professional data in one structured JSON file, then generate outputs programmatically.
Benefits
- ✅ Single source of truth - Update once, reflect everywhere
- ✅ Version controlled - Track changes via Git
- ✅ Queryable - Filter and search programmatically
- ✅ Portable - Easy to transform into any format
- ✅ AI-friendly - Structured data for digital assistants
Schema Structure
Core Sections
| Section | Purpose | Used By |
|---|---|---|
meta |
Version tracking, source files | Documentation |
profile |
Contact info, headline, summary | About page, contact forms |
education |
Academic degrees | About page, CV generation |
certifications |
Professional credentials | Resume, LinkedIn sync |
skills |
Technical capabilities (6 categories) | Resume, skills matrix |
experience |
Work history with filtering | /experience/ page |
projects |
Portfolio projects | Projects page |
publications |
Research papers | Publications page |
display |
UI configuration (colors, filters) | Experience page styling |
Experience Section (Most Important)
The experience array is what powers the /experience/ page with dynamic filtering.
Required Fields
{
"title": "Job title",
"employer": "Company name",
"start_date": "YYYY-MM",
"domains": ["category1", "category2"],
"highlights": ["Achievement 1", "Achievement 2"],
"tags": ["tag1", "tag2"]
}
Optional But Recommended
{
"employment_type": "Full-time | Contract | Consulting | Founder | Research",
"end_date": "YYYY-MM or null for current",
"location": "City, State or Remote",
"outcomes": [
{"metric": "cycle-time", "value": "↓ 25%"}
],
"skills": ["Python", "SQL", "PowerBI"]
}
How Filtering Works
The experience page uses domains for the filter buttons:
- Each role can have multiple domains (e.g., “public sector”, “data governance”)
- Clicking a domain button shows only roles in that category
- Domain colors are configured in
display.style.domainColors
First 3 highlights from each role are displayed on the card. Keep these concise and impactful.
Usage Examples
Adding a New Role
- Open
_data/barbara_resume_golden.json - Add new object to the
experiencearray (at the top for most recent) - Follow the schema structure
- Choose appropriate
domainsfrom existing filter list or add new ones - Rebuild the site:
bundle exec jekyll build
Updating Skills
The skills object has 6 predefined categories:
programming- Languages and toolsml- Machine learning librariesgenai- GenAI/LLM frameworks (new in 2024)data_viz_bi- Visualization and BI toolscloud_data- Cloud platforms and databasesgovernance_nlp- Data governance and NLPmethods- Methodologies and approaches
Customizing Filter Buttons
Edit display.filters.domains to change which filter buttons appear on the experience page:
"display": {
"filters": {
"domains": [
"public sector",
"healthcare",
"AI engineering",
"enterprise transformation"
]
}
}
Technical Details
Date Format
All dates use YYYY-MM format:
start_date: "2024-01"→ January 2024end_date: null→ Current role (displays as “Present”)
Multi-Domain Roles
Roles can belong to multiple domains for richer categorization:
"domains": [
"enterprise transformation",
"analytics enablement",
"web analytics"
]
Currently, filtering uses the first domain only. Future enhancement: support multi-domain filtering.
Validation
Use the companion schema file for validation:
# Validate JSON structure
python3 -m json.tool _data/barbara_resume_golden.json > /dev/null && echo "✓ Valid JSON"
# Or use the JSON schema validator
# jsonschema -i _data/barbara_resume_golden.json _data/barbara_resume_golden_SCHEMA.json
Files & Locations
| File | Purpose | Location |
|---|---|---|
barbara_resume_golden.json |
Main data file | _data/ |
barbara_resume_golden_SCHEMA.json |
JSON Schema definition | _data/ |
experience.md |
Template that renders the data | _pages/ |
resume-json-schema.mmd |
Mermaid source for diagram | assets/diagrams/ |
resume-json-schema.svg |
Visual schema diagram | assets/diagrams/ |
Maintenance Tips
Keep It DRY
- The JSON is the source of truth
- Don’t duplicate data in markdown files
- Generate outputs from JSON when possible
Version Control Best Practices
- Commit JSON changes with descriptive messages
- Tag major versions (e.g.,
resume-v2.0) - Keep old versions in git history
Content Guidelines
- Highlights: Action verb + impact (quantify when possible)
- Domains: Keep list manageable (4-6 categories)
- Tags: Specific technologies/methodologies
- Skills: Group by category, avoid duplication
Future Enhancements
Ideas for extending this system:
- Python script to generate PDF resume from JSON
- Automated sync to LinkedIn
- TimelineJS export for visual timeline
- Multi-domain filtering on experience page
- “Clear filters” button
- Schema validation in CI/CD pipeline
- API endpoint to serve resume data
Questions?
This schema powers my experience page and maintains consistency across my professional presence. If you’re building something similar or have suggestions, let’s connect!
Last updated: April 8, 2026 • View raw JSON