← Playbooks

Role playbook

Passport JSON

Paste into PUT /v1/agents/:id/passport.

[
  {
    "scope": "finances",
    "level": "observe",
    "resource_type": "all"
  },
  {
    "scope": "goals",
    "level": "recommend",
    "resource_type": "all"
  },
  {
    "scope": "decisions",
    "level": "observe",
    "resource_type": "all"
  },
  {
    "scope": "forecast",
    "level": "observe",
    "resource_type": "all"
  }
]

#CEO Agent: przegląd celów i decyzji we wszystkich biznesach

Cel: raz w tygodniu porównać każdy biznes z jego celami (nie „czy rośnie”, tylko „względem celu”), zaproponować brakujący cel i przejrzeć wyniki decyzji innych agentów.

Passport: granty ręczne: finances:observe@all, forecast:observe@all, goals:recommend@all, decisions:observe@all. Bez personal (nigdy nie wynika z all), bez zapisów kwotowych.

#System prompt (skopiuj)

You are the CEO Agent in Operlance with read access to all businesses (never personal). Weekly: get_daily_brief without business_id for the owner-wide view, then get_goals per business and compare current_value with target_value using gap and on_track; quote data_class. Where a business has no goal for a key metric, propose one with propose_goal (it always needs the owner's approval). Review get_decision_outcomes to see whether other agents' decisions met their expectations. You cannot record spend or change budgets.

#Sekwencja

  1. Brief dla całego Ownera (grant all).
{
 "data": {
  "date": "2026-09-18",
  "currency": "USD",
  "highlights": [
   {
    "code": "revenue_24h",
    "message": "Klima: revenue last 24h",
    "amount_minor": 148600,
    "business_id": "<business:klima>"
   },
   {
    "code": "revenue_24h",
    "message": "THARAN: revenue last 24h",
    "amount_minor": 79600,
    "business_id": "<business:tharan>"
   },
   {
    "code": "spend_24h",
    "message": "Klima: spend last 24h",
    "amount_minor": 11329,
    "business_id": "<business:klima>"
   },
   {
    "code": "spend_24h",
    "message": "THARAN: spend last 24h",
    "amount_minor": 35331,
    "business_id": "<business:tharan>"
   }
  ],
  "alerts": [
   {
    "code": "break_even_off_track.net30_negative_flat_revenue",
    "message": "Clothing: 30-day net is negative and revenue is not growing",
    "amount_minor": -166786,
    "business_id": "<business:clothing>"
   },
   {
    "code": "budget_exceeded.actual_over_budget",
    "message": "THARAN: infrastructure: actual exceeds planned amount",
…
  1. Cele THARAN (seed demo nie ma jeszcze celów).
{
 "data": [
  {
   "id": "<id-22>",
   "owner_id": "<id-23>",
   "business_id": "<business:tharan>",
   "project_id": null,
   "personal": false,
   "agent_id": null,
   "metric": "mrr",
   "comparator": "gte",
   "target_value": 2000000,
   "currency": "USD",
   "title": "MRR ≥ 20 000 USD do 2027-03-31",
   "deadline": "2027-03-31",
   "status": "active",
   "provenance": {
    "reason": null,
    "source": {
     "type": "HUMAN",
     "agent_id": null,
     "approval_id": null,
     "external_id": null,
     "integration_id": null
    },
    "confidence": 1,
    "data_class": "manual",
    "recorded_at": "2026-09-18T…Z"
   },
   "created_at": "2026-09-18T…Z",
   "updated_at": "2026-09-18T…Z",
   "progress": {
    "current_value": 2228800,
    "target_value": 2000000,
    "comparator": "gte",
    "currency": "USD",
    "gap": -228800,
    "on_track": true,
    "data_class": "real",
    "window": {
…
  1. Propozycja celu: ROAS ≥ 2 (recommend → 202).
{
 "status": "pending_approval",
 "approval_id": "<id-25>",
 "coverage": null,
 "request_id": "req_<id-26>"
}
  1. Owner zatwierdza; cel powstaje ze source AI_AGENT i approval_id.
{
 "status": 200,
 "data": {
  "id": "<id-25>",
  "owner_id": "<id-23>",
  "agent_id": "<id-27>",
  "action": "create_goal",
  "params": {
   "title": "THARAN ROAS ≥ 2",
   "metric": "roas",
   "reason": "No ROAS target for THARAN ads",
   "comparator": "gte",
   "business_id": "<business:tharan>",
   "target_value": 2,
   "idempotency_key": "pb-ceo-1"
  },
  "reason": "No ROAS target for THARAN ads",
  "amount_minor": null,
  "currency": null,
  "business_id": "<business:tharan>",
  "personal": false,
  "status": "approved",
  "decided_by": "<id-23>",
  "decided_at": "2026-09-18T…Z",
  "decision_note": "ok",
  "expires_at": "2026-09-25T…Z",
  "result_ref": {
   "id": "<id-28>",
   "type": "goal"
  },
  "idempotency_key": "pb-ceo-1",
  "created_at": "2026-09-18T…Z",
  "kind": "write"
 },
 "cancelled_conflicts": [],
 "request_id": "req_<id-29>"
}
  1. Cel z postępem liczonym z ledgera.
{
 "data": [
  {
   "id": "<id-22>",
   "owner_id": "<id-23>",
   "business_id": "<business:tharan>",
   "project_id": null,
   "personal": false,
   "agent_id": null,
   "metric": "mrr",
   "comparator": "gte",
   "target_value": 2000000,
   "currency": "USD",
   "title": "MRR ≥ 20 000 USD do 2027-03-31",
   "deadline": "2027-03-31",
   "status": "active",
   "provenance": {
    "reason": null,
    "source": {
     "type": "HUMAN",
     "agent_id": null,
     "approval_id": null,
     "external_id": null,
     "integration_id": null
    },
    "confidence": 1,
    "data_class": "manual",
    "recorded_at": "2026-09-18T…Z"
   },
   "created_at": "2026-09-18T…Z",
   "updated_at": "2026-09-18T…Z",
   "progress": {
    "current_value": 2228800,
    "target_value": 2000000,
    "comparator": "gte",
    "currency": "USD",
    "gap": -228800,
    "on_track": true,
    "data_class": "real",
    "window": {
…
  1. Co zrobiłem wczoraj i co odrzucono (własny audit trail z what_to_do).
{
 "data": {
  "agent_id": "<id-27>",
  "period": {
   "from": null,
   "to": null
  },
  "kind": "all",
  "entries": [
   {
    "id": "<id-31>",
    "at": "2026-09-18T…Z",
    "action": "create_goal",
    "outcome": "pending_approval",
    "ref": {
     "type": "approval",
     "id": "<id-25>"
    },
    "amount": null,
    "reason_given": "No ROAS target for THARAN ads",
    "request_id": "req_<id-26>"
   },
   {
    "id": "<id-32>",
    "at": "2026-09-18T…Z",
    "action": "read_agents",
    "outcome": "read",
    "ref": null,
    "amount": null,
    "reason_given": null,
    "request_id": "req_<id-33>"
   },
   {
    "id": "<id-34>",
    "at": "2026-09-18T…Z",
    "action": "read_audit",
    "outcome": "read",
    "ref": null,
    "amount": null,
    "reason_given": null,
…
  1. Wyniki decyzji agentów (puste na świeżym seedzie).
{
 "data": [],
 "coverage": {
  "coverage_pct": 0.74,
  "domains": {
   "revenue": {
    "status": "accurate",
    "sources": [
     "STRIPE_API"
    ],
    "last_sync_at": "2026-09-18T…Z"
   },
   "ad_spend": {
    "status": "accurate",
    "sources": [
     "GOOGLE_ADS_API",
     "META_API"
    ],
    "last_sync_at": "2026-09-18T…Z"
   },
   "subscriptions": {
    "status": "incomplete",
    "sources": [
     "HUMAN",
     "SYSTEM"
    ],
    "last_sync_at": null
   },
   "operating_costs": {
    "status": "mostly_covered",
    "sources": [
     "ANTHROPIC_API",
     "HUMAN",
     "OPENAI_API",
     "STRIPE_API"
    ],
    "last_sync_at": "2026-09-18T…Z"
   },
   "cash": {
    "status": "incomplete",
…

#Gdzie jest 202

Krok 3: propose_goal zawsze kończy się Approval, nawet przy goals:execute; człowiek jest ostateczną instancją dla celów. Po akceptacji (krok 4) cel ma provenance.source.type = AI_AGENT i approval_id.

#Czego agent NIE może

Personal (scope_denied mimo all), żadnych zapisów finansowych, zmiany celów bez Ownera.