← Playbooks

Role playbook

#Finance Observer: poranny brief i prognoza (THARAN)

Cel: codzienny raport dla Ownera bez żadnego zapisu: co się zmieniło przez 24 h, alerty, nadchodzące koszty, prognoza 30 dni i cele. Agent tylko czyta.

Passport: szablon finance: finances, forecast, subscriptions, goals na poziomie observe@business. Żadnych zapisów.

#System prompt (skopiuj)

You are the Finance Observer for THARAN in Operlance. Each morning call get_daily_brief(business_id), then get_business_summary and get_cashflow_forecast(horizon 30). Write a short brief for the owner: revenue and spend in the last 24 hours, alerts with amounts, upcoming costs for 7 days, forecast status with reasons, and each goal versus its target. Always quote coverage and data_class; label estimates as estimates. You cannot write anything, so never promise actions; if a number is missing, say what integration or data would fix it and suggest request_data.

#Sekwencja

  1. Brief poranny.
{
 "data": {
  "date": "2026-09-18",
  "currency": "USD",
  "highlights": [
   {
    "code": "revenue_24h",
    "message": "THARAN: revenue last 24h",
    "amount_minor": 79600,
    "business_id": "<business:tharan>"
   },
   {
    "code": "spend_24h",
    "message": "THARAN: spend last 24h",
    "amount_minor": 35331,
    "business_id": "<business:tharan>"
   }
  ],
  "alerts": [
   {
    "code": "budget_exceeded.actual_over_budget",
    "message": "THARAN: infrastructure: actual exceeds planned amount",
    "amount_minor": 193,
    "business_id": "<business:tharan>"
   },
   {
    "code": "incomplete_data.coverage_below_80",
    "message": "THARAN: Data coverage is 74%",
    "business_id": "<business:tharan>"
   }
  ],
  "upcoming": [
   {
    "kind": "subscription_renewal",
    "date": "2026-09-21",
    "label": "Hetzner Cloud",
    "amount_minor": 6253
   },
   {
    "kind": "subscription_renewal",
…
  1. Podsumowanie miesiąca (planned / reserved / actual osobno).
{
 "data": {
  "business_id": "<business:tharan>",
  "from": "2026-09-01",
  "to": "2026-09-18",
  "currency": "USD",
  "revenue_minor": 1412900,
  "costs": {
   "planned_minor": 630000,
   "reserved_minor": 500000,
   "actual_minor": 595884,
   "variance_minor": -34116
  },
  "result_minor": 817016,
  "taxes_minor": 0,
  "monthly_burn_minor": 997430,
  "cash_allocated_minor": 517280,
  "runway_days": 114,
  "by_category": [
   {
    "category": "ads",
    "planned_minor": 630000,
    "reserved_minor": 500000,
    "actual_minor": 391820,
    "variance_minor": -238180
   },
   {
    "category": "agent_runtime",
    "planned_minor": 0,
    "reserved_minor": 0,
    "actual_minor": 147856,
    "variance_minor": 147856
   },
   {
    "category": "fees",
    "planned_minor": 0,
    "reserved_minor": 0,
    "actual_minor": 43704,
    "variance_minor": 43704
   },
…
  1. Prognoza 30 dni (bez punktów dziennych, żeby oszczędzać tokeny).
{
 "data": {
  "currency": "USD",
  "from": "2026-09-18",
  "to": "2026-10-18",
  "horizon_days": 30,
  "opening_cash_minor": 3800000,
  "cash_as_of": "2026-09-18T…Z",
  "projected_in_minor": 2288676,
  "projected_out_minor": 625903,
  "net_minor": 1662773,
  "closing_cash_minor": 5462773,
  "min_cash_minor": 3778671,
  "revenue_trend_factor": 1.0088,
  "runway_days": null,
  "components": [
   {
    "key": "baseline_other",
    "direction": "out",
    "amount_minor": 316697,
    "data_class": "estimated"
   },
   {
    "key": "planned_expenses",
    "direction": "out",
    "amount_minor": 7535,
    "data_class": "estimated"
   },
   {
    "key": "renewals",
    "direction": "out",
    "amount_minor": 24391,
    "data_class": "estimated"
   },
   {
    "key": "reservations",
    "direction": "out",
    "amount_minor": 277280,
    "data_class": "planned"
   },
…
  1. Cele biznesu z postępem.
{
 "data": [
  {
   "id": "<id-25>",
   "owner_id": "<id-26>",
   "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. Próba zapisu kończy się odmową (observe).
{
 "error": {
  "code": "scope_denied",
  "message": "no active grant for planned_expenses on business:<business:tharan>",
  "what_to_do": "You have no grant for this scope/resource. Call request_permission({scope, level, resource, reason}), the owner approves in the Approval Center, or work within the businesses listed by get_onboarding.",
  "request_id": "req_<id-31>"
 }
}

#Gdzie jest 202

Nigdzie: ten agent nie ma prawa do żadnego zapisu, więc nie tworzy Approvals. Jeśli potrzebuje dostępu do innego biznesu, używa request_permission (202), a Owner decyduje.

#Czego agent NIE może

Każdy write: scope_denied z what_to_do wskazującym request_permission. Nie widzi personal ani innych biznesów.