122 lines
5.2 KiB
Plaintext
122 lines
5.2 KiB
Plaintext
# Career schema — typed artifacts for skills, work history, talks, positioning, and publication.
|
|
# All types include `linked_nodes` referencing IDs from .ontology/core.ncl.
|
|
# This creates the DAG connection between career artifacts and the ontology.
|
|
#
|
|
# Output: .ontology/career.ncl exports to JSON → Nu script generates YAML for cv_repo.
|
|
|
|
# ── Skill ────────────────────────────────────────────────────────────────────
|
|
|
|
let proficiency_tier_type = [| 'Expert, 'Advanced, 'Intermediate, 'Foundational |] in
|
|
|
|
let skill_type = {
|
|
id | String,
|
|
name | String,
|
|
tier | proficiency_tier_type,
|
|
proficiency | Number,
|
|
years | Number | default = 0,
|
|
linked_nodes | Array String | default = [],
|
|
evidence | Array String | default = [],
|
|
note | String | default = "",
|
|
} in
|
|
|
|
# ── Work Experience ───────────────────────────────────────────────────────────
|
|
|
|
let work_experience_type = {
|
|
id | String,
|
|
company | String,
|
|
company_url | String | default = "",
|
|
position | String,
|
|
date_start | String,
|
|
date_end | String | default = "present",
|
|
location | String | default = "",
|
|
description | String | default = "",
|
|
achievements | Array String | default = [],
|
|
tools | Array String | default = [],
|
|
linked_nodes | Array String | default = [],
|
|
} in
|
|
|
|
# ── Talk / Activity ───────────────────────────────────────────────────────────
|
|
|
|
let talk_status_type = [| 'Idea, 'Proposed, 'Accepted, 'Delivered, 'Archived |] in
|
|
|
|
let talk_type = {
|
|
id | String,
|
|
title | String,
|
|
event | String,
|
|
date | String | default = "",
|
|
location | String | default = "",
|
|
description | String | default = "",
|
|
slides_url | String | default = "",
|
|
video_url | String | default = "",
|
|
repository | String | default = "",
|
|
status | talk_status_type,
|
|
linked_nodes | Array String | default = [],
|
|
} in
|
|
|
|
# ── Positioning Strategy ──────────────────────────────────────────────────────
|
|
|
|
let positioning_type = {
|
|
id | String,
|
|
name | String,
|
|
core_message | String,
|
|
target | String,
|
|
linked_nodes | Array String | default = [],
|
|
note | String | default = "",
|
|
} in
|
|
|
|
# ── Company Target ─────────────────────────────────────────────────────────────
|
|
|
|
let company_status_type = [| 'Active, 'Watching, 'Inactive, 'Applied, 'Closed |] in
|
|
|
|
let company_target_type = {
|
|
id | String,
|
|
name | String,
|
|
url | String | default = "",
|
|
status | company_status_type,
|
|
fit_signals | Array String | default = [],
|
|
linked_nodes | Array String | default = [],
|
|
note | String | default = "",
|
|
} in
|
|
|
|
# ── Publication Card ──────────────────────────────────────────────────────────
|
|
# Project cards for blog grid, CV, and proposals.
|
|
# project_node references a node ID in .ontology/core.ncl.
|
|
|
|
let project_pub_status_type = [| 'Active, 'Beta, 'Maintenance, 'Archived, 'Stealth |] in
|
|
|
|
# Career overlay for a project card.
|
|
# project_node references the canonical card in the portfolio repo.
|
|
# Only career-specific fields live here — display metadata lives in portfolio/projects/{id}/card.ncl.
|
|
let publication_card_type = {
|
|
project_node | String,
|
|
featured | Bool | default = false,
|
|
sort_order | Number | default = 0,
|
|
# Optional overrides — when career context needs a different tagline than the portfolio card
|
|
tagline_override | String | default = "",
|
|
} in
|
|
|
|
# ── Root export ───────────────────────────────────────────────────────────────
|
|
|
|
{
|
|
ProficiencyTier = proficiency_tier_type,
|
|
TalkStatus = talk_status_type,
|
|
CompanyStatus = company_status_type,
|
|
ProjectPubStatus = project_pub_status_type,
|
|
|
|
Skill = skill_type,
|
|
WorkExperience = work_experience_type,
|
|
Talk = talk_type,
|
|
Positioning = positioning_type,
|
|
CompanyTarget = company_target_type,
|
|
PublicationCard = publication_card_type,
|
|
|
|
CareerConfig = {
|
|
skills | Array skill_type | default = [],
|
|
experiences | Array work_experience_type | default = [],
|
|
talks | Array talk_type | default = [],
|
|
positioning | Array positioning_type | default = [],
|
|
companies | Array company_target_type | default = [],
|
|
publications | Array publication_card_type | default = [],
|
|
},
|
|
}
|