Skip to content

Spec: yodel.purpose — semantic category for interaction intent (separate from device.type) #10

Description

@rolpro

Motivation

device.type describes hardware (ios, android, car). But a walkie-talkie runs on iOS — the platform says nothing about the interaction mode. Voice-only clients need different responses than display clients, regardless of OS.

Proposal: yodel.purpose + yodel.purpose_override

Two new optional fields in the Yodel block:

purpose — selects the base profile

{
  "yodel": {
    "purpose": "walkie-talkie",
    "device": {
      "type": "ios"
    }
  }
}

The gateway uses purpose to load a base system prompt from the prompts repository (openyodel/prompts). It describes the fundamental interaction mode.

purpose_override — refines the profile (optional)

{
  "yodel": {
    "purpose": "walkie-talkie",
    "purpose_override": "Sprich wie ein Offizier. Kurze Befehle."
  }
}

Appended to the base prompt. Allows the client (or end user) to customize behavior without replacing the whole system prompt. Free-form string, not an enum — supports combinations and nuance that a tag system can't capture.

Gateway behavior

  1. Load base prompt from openyodel/prompts using purpose as key
  2. If purpose_override is set → append it
  3. If purpose is absent → neutral default
  4. If purpose_override is set without purpose → append to neutral default

Proposed purpose values

purpose Typical Device Response Style
walkie-talkie PTT handset, radio app Spoken, no markdown, quick exchanges
dashboard Car display Glanceable, max 1 sentence
big-screen Stadium LED, billboard Large, high contrast
smartwatch Watch Ultra-short, notification style
tv Television, Apple TV Readable from 3m
terminal CLI, desktop agent Markdown, code, full scope
chat Messenger, chat app Hybrid: short answers, markdown ok
dictation Voice recorder Formal, punctuated, full sentences
kiosk Info terminal Structured, button-friendly
speaker Smart speaker Spoken, longer than walkie-talkie
headset Headphones, earbuds Spoken, intimate, short

Distinction from device.type

  • device.type = hardware platform (audio codecs, capabilities)
  • purpose = why is the user talking to the agent?
  • purpose_override = how should the agent adapt?
  • All three complement each other

Open questions

  • Should purpose be required or optional? (Proposal: optional)
  • Valid values: open registry or spec-defined enum? (Proposal: spec-defined with extensibility path)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions