#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
- 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",
…
- 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
},
…
- 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"
},
…
- 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": {
…
- 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.