Skip to content

Roles

A Role file in agents/ holds one Role contract, key for key, and the Worker filling it.

A Role file in agents/[team]/ is one Role, written as its contract, and the Worker filling it. It implements Roles.

  • agents/customer/
  • success-manager.mdxthe Role and its agent

Reference

MDX. Frontmatter is the Role contract, key for key, plus instructions; the body is the Worker's instructions.

KeyTypeHolds
worker{ agent } or { human }Who fills the seat; unset, its role agent
purposestringWhy the seat exists, in one sentence
responsibilitieslistIts standing duties, each one checkable
resultsMetric idsThe numbers that judge the seat
standardslistResponse times and quality bars
limitslist of { verb, amount, count, percent, period }The most it does per Verb before an Approval
mandateslist of { id, grants, definition }Verbs it calls without asking each time
autonomy{ default, byClass }Its rung, assist, supervised or full, per decision class
approvalsVerb idsVerbs that wait for the founder's yes before they run
schedulecadenceWhen it works unprompted, such as daily
channelslistWhere it answers: email, chat, sms, phone, social
aliaseslistThe founder's words for the seat, such as CFO
handsOffTo, escalatesToRole pathsWhere its work goes next, and where it goes past its Limits
instructionsprompt pathA file in prompts/ used in place of the body

A seat's Processes are not a key. Each Process file names its owner, and the Role page lists them.

Examples

Minimal

agents/customer/success-manager.mdx
---
purpose: Every resident answers before the renewal date.
---

Leaseline

agents/customer/success-manager.mdx
---
worker: { agent: Rae }
purpose: Every resident answers before the renewal date.
responsibilities:
  - Send each renewal notice at 60 days.
  - Answer residents' questions about the new terms.
  - List every resident who has not answered after a week.
results: [renewals-answered]
standards:
  - Answers a resident's question within one business day.
limits:
  - { verb: Message.create, count: 300, period: 1d }
approvals: [Lease.notify]
autonomy: { default: supervised, byClass: { high: assist } }
schedule: daily
channels: [email, sms]
escalatesTo: founding/founder
---
Write as the property manager's assistant. Never promise a rent the manager has not set.

What it builds

The StartupBuilder compiles the file and staffs the seat with Role.staff.

Good to know

  • Moving a seat from a person to an agent is a one-line edit to worker. No caller sees it.
  • Autonomy climbs per Verb on the Role's tests.