SDM
SDM · live example

Tech Conference Program

A conference organizer curates a program track. Talks are first-class nodes — each linked to skills and speakers. The program is a profile; coverage checks which tracks have enough talks at the right level.

1 Ontology
→
2 Program
→
3 Coverage
→
4 Export

01 Ontology — talk nodes linked to skills, topics and speakers

A conference ontology mixes talk nodes (the program itself) with skill, topic and person (speaker) nodes. All in one graph — a talk is just another node.

ontology/talks/distributed-systems.yaml talk

Distributed Systems

Talk: "Consensus in production: Raft (Ongaro) vs Paxos (Lamport)". Level: senior. Links: skill:distributed-systems, speaker:alex-chen.

ontology/skills/platform-engineering.yaml skill

Platform Engineering

Internal developer platforms, golden paths, self-service infrastructure, DevOps culture.

ontology/topics/ml-systems.yaml topic

ML Systems

MLOps track: training, serving, monitoring, drift detection, feature stores.

ontology/people/alex-chen.yaml person

Alex Chen

Staff Engineer, ex-Google. Talks: distributed-systems, reliability-patterns. Skill: distributed-systems.

# ontology/talks/distributed-systems.yaml
id: distributed-systems
name: Consensus in production: Raft (Ongaro) vs Paxos (Lamport)
kind: talk
level: senior
links_to: [skill:distributed-systems, person:alex-chen, topic:systems-design]
talk platform-engineering-talk talk ml-serving-talk skill distributed-systems skill reliability-engineering topic systems-design person jordan-smith topic observability person sam-patel +10 more

02 Program — tech-conference · main-track · threshold 0.7

The program selects talks and topics for a track. Talk coverage is weighted by required topic depth — a thin topic means the track lacks talks that cover it.

TopicTalksDepthWeight
systems-design50.90.25
platform-eng40.80.20
ml-systems40.70.20
observability30.60.15
databases30.50.10
security20.50.10
# profiles/levels/tech-conference.yaml
profile: tech-conference  level: main-track  threshold: 0.7
requirements:
  - node: systems-design  depth: 0.9  weight: 0.25
  - node: platform-eng  depth: 0.8  weight: 0.20
  - … 4 more topics …

03 Coverage — talks checked per topic, gaps are fixed

Same fixed gap definition as the Java example — the same ontology + profile → same gaps, regardless of implementation (CLI, MCP, Obsidian).

TopicTalksDepthStatus
systems-design50.9
ok
platform-eng40.8
ok
ml-systems40.7
ok
observability30.6
ok
databases30.50 → need 0.5
ok
security20.40 → need 0.5
thin
Program gaps are visible immediately. The track is thin on security — the organizer sees it before the schedule is announced.
→ Recruit talks with difficulty ≥ 0.40 for security.

04 Export — conference-program.json

Everything derived is generated: a program package with talk abstracts, speaker profiles, and schedule — no hand-maintained spreadsheets.

{
  schemaVersion: "sdm.export.test/v1",
  profile: "tech-conference", level: "main-track", threshold: 0.7,
  talks: [ /* 21 talks · topic · speaker · level */ ],
  speakers: [ /* 15 speakers · bio · talks */ ],
  schedule: [ /* generated from talk nodes */ ]
}
21 talks 15 speakers 6 topics threshold 70% schedule generated
Same specs generate other outputs: export mermaid for a program graph, export kit for track chairs, export matrix for topic coverage.