https://github.com/ducks/jobl
TOML-based resume format with strict validation. Simple, portable, human-readable.
https://github.com/ducks/jobl
Last synced: about 2 months ago
JSON representation
TOML-based resume format with strict validation. Simple, portable, human-readable.
- Host: GitHub
- URL: https://github.com/ducks/jobl
- Owner: ducks
- Created: 2025-12-13T17:19:23.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-12-16T22:43:18.000Z (7 months ago)
- Last Synced: 2025-12-17T11:20:55.273Z (7 months ago)
- Language: Rust
- Size: 31.9 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JOBL
A TOML-encoded resume file format with strict validation.
## Format Specification
JOBL (v20251211) is a structured resume format using TOML encoding.
### File Extension
`.jobl`
### Top-Level Keys
- `jobl_version` (required): Version string in `YYYYMMDD` format
- `person` (required): Personal information table
- `skills` (optional): Skills organized by category
- `experience` (optional): Array of work experience
- `projects` (optional): Array of projects
- `education` (optional): Array of education entries
### Person Section
Required:
- `name`: Full name
Optional:
- `headline`: Professional headline
- `location`: Current location
- `email`: Contact email
- `website`: Personal website URL
- `phone`: Contact phone
- `summary`: Professional summary
### Skills Section
A table mapping category names to arrays of skill strings.
Example:
```toml
[skills]
languages = ['Rust', 'Python', 'JavaScript']
devops = ['Docker', 'Kubernetes']
```
### Experience Items
Required:
- `title`: Job title
- `company`: Company name
Optional:
- `location`: Job location
- `start`: Start date (recommend 'YYYY-MM')
- `end`: End date or 'present'
- `summary`: Role summary
- `technologies`: Array of technologies used
- `highlights`: Array of achievement highlights
### Project Items
Required:
- `name`: Project name
Optional:
- `url`: Project URL
- `summary`: Project description
- `role`: Your role
- `start`: Start date
- `end`: End date
- `technologies`: Array of technologies
### Education Items
Required:
- `institution`: School or institution name
- `degree`: Degree or certification
Optional:
- `location`: Institution location
- `start`: Start date
- `end`: End date
- `details`: Array of additional details
## Usage
```rust
use jobl::{parse_str, parse_file};
// Parse from string
let doc = parse_str(jobl_content)?;
// Parse from file
let doc = parse_file("resume.jobl")?;
// Access data
println!("Name: {}", doc.person.name);
```
## Validation
The parser performs strict validation:
- Version must be '20251211'
- Unknown top-level keys are errors
- Unknown fields in sections are errors
- Type mismatches are errors
- Multiple errors are collected and reported
Errors include path context:
- `person.name`: Missing required field
- `experience[0].unknown`: Unknown field in first experience item
- `skills.languages`: Invalid type
## License
MIT