Agente de IA para Personalização de Ofertas de Retenção

30 de November de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que analisa o perfil de clientes propensos a cancelar e personaliza ofertas de retenção com base em histórico de uso e preferências.

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

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

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.

© 2025 prototipe.ai. Todos os direitos reservados.