Skip to main content

Schema

CampoTipoDescrição
leadOrganizationIdstringPK — partition key. FK para LeadOrganization. Um item por lead por organização
featuresJSONMapa de todas as features como pares chave-valor. Todos os valores são numéricos
computedAtdatetimeQuando as features foram computadas pela última vez
Banco de dados: DynamoDB. Um único GetItem retorna o vetor completo de features — otimizado para consumo rápido pelos agentes de IA e modelos de ML.

Padrões de Acesso

PadrãoQuery
Buscar vetor completo de featuresGetItem PK = leadOrganizationId — retorna tudo em uma única leitura
Atualizar todas as featuresPutItem — escrita atômica do conjunto completo de features

Categorias de Features

RFM (Recency, Frequency, Monetary)

FeatureDescrição
recency_daysDias desde a última interação
frequency_conversations_30dConversas nos últimos 30 dias
frequency_purchases_90dCompras nos últimos 90 dias
monetary_totalValor total gasto (lifetime)
monetary_avg_ticketTicket médio de compra

Engagement

FeatureDescrição
avg_response_time_secondsTempo médio de resposta do lead
avg_messages_per_conversationMédia de mensagens por conversa
sentiment_avg_30dScore médio de sentimento (0-1) nos últimos 30 dias

Comportamento

FeatureDescrição
discount_request_rateTaxa de conversas em que o lead pediu desconto
conversion_rateTaxa de conversas que resultaram em compra
support_ticket_rate_30dTickets de suporte nos últimos 30 dias
days_since_last_purchaseDias desde a última compra
has_purchased1 se o lead tem qualquer compra, 0 caso contrário
engagement_scoreScore composto de engajamento (0-1)

Padrões Temporais

FeatureDescrição
preferred_hour_of_dayHora do dia em que o lead mais interage
preferred_day_of_weekDia da semana em que o lead mais interage
channel_diversityNúmero de canais diferentes utilizados

Campaign

FeatureDescrição
campaign_open_rateTaxa de abertura de campanhas
campaign_click_rateTaxa de clique em campanhas
campaigns_received_30dCampanhas recebidas nos últimos 30 dias

Regras de Negócio

  • Item único por LeadOrganization — um GetItem retorna o vetor completo de features
  • Todos os valores de features são numéricos (double precision). Features categóricas devem ser codificadas como números
  • Atualizado por dois triggers:
    • Near-realtime: Feature Computer Lambda acionado via SQS quando um novo evento chega
    • Batch: EventBridge Scheduler dispara recálculo periódico para features dependentes do tempo (ex: recency_days muda diariamente mesmo sem novos eventos)
  • O campo computedAt indica a frescura dos dados — consumidores podem decidir como ponderar features desatualizadas
  • O Domínio Lead computa e armazena features. Ele não decide como elas são usadas — isso é responsabilidade do domínio AI Agents (MAB/ML)
O vetor de features é projetado para consumo direto por modelos de ML e sistemas de Multi-Armed Bandit (MAB). A separação entre computação (Domínio Lead) e uso (Domínio AI Agents) garante que o domínio de dados não acumule lógica de decisão.

Exemplo

{
  "PK": "ORG#org_01HX#LEAD#lead_01HX",
  "SK": "FEATURES",
  "recency_days": 2,
  "frequency_7d": 5,
  "frequency_30d": 18,
  "monetary_total": 45000,
  "avg_response_time_min": 12.5,
  "sentiment_score": 0.78,
  "engagement_depth": 3,
  "preferred_hour": 14,
  "preferred_dow": 2,
  "campaign_response_rate": 0.45,
  "updatedAt": "2026-03-20T14:22:00Z",
  "version": 42
}