1. Propósito e Escopo
Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para o Fluxo de Agentes "Personalização de Ofertas de Retenção", uma solução de automação projetada para analisar o perfil de clientes propensos a cancelar e personalizar ofertas de retenção com base em histórico de uso e preferências. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.
O objetivo principal é identificar clientes com risco de cancelamento e criar ofertas personalizadas que sejam relevantes e eficazes para retenção, automatizando o envio no momento certo.
2. Contexto e Problema
Cenário Atual
As empresas enfrentam desafios significativos em manter clientes que apresentam sinais de cancelamento iminente. Identificar esses clientes e engajá-los com ofertas relevantes pode reduzir o churn e aumentar a retenção. Atualmente, muitos negócios enfrentam dificuldades em:
- Identificar clientes propensos a cancelar com base em seu histórico de uso e comportamento.
- Criar ofertas de retenção que sejam personalizadas e relevantes para cada cliente.
Sem uma abordagem automatizada e baseada em dados, o processo de retenção pode ser ineficaz e demorado, resultando em perda de receita e aumento dos custos de aquisição de novos clientes.
Problemas Identificados
- Identificação Precisa: A dificuldade de prever com precisão quais clientes estão em risco de cancelar.
- Personalização: A necessidade de criar ofertas que realmente ressoem com as necessidades e preferências individuais dos clientes.
- Oportunidade de Tempo: O desafio de enviar ofertas no momento certo para maximizar a eficácia da retenção.
- Automação: A falta de um sistema automatizado para gerenciar o envio de ofertas personalizadas.
3. Impactos Esperados
A implementação deste fluxo de automação visa alcançar os seguintes resultados:
- Aumento da Retenção: Reduzir a taxa de churn em pelo menos 20% ao ano.
- Personalização Eficaz: Ofertas mais relevantes que atendem às necessidades específicas dos clientes.
- Automação do Processo: Redução do tempo e esforço humano necessário para gerenciar campanhas de retenção.
- Melhoria na Satisfação do Cliente: Maior satisfação e lealdade dos clientes devido a ofertas que realmente importam para eles.
4. Visão Geral da Solução
O agente de IA para personalização de ofertas de retenção analisa o perfil de clientes propensos a cancelar, utilizando dados de uso e preferências para criar e enviar ofertas personalizadas no momento certo. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que este agente atue como um assistente útil e autônomo na retenção de clientes.
A solução consiste em um fluxo de automação composto por diversos agentes de IA. O processo inicia com a preparação dos dados de uso e perfil do cliente e termina com o envio automatizado de ofertas de retenção personalizadas.
A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.
| Agentes | Função Principal |
|---|---|
Agente de Preparação de Dados de Uso e Perfil para Predição de Churn (RF 1)
| Consolidar, limpar e transformar dados de clientes para predição de churn. |
Agente de Execução de Chamada à API de Predição de Churn (RF 2)
| Realizar chamada à API para obter probabilidades de cancelamento por cliente. |
Agente de Classificação de Risco de Churn (RF 3)
| Transformar probabilidades de churn em categorias de risco e sinalizadores de alta propensão. |
Agente de Definição de Ofertas Personalizadas e Momento de Envio (RF 4)
| Definir a melhor oferta de retenção, mensagem, canal e timing por cliente com risco alto. |
5. Protótipos
Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que o cliente receberá. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Preparação de Dados de Uso e Perfil para Predição de Churn
1.1 Tarefa do Agente
Consolidar, limpar e transformar os dados de clientes em um payload padronizado de features para predição de propensão ao cancelamento.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo dados históricos de clientes contendo: uso de produto/serviço, engajamento, transações, tickets de suporte, dados cadastrais e preferências. # 2. Objetivo Consolidar, limpar e transformar esses dados em um payload padronizado de features para predição de propensão ao cancelamento. # 3. Regras que você deve seguir para gerar sua resposta - Regra 1: Normalização de identificadores e datas. Converta customer_id para string sem espaços; remova separadores não numéricos exceto '-' e '_'. Converta todas as datas de entrada para ISO 8601 (UTC) e crie campos derivados: antiguidade_dias = hoje - data_inicio_conta; dias_desde_ultimo_uso = hoje - ultimo_evento_de_uso. - Regra 2: Janelas temporais. Agregue métricas em janelas de 7, 30 e 90 dias; defina janela_dias = 90 como padrão do payload. Inclua métricas comparativas: delta_uso_30v90 = (uso_30d - uso_90d/3) / (uso_90d/3) limitado ao intervalo [-1, 1]. - Regra 3: Tratamento de ausências. Para contagens, impute 0; para valores contínuos (ex.: valor_mensal_medio), impute mediana por plano. Para cada coluna imputada, crie flag has_missing_=true/false e um array imputations_applied listando os campos imputados no registro. - Regra 4: Outliers. Aplique limite por métrica contínua usando p1/p99 calculados no conjunto; valores abaixo de p1 -> p1 e acima de p99 -> p99. Registre winsorized_fields como lista quando aplicado. - Regra 5: Codificação de categorias. Preserve valor bruto em raw_plano e normalize plano para um conjunto fechado {Basic, Standard, Premium, Enterprise, Outro}. Valores não mapeados -> "Outro". Para região/dispositivo (se existirem), crie campos region_norm e device_norm com mesmas regras. - Regra 6: Sinais de suporte. Agregue tickets_ult_7d, tickets_ult_30d, tempo_medio_resolucao_h (na janela base) e sentimento_suporte no intervalo [-1,1] calculado como média dos escores de tickets do período. Se não houver tickets, sentimento_suporte = 0 e tickets_* = 0. - Regra 7: Sinais de engajamento. Calcule aberturas e cliques por janela (email_aberturas_7d/30d/90d, email_cliques_7d/30d/90d), taxa_clique_sobre_abertura = cliques/aberturas (0 quando aberturas=0), dias_ativos = número de dias com ao menos um evento de uso na janela base. - Regra 8: Integridade e reprodutibilidade. Rejeite linhas sem customer_id. Inclua schema_version, generated_at (UTC) e ordene features por customer_id ascendente. Inclua data_scarce=true quando total de eventos de uso na janela base < 3. - Regra 9: Preferências e consentimentos. Construa objeto preferencias com chaves: canal (array ordenado por preferência), horarios_preferidos (array de faixas HH-HH), categorias_interesse (array). Se ausente, defina canal=["email"], horarios_preferidos=["18-21"]. - Regra 10: Materialize padrões de risco em features explícitas: queda_uso_percent_30v90 (percentual), aumento_tickets_30v90 (diferença absoluta), reducao_aberturas_30v90 (percentual). Limite cada métrica no intervalo [-1,1]. # 4. Exemplo de Output que você deve produzir { "schema_version": "1.0", "generated_at": "2025-11-30T11:21:00Z", "features": [ { "customer_id": "string", "janela_dias": 90, "freq_uso": 23, "dias_desde_ultimo_uso": 14, "tickets_ult_30d": 2, "sentimento_suporte": -0.4, "n_cancelamentos_historicos": 0, "valor_mensal_medio": 129.90, "engajamento_email_aberturas": 4, "engajamento_email_cliques": 1, "plano": "Premium", "antiguidade_dias": 420, "preferencias": {"canal": ["email","sms"], "horarios_preferidos": ["18-21"], "categorias_interesse": ["migracao_plano","desconto"]} } ] }
1.3 Configurações do Agente
1.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de dados históricos de clientes via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados para o agente diretamente por upload dos arquivos na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é um arquivo de dados, que pode ser em formato CSV ou JSON, contendo informações detalhadas dos clientes.
-
Formatos Suportados: Esse agente deve ser capaz de receber dados nos formatos:
.csv,.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de dados com até 100.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um arquivo no formato JSON contendo as features preparadas para predição de churn. A estrutura deve incluir a versão do schema, a data de geração e as features para cada cliente.
-
Exemplo de Estrutura de Output:
{ "schema_version": "1.0", "generated_at": "2025-11-30T11:21:00Z", "features": [ { "customer_id": "string", "janela_dias": 90, "freq_uso": 23, "dias_desde_ultimo_uso": 14, "tickets_ult_30d": 2, "sentimento_suporte": -0.4, "n_cancelamentos_historicos": 0, "valor_mensal_medio": 129.90, "engajamento_email_aberturas": 4, "engajamento_email_cliques": 1, "plano": "Premium", "antiguidade_dias": 420, "preferencias": {"canal": ["email","sms"], "horarios_preferidos": ["18-21"], "categorias_interesse": ["migracao_plano","desconto"]} } ] } - Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 5.000 caracteres.
1.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
1.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Utiliza lógica interna para cálculo de métricas derivadas.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
1.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Execução de Chamada à API de Predição de Churn (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Chamada à API de Predição de Churn (RF 2).
RF 2. Agente de Execução de Chamada à API de Predição de Churn
2.1 Tarefa do Agente
Realizar chamada à API do Sistema Modelo de Churn para obter as probabilidades de cancelamento por cliente.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um payload pronto para execução da chamada, no formato JSON gerado pelo agente anterior.
# 2. Objetivo
Realizar chamada à API do Sistema Modelo de Churn para obter as probabilidades de cancelamento por cliente.
# 3. Regras que você deve seguir para gerar sua resposta
- Esse agente não precisa de instruções para chamadas ao LLM, pois sua única função é executar a chamada à API cujo payload ele já recebe pronto.
# 4. Exemplo de Output que você deve produzir
{
"predictions": [
{
"customer_id": "string",
"churn_probability": 0.73,
"model_version": "v2025.11",
"scored_at": "2025-11-30T11:21:00Z"
}
],
"request_id": "string"
} 2.3 Configurações do Agente
2.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 1).
- Tipo do input: Este agente deve ser apto a receber como input um JSON contendo a chave features com a lista de clientes e variáveis.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 5.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um arquivo no formato JSON contendo as previsões de churn para cada cliente. A estrutura deve incluir o ID do cliente, a probabilidade de churn, a versão do modelo e a data de pontuação.
-
Exemplo de Estrutura de Output:
{ "predictions": [ { "customer_id": "string", "churn_probability": 0.73, "model_version": "v2025.11", "scored_at": "2025-11-30T11:21:00Z" } ], "request_id": "string" } - Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 3.000 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: Não se aplica (uso de ferramenta)
- Temperatura: Não se aplica (uso de ferramenta)
2.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: O agente deverá enviar o JSON recebido para a API externa do Sistema Modelo de Churn e retornar as previsões recebidas como resposta.
2.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Classificação de Risco de Churn (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Classificação de Risco de Churn (RF 3).
RF 3. Agente de Classificação de Risco de Churn
3.1 Tarefa do Agente
Transformar probabilidades de churn em categorias de risco e sinalizador de alta propensão.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON de predição no formato {"predictions": [{"customer_id": "string","churn_probability": number,"model_version": "string","scored_at": "ISO-8601"}]}
# 2. Objetivo
Transformar probabilidades de churn em categorias de risco e sinalizador de alta propensão.
# 3. Regras que você deve seguir para gerar sua resposta
- Regra 1: Limiares de bucket. Use thresholds padrão: high >= 0.60; medium >= 0.35 e < 0.60; low < 0.35. Caso thresholds_custom sejam informados no input, utilize-os; caso contrário, adote os padrões e exponha thresholds no output.
- Regra 2: Sinalizador de alta propensão. churn_risk_high = true quando risk_bucket = "alto"; caso contrário, false.
- Regra 3: Rationale determinístico. Construa rationale curto citando: (a) faixa da probabilidade (ex.: ">=0.60"); (b) principal driver disponível do payload anterior quando presente via campos comparativos (ex.: queda_uso_percent_30v90 <= -0.3 -> "queda de uso 30v90"). Limite a 140 caracteres.
- Regra 4: Consistência de metadados. Propague model_version e scored_at; se faltar em alguma predição, copie do nível do conjunto quando disponível; caso ausente, defina como "desconhecido" e registre no rationale "metadados ausentes".
- Regra 5: Não altere churn_probability por regras. Apenas categorize e gere sinalizadores a partir das probabilidades fornecidas pela API.
- Regra 6: Qualidade do input. Descarte duplicatas por customer_id mantendo o maior churn_probability. Se o array predictions estiver vazio, retorne risk_summary vazio e thresholds preenchidos.
# 4. Exemplo de Output que você deve produzir
{
"risk_summary": [
{
"customer_id": "string",
"churn_probability": 0.73,
"risk_bucket": "alto",
"churn_risk_high": true,
"rationale": "prob>=0.6 e queda de uso 30d vs 90d"
}
],
"thresholds": {"high": 0.60, "medium": 0.35, "low": 0.00},
"model_version": "v2025.11",
"scored_at": "2025-11-30T11:21:00Z"
} 3.3 Configurações do Agente
3.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 2).
- Tipo do input: Este agente deve ser apto a receber um JSON de predição no formato especificado.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 3.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um arquivo no formato JSON contendo o resumo de riscos para cada cliente. A estrutura deve incluir o ID do cliente, a probabilidade de churn, o bucket de risco, e um sinalizador de alta propensão.
-
Exemplo de Estrutura de Output:
{ "risk_summary": [ { "customer_id": "string", "churn_probability": 0.73, "risk_bucket": "alto", "churn_risk_high": true, "rationale": "prob>=0.6 e queda de uso 30d vs 90d" } ], "thresholds": {"high": 0.60, "medium": 0.35, "low": 0.00}, "model_version": "v2025.11", "scored_at": "2025-11-30T11:21:00Z" } - Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 3.500 caracteres.
3.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
3.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Utiliza lógica interna para classificação de risco.
- Busca Online: Não utiliza.
- Sistemas Externos: Não utiliza.
3.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Definição de Ofertas Personalizadas e Momento de Envio (RF 4).
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Definição de Ofertas Personalizadas e Momento de Envio (RF 4).
RF 4. Agente de Definição de Ofertas Personalizadas e Momento de Envio
4.1 Tarefa do Agente
Definir a melhor oferta de retenção, mensagem, canal e timing por cliente com risco alto, considerando histórico e preferências.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON combinado contendo: risk_summary do agente anterior e, quando disponível, dados essenciais do perfil do cliente e preferências.
# 2. Objetivo
Definir a melhor oferta de retenção, mensagem, canal e timing por cliente com risco alto, considerando histórico e preferências.
# 3. Regras que você deve seguir para gerar sua resposta
- Regra 1: Combine offer_type ao perfil:
- desconto_progressivo: clientes sensíveis a preço e margem positiva;
- upgrade_plano: usuários próximos ao teto do plano atual;
- bonus_servico: baixa adoção de features-chave;
- condicao_flex_pagamento: alto valor_mensal_medio com indícios de atraso;
- atendimento_prioritario: tickets_ult_30d elevado ou sentimento_suporte <= -0.3.
- Regra 2: Ajuste intensidade pelo bucket: alto -> incentivos no teto permitido; médio -> incentivos moderados; baixo -> evitar incentivos, propor conteúdo educativo e onboarding.
- Regra 3: Defina send_time_window conforme preferencias.horarios_preferidos; se ausente, selecione faixa com maior engajamento histórico.
- Regra 4: Restrições comerciais. Respeite policy.max_discount_percent e policy.cap_monetario.
- Regra 5: Canal de envio. Se preferencias.canal existir, escolha o primeiro item permitido; caso contrário, selecione por heurística.
- Regra 6: Mensagem. Gere message_copy com título até 60 caracteres e corpo claro com: benefício, prazo, call-to-action.
- Regra 7: A/B/controle. Aloque ab_test_group de forma determinística por customer_id.
- Regra 8: Cooldown. Se o cliente recebeu oferta dentro de policy.cooldown_dias, não enviar nova oferta.
- Regra 9: Rentabilidade. Para margem negativa recorrente, preferir bonus_servico ou atendimento_prioritario.
- Regra 10: Elegibilidade e rationale. Popular eligibility_reason com 1-3 fatores.
- Regra 11: Estrutura para automação. Sempre preencher: channel, send_time_window, offer_type, offer_value, message_copy, constraints.validade_dias, e customer_id.
- Regra 12: Fallbacks. Se churn_risk_high=false, não gerar oferta com incentivo; apenas comunicação educativa.
# 4. Exemplo de Output que você deve produzir
{
"retention_offers": [
{
"customer_id": "string",
"risk_bucket": "alto",
"churn_probability": 0.73,
"offer_type": "desconto_progressivo",
"offer_value": {"moeda": "BRL","valor": 20.00,"percentual": 0.15},
"eligibility_reason": "plano Premium, alta margem, queda de uso",
"channel": "email",
"send_time_window": "18-21",
"message_copy": {"titulo": "Ficamos melhor juntos","corpo": "Vimos que você pode não estar aproveitando tudo do seu plano. Que tal 15% de desconto nos próximos 3 meses e um upgrade de funcionalidades?"},
"ab_test_group": "A",
"constraints": {"cap_max": 50.00,"validade_dias": 7}
}
],
"policy": {"max_discount_percent": 0.20,"cap_monetario": 50.00,"cooldown_dias": 30},
"version": "1.0"
} 4.3 Configurações do Agente
4.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 3).
- Tipo do input: Este agente deve ser apto a receber um JSON combinado contendo risk_summary e dados essenciais do perfil do cliente e preferências.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 4.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um arquivo no formato JSON detalhando as ofertas de retenção personalizadas para cada cliente.
-
Exemplo de Estrutura de Output:
{ "retention_offers": [ { "customer_id": "string", "risk_bucket": "alto", "churn_probability": 0.73, "offer_type": "desconto_progressivo", "offer_value": {"moeda": "BRL","valor": 20.00,"percentual": 0.15}, "eligibility_reason": "plano Premium, alta margem, queda de uso", "channel": "email", "send_time_window": "18-21", "message_copy": {"titulo": "Ficamos melhor juntos","corpo": "Vimos que você pode não estar aproveitando tudo do seu plano. Que tal 15% de desconto nos próximos 3 meses e um upgrade de funcionalidades?"}, "ab_test_group": "A", "constraints": {"cap_max": 50.00,"validade_dias": 7} } ], "policy": {"max_discount_percent": 0.20,"cap_monetario": 50.00,"cooldown_dias": 30}, "version": "1.0" } - Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 5.000 caracteres.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
4.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Utiliza lógica interna para definir ofertas e timing.
- Busca Online: Não utiliza.
- Sistemas Externos: O agente, após realizar o processamento, irá enviar sua resposta (ofertas personalizadas e instruções de disparo) para o sistema de Marketing Automation/CRM indicado pelo cliente (ex.: Braze, RD Station, Salesforce Marketing Cloud), contendo customer_id, canal, janela de envio, mensagem e parâmetros de oferta. Esse envio deve ser configurado manualmente na interface do fluxo na plataforma da Prototipe AI, no item "Envio da Resposta do Agente" e não será realizado por essa configuração inicial.
4.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente é o entregável final e não é passada para outros agentes internos.
4.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. As ofertas geradas devem ser enviadas para o sistema de Marketing Automation/CRM indicado pelo cliente.