CSuite CEO Agent - Documentação
📋 Índice
Visão Geral
O CSuite CEO Agent é um agente executivo de alto nível que gera brief diário para o CEO, protegendo o attention budget e escalando apenas riscos irreversíveis ou sistêmicos.
Propósito
- Daily executive brief: O que mudou, por que importa, riscos, opções, recomendações
- Proteção de attention budget: Escala apenas o que é irreversível ou sistêmico
- Integração com ecossistema: Policy Engine, Memory API, Executive Dashboard
- Sugestões de memória: Não muda políticas diretamente, apenas sugere atualizações
Características Principais
- ✅ Integração com Policy Engine (policy gate)
- ✅ Consulta Memory API (riscos, precedentes, violações)
- ✅ Busca sinais do Executive Dashboard (KPIs, vendedores, estoque)
- ✅ Inteligência de Mercado: Dashboard macro do BCB (SELIC, IPCA, Câmbio)
- ✅ Árbitro de Conflitos: Resolução automática de impasses entre agentes com o CEO como instância final de escalonamento.
- ✅ Geração de brief via LLM seguindo template estruturado
- ✅ Writeback de memória em modo "suggest_only"
- ✅ Suporte a múltiplos runtimes (n8n, LangGraph, FastAPI)
Arquitetura
Fluxo de Decisão
1. Policy Gate → Valida execução (ceo.daily_brief)
↓
2. Collect Signals → Busca dados em paralelo
├─ KPIs (Executive Dashboard)
├─ Inbox (Campanhas/Bundles)
├─ Daily Focus
├─ Rupture/Low-turn
└─ **Market Intelligence** (BCB Macro Indicators)
↓
3. Load Memory → Consulta Memory API
├─ Riscos recentes
├─ Precedentes relevantes
├─ Violações recorrentes
├─ Sinais de drift
└─ **Resolved Conflicts** (Arbitration Results)
↓
4. Load Cases → Consulta Policy Guardian
└─ Casos pendentes
↓
5. Synthesize → Gera brief via LLM
├─ Context (o que mudou)
├─ Policies Impacted
├─ Risks
├─ Options
├─ Recommendation (max 3)
└─ Memory Updates (suggestions)
↓
6. Emit → Publica via webhook
└─ Slack/Email/Endpoint interno
Integrações
- Policy Engine: Validação de execução (
ceo.daily_brief) - Memory API: Consulta memória institucional
- Executive Dashboard: Sinais operacionais (KPIs, vendedores, estoque)
- Policy Guardian: Casos pendentes
- Market Intelligence Service: Dados macroeconômicos e competitivos
- Conflict Arbiter: Delegado pelo CEO para resolver impasses de peso inferior automaticamente.
- LLM: Geração de brief estruturado
Configuração
Arquivo YAML (Fonte Canônica)
Localização: agents/ceo/ceo_agent.yaml
Este arquivo é a fonte canônica do agente, contendo:
- Registry/Config para FastAPI
- Contratos de input/output (JSON Schema)
- Dependências de serviços (URLs, endpoints)
- Policy gate (decision_id, fallback)
- Prompts (system, user_template)
- Runtime (model, timeouts, retries)
Variáveis de Ambiente
# URLs dos serviços CSuite
CSUITE_POLICY_ENGINE_URL=https://csuite.internut.com.br/executive
CSUITE_EXECUTIVE_URL=https://csuite.internut.com.br/executive
CSUITE_CONTEXT_URL=https://csuite.internut.com.br
# LLM
LLM_PROVIDER=openai
LLM_MODEL=gpt-4o-mini
# Webhook
CEO_BRIEF_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
Workflows
1. n8n Workflow
Arquivo: workflows/n8n/ceo_agent_daily_brief.json
Descrição: Workflow automatizado que executa o CEO Agent diariamente.
Fluxo:
1. Cron Daily (08:10) → Dispara workflow
2. Policy Gate → Valida execução
3. If Not DENY → Continua se permitido
4. Fetch Signals (paralelo):
- Fetch KPIs
- Fetch Inbox
- Memory Query
- Open Cases
5. Merge Signals → Consolida dados
6. LLM - CEO Brief → Gera brief
7. Publish Brief → Publica via webhook
Importação:
1. Acesse n8n
2. Workflows → Import from File
3. Selecione ceo_agent_daily_brief.json
4. Configure variáveis de ambiente
5. Ative o workflow
Documentação: workflows/n8n/README.md
2. LangGraph State Machine
Arquivo: workflows/langgraph/ceo_agent_state_machine.json
Descrição: State machine com loop formalizado.
Nodes:
- collect_signals - Busca sinais em paralelo
- load_memory - Consulta Memory API
- load_cases - Busca casos pendentes
- policy_gate - Valida execução
- synthesize - Gera brief via LLM
- emit - Publica resultado
Edges:
- collect_signals → load_memory
- load_memory → load_cases
- load_cases → policy_gate
- policy_gate → synthesize (se não DENY)
- synthesize → emit
Documentação: workflows/langgraph/README.md
Integração
Policy Gate
O CEO Agent passa por um policy gate antes de executar:
- Decision ID:
ceo.daily_brief - Fallback:
ESCALATEse Policy Engine indisponível - Validação: Verifica se pode executar/publicar output
Exemplo de política (YAML):
ceo.daily_brief:
rule: |
ALLOW if:
- org_id is valid
- time_window_days <= 30
ESCALATE if:
- Policy Engine unavailable
DENY if:
- org_id is invalid
- time_window_days > 30
Memory API
Consulta memória institucional para:
- Riscos recentes:
query: "CEO daily brief: recent risks" - Precedentes:
query: "precedents, recurring violations" - Drift signals:
query: "drift signals"
Endpoint: POST /v1/memory/query
Executive Dashboard
Busca sinais operacionais:
- KPIs:
/api/executive/dashboard/kpis - Sellers:
/api/executive/dashboard/sellers - Rupture:
/api/executive/dashboard/rupture - Low-turn:
/api/executive/dashboard/lowturn - Inbox:
/api/executive/dashboard/inbox - Daily Focus:
/api/executive/dashboard/daily-focus
Policy Guardian
Consulta casos pendentes:
- Endpoint:
GET /v1/cases?status=PENDING&limit=10 - Filtro: Apenas casos que requerem atenção executiva
Output Schema
Estrutura do Brief
{
"context": "Resumo executivo do que mudou nos últimos 7 dias",
"policies_impacted": [
"SALES_DISCOUNT_MAX",
"PRICE_MARGIN_FLOOR"
],
"risks": [
{
"severity": "high",
"description": "Margem caindo 15% em 7 dias",
"irreversible": false,
"policy_ref": "PRICE_MARGIN_FLOOR"
}
],
"options": [
{
"option": "Ajustar política de desconto máximo",
"pros": ["Protege margem", "Alinha com estratégia"],
"cons": ["Pode reduzir conversão"],
"impact": "high"
}
],
"recommendation": {
"action": "Revisar política PRICE_MARGIN_FLOOR",
"rationale": "Margem em queda requer ajuste de política",
"urgency": "high",
"next_steps": [
"Analisar histórico de margem",
"Consultar Policy Guardian",
"Propor mudança via Policy Radar"
]
},
"memory_updates": [
{
"type": "policy_question",
"content": "PRICE_MARGIN_FLOOR está adequado para mercado atual?",
"tags": ["CEO", "DAILY_BRIEF", "PRICING"]
}
],
"should_escalate": false,
"escalation_reason": ""
}
Campos Obrigatórios
context: String com resumo executivopolicies_impacted: Array de policy_refsrisks: Array de objetos de riscooptions: Array de opções reaisrecommendation: Objeto com recomendação principalmemory_updates: Array de sugestões de memória
Campos Opcionais
should_escalate: Boolean (default: false)escalation_reason: String (quando should_escalate = true)
Uso
Via n8n (Recomendado)
-
Importar workflow:
bash # No n8n, importe: workflows/n8n/ceo_agent_daily_brief.json -
Configurar variáveis:
bash # No n8n, configure: CSUITE_POLICY_ENGINE_URL=https://csuite.internut.com.br/executive CSUITE_EXECUTIVE_URL=https://csuite.internut.com.br/executive CSUITE_CONTEXT_URL=https://csuite.internut.com.br LLM_MODEL=gpt-4o-mini CEO_BRIEF_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL -
Ativar workflow:
- O workflow dispara automaticamente às 08:10 diariamente
- Ou execute manualmente para teste
Via LangGraph
- Carregar state machine:
```python
import json
from langgraph.graph import StateGraph
with open('workflows/langgraph/ceo_agent_state_machine.json') as f:
graph_config = json.load(f)
```
- Configurar runtime:
python # Configurar variáveis de ambiente # Executar grafo result = graph.invoke({ "org_id": 0, "as_of_date": "2025-01-03", "time_window_days": 7 })
Via API (Futuro)
Quando implementado no csuite-executive:
curl -X POST https://csuite.internut.com.br/executive/api/agents/CEO_AGENT/run \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"org_id": 0,
"as_of_date": "2025-01-03",
"time_window_days": 7
}'
Troubleshooting
Policy Gate DENY
Problema: Workflow para no "If Not DENY"
Solução:
1. Verificar política ceo.daily_brief no Policy Engine
2. Verificar se org_id é válido
3. Verificar se time_window_days <= 30
Timeout em HTTP Requests
Problema: Timeout ao buscar sinais
Solução:
1. Aumentar timeout nos nodes HTTP (padrão: 6000ms)
2. Verificar conectividade com serviços CSuite
3. Verificar se serviços estão respondendo
LLM Error
Problema: Erro ao gerar brief
Solução:
1. Verificar credenciais do LLM (OpenAI API key)
2. Verificar se LLM_MODEL está correto
3. Verificar se há créditos/quota disponível
Webhook Fail
Problema: Brief não é publicado
Solução:
1. Verificar URL do webhook
2. Verificar formato do payload
3. Verificar autenticação (se necessário)
Memory Query Vazio
Problema: Memory API retorna vazio
Solução:
1. Verificar se há dados no csuite_memory
2. Ajustar query se necessário
3. Verificar conectividade com Memory API
Próximos Passos
Implementação Futura
- [ ] FastAPI Endpoint: Implementar
/api/agents/CEO_AGENT/runno csuite-executive - [ ] Agent Registry: Registrar CEO Agent em
csuite_agents.agent_registry - [ ] Writeback de Memória: Implementar writeback em modo "suggest_only"
- [ ] Dashboard: Criar dashboard de execuções do CEO Agent
- [ ] Testes: Adicionar testes unitários e de integração
- [ ] Métricas: Adicionar métricas de performance e qualidade do brief
Melhorias Opcionais
- [ ] Multi-tenant: Suporte a múltiplos org_id
- [ ] Customização: Permitir customização de prompts por organização
- [ ] Histórico: Armazenar histórico de briefs
- [ ] Comparação: Comparar briefs ao longo do tempo
- [ ] Alertas: Alertas quando should_escalate = true
Referências
- Configuração YAML:
agents/ceo/ceo_agent.yaml - n8n Workflow:
workflows/n8n/ceo_agent_daily_brief.json - LangGraph State Machine:
workflows/langgraph/ceo_agent_state_machine.json - Policy Engine:
csuite-executive(rotas/v1/policy/*) - Memory API:
csuite-executive(rotas/v1/memory/*) - Executive Dashboard:
csuite-context(rotas/api/executive/dashboard/*)
Última atualização: 2026-01-10
Versão: 1.1.0
Status: Operacional com Inteligência de Mercado e Arbitragem