# mdjibril/national-occupational-standard-framework architecture

> Architecture diagram of the GitHub repository mdjibril/national-occupational-standard-framework, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mdjibril/national-occupational-standard-framework
- Repository: https://github.com/mdjibril/national-occupational-standard-framework

## Overview

This is a command-line data-conversion project, not a hosted application: users supply NBTE NOS PDFs, the converter extracts structured trade, unit, learning-outcome, and performance-criteria data, and outputs level-specific JSON. Users can then run a separate validator over a JSON file or directory. The README documents the dataset’s five-level organization and intended use in skills platforms and assessment tools. Source excerpts show the converter’s parsing and level-splitting responsibilities and the validator’s checks; unsampled implementation details are represented only where the README supports them.

Main entry points: [`extracted_json`](https://github.com/mdjibril/national-occupational-standard-framework/tree/main/extracted_json) (Level JSON files), [`implement-tojson.py`](https://github.com/mdjibril/national-occupational-standard-framework/blob/main/implement-tojson.py) (PDF parser), [`validate.py`](https://github.com/mdjibril/national-occupational-standard-framework/blob/main/validate.py) (JSON validator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_conversion["PDF conversion"]
  node_parser["PDF parser"]
  node_levelsplit["Level splitter"]
end

subgraph group_validation["JSON validation"]
  node_validator["JSON validator<br/>[validate.py]"]
end

subgraph group_dataset["NOS dataset"]
  node_jsonfiles[("Level JSON files")]
end

node_user(("NOS maintainer"))
node_pdfs["NOS PDFs"]
node_consumer(("Skills platforms"))

node_user -->|"supplies"| node_pdfs
node_pdfs -->|"parsed by"| node_parser
node_parser -->|"detects levels"| node_levelsplit
node_levelsplit -->|"writes JSON"| node_jsonfiles
node_user -->|"runs validation"| node_validator
node_jsonfiles -->|"reads JSON"| node_validator
node_jsonfiles -->|"provides structured data"| node_consumer

click node_parser "https://github.com/mdjibril/national-occupational-standard-framework/blob/main/implement-tojson.py"
click node_levelsplit "https://github.com/mdjibril/national-occupational-standard-framework/blob/main/implement-tojson.py"
click node_jsonfiles "https://github.com/mdjibril/national-occupational-standard-framework/tree/main/extracted_json"
click node_validator "https://github.com/mdjibril/national-occupational-standard-framework/blob/main/validate.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_parser,node_levelsplit toneBlue
class node_validator toneAmber
class node_jsonfiles toneMint
class node_user,node_pdfs,node_consumer toneIndigo
```

## Components

### PDF conversion

- [PDF parser](https://github.com/mdjibril/national-occupational-standard-framework/blob/main/implement-tojson.py): `implement-tojson.py`
- [Level splitter](https://github.com/mdjibril/national-occupational-standard-framework/blob/main/implement-tojson.py): `implement-tojson.py`

### JSON validation

- [JSON validator](https://github.com/mdjibril/national-occupational-standard-framework/blob/main/validate.py): `validate.py`

### NOS dataset

- [Level JSON files](https://github.com/mdjibril/national-occupational-standard-framework/tree/main/extracted_json): `extracted_json`

### Other components

- **NOS maintainer**
- **NOS PDFs**
- **Skills platforms**

## Connections

- NOS maintainer → NOS PDFs: supplies (evidence: `README.md`)
- NOS PDFs → PDF parser: parsed by (evidence: `README.md`)
- PDF parser → Level splitter: detects levels (evidence: `implement-tojson.py`)
- Level splitter → Level JSON files: writes JSON (evidence: `implement-tojson.py`)
- NOS maintainer → JSON validator: runs validation (evidence: `README.md`)
- Level JSON files → JSON validator: reads JSON (evidence: `README.md`)
- Level JSON files → Skills platforms: provides structured data (evidence: `README.md`)
