Skip to main content

Custom Ontology

Custom Ontology

Extend the capability graph with your organization's unique skills and domains.

While provides a comprehensive default skill ontology, every organization has specialized capabilities. This pattern shows you how to define custom skills, domains, and taxonomies that reflect your unique business needs.

When to Use This

  • ✅ You have organization-specific skills not in the default ontology
  • ✅ You need custom domains (e.g., "quantum_computing", "maritime_law")
  • ✅ You want to define skill hierarchies and relationships
  • ✅ You need to map previous HR systems to

Architecture

┌─────────────────────────────────────────────────────┐
│         Your Organization's Skill Model             │
│   - Custom domains                                   │
│   - Specialized skills                               │
│   - Proficiency definitions                          │
└────────────────────┬────────────────────────────────┘
                     │
                     ▼
          ┌──────────────────────┐
          │   Ontology Registry  │
          │   (create custom     │
          │    skills & domains) │
          └──────────┬───────────┘
                     │
                     ▼
      ┌──────────────────────────────┐
      │   Capability Graph Engine    │
      │   - Merges with base ontology│
      │   - Validates relationships  │
      │   - Indexes custom skills    │
      └──────────┬───────────────────┘
                 │
                 ▼
    ┌────────────────────────────────┐
    │   Unified Skill Taxonomy       │
    │   - Base + Custom Skills       │
    │   - Organization namespaced    │
    │   - Searchable & queryable     │
    └────────────────────────────────┘

Prerequisites

  • API key
  • Organization Passport ID
  • Admin role (ontology management permission)
  • Understanding of your organization's skill model

Implementation

Define a Custom Skill

Create a new skill specific to your organization:

>
SDK:

Define a Custom Domain

Create a new domain (category) for grouping skills:

>
SDK:

Define Skill Relationships

Create hierarchies and relationships between skills:

>
SDK:

Use Cases

Industry-Specific Skills

Define skills unique to your industry (e.g., "crane_operation_offshore" for maritime)

Previous System Integration

Map your existing HR/talent systems to <HumanBrand /> ontology

Compliance Requirements

Define skills with regulatory or certification requirements

Skill Hierarchies

Model prerequisite relationships and learning pathways

Best Practices

Naming Conventions

  • Use snake_case for skill IDs (e.g., widget_assembly_advanced)
  • Include organization context for truly unique skills
  • Avoid abbreviations unless industry-standard
  • Be specific rather than generic (e.g., "react_frontend" not "programming")

Skill Definitions

  • Define clear levels with actionable descriptions
  • Document prerequisites for complex skills
  • Include metadata for certifications, safety requirements, etc.
  • Review regularly - skills evolve, ontologies should too

Maintenance

  • Version your ontology - track changes over time
  • Deprecate carefully - provide migration paths for old skills
  • Test queries after ontology changes
  • Document custom skills for future team members

Security Considerations

DO

Restrict ontology management to admin roles only

Log all ontology changes for audit trails

Validate skill names against injection attacks

Review custom skills before activating them

DON'T

Allow skill deletion if capabilities reference it

Create overly broad skills that leak information

Bypass skill validation rules

Share organization-specific ontologies outside the org

Common Patterns

Pattern: Import from HR System

async function importSkillsFromHR(csvFile: string) {
  const skills = parseCSV(csvFile); // { name, description, level }
  
  for (const skill of skills) {
    // Create in HUMΛN ontology
    const humanSkill = await client.ontology.createSkill({
      organizationId: 'org_acme',
      skill: toSnakeCase(skill.name),
      displayName: skill.name,
      description: skill.description,
      domain: inferDomain(skill),
      levels: standardizeLevels(skill.level),
    });

    // Create equivalence mapping
    await client.ontology.createEquivalence({
      organizationId: 'org_acme',
      humanSkill: humanSkill.skill,
      externalSystem: 'hr_system',
      externalSkillId: skill.id,
      bidirectional: true,
    });
  }
}

Pattern: Skill Evolution

async function evolveSkill(oldSkill: string, newSkill: string) {
  // Create new skill
  const updated = await client.ontology.createSkill({
    organizationId: 'org_acme',
    skill: newSkill,
    displayName: `${oldSkill} (Updated)`,
    // ... updated definition
  });

  // Mark relationship
  await client.ontology.createRelationship({
    organizationId: 'org_acme',
    fromSkill: oldSkill,
    toSkill: newSkill,
    relationship: 'supersedes',
    strength: 1.0,
  });

  // Deprecate old skill (don't delete - preserves history)
  await client.ontology.updateSkill({
    organizationId: 'org_acme',
    skill: oldSkill,
    deprecated: true,
    deprecationMessage: `Superseded by ${newSkill}`,
  });
}

See Also

← All patterns