Skip to main content

Schema

CampoTipoDescrição
leadOrganizationIdstringPK — partition key. FK para LeadOrganization
memoryTypeKeystringSK — sort key. Formato: "purchase#product:whey_1kg"
memoryTypeenumFACT, PREFERENCE, INTEREST, PURCHASE, SUPPORT, BEHAVIORAL, CAMPAIGN, FORM
keystringChave da memória dentro do tipo, max 255. Ex: product:whey_1kg, ticket:T-456
valueJSONDados estruturados
confidencenumber0.0 a 1.0. Grau de certeza do sistema
sourceenumAGENT_INFERRED, USER_DECLARED, SYSTEM_COMPUTED, EVENT_DERIVED
sourceEventIdslistIDs dos Events que geraram/atualizaram esta memória
createdAtdatetimeTimestamp de criação
updatedAtdatetimeTimestamp da última atualização
expiresAtnumber?TTL em epoch seconds. DynamoDB auto-deleta itens expirados
Banco de dados: DynamoDB. Memórias vivem no DynamoDB pela flexibilidade do schema (cada tipo de memória tem um value JSON diferente) e pelo padrão de acesso por partition key (todas as memórias de um lead em uma única query).
Memórias substituem a necessidade de tabelas específicas por fonte (transactions, form_responses, etc.) — todos os dados enriquecidos são armazenados como memórias com value JSON estruturado. Se uma memória estiver corrompida ou a lógica de derivação mudar, os eventos podem ser reprocessados para reconstruir todas as memórias.

Padrões de Acesso

PadrãoQuery
Buscar todas as memóriasQuery PK = leadOrganizationId
Buscar por tipoQuery PK = leadOrganizationId, SK begins_with("purchase#")
Buscar item específicoGetItem PK = leadOrganizationId, SK = "purchase#last_transaction"
UpsertPutItem com PK + SK (sobrescreve se existir)
Auto-expiraçãoDynamoDB TTL em expiresAt

Tipos de Memória

TipoDescriçãoExemplos de key
FACTInformação factual, declarada ou verificadafamily, location, occupation
PREFERENCEPreferências comportamentais ou de comunicaçãoprice_sensitivity, payment_method
INTERESTInteresse em um produto ou categoriacategory:supplements, product:creatina
PURCHASEHistórico e padrões de compralast_transaction, product:whey_1kg
SUPPORTHistórico de suporteticket:T-456
BEHAVIORALPadrões de comportamento observadoslast_conversation, response_pattern
CAMPAIGNHistórico de interação com campanhascampaign:camp_whey_recompra
FORMRespostas de formuláriospesq_sat_2026:como_nos_conheceu

Regras de Negócio

  • Unique em (leadOrganizationId, memoryType, key) via PK + SK — permite upsert sem duplicatas
  • confidence varia de 0.0 a 1.0. USER_DECLARED = 1.0, AGENT_INFERRED pode ser menor
  • Memórias são derivadas de Events pelo Memory Updater Lambda
  • sourceEventIds garante rastreabilidade: memórias que sobrescrevem (ex: last_transaction) contêm um único event ID; memórias que agregam (ex: product:whey_1kg) contêm todos os event IDs contribuintes
  • Se uma memória estiver corrompida ou a lógica de derivação mudar, eventos podem ser reprocessados para reconstruir todas as memórias
  • expiresAt habilita memórias temporárias. DynamoDB TTL deleta automaticamente itens expirados
  • Memórias substituem a necessidade de tabelas específicas por fonte (transactions, form_responses, etc.) — todos os dados enriquecidos são armazenados como memórias com value JSON estruturado

Exemplo

[
  {
    "PK": "ORG#org_01HX#LEAD#lead_01HX",
    "SK": "MEM#preference#preferred_channel",
    "memoryType": "preference",
    "key": "preferred_channel",
    "value": { "channel": "WHATSAPP", "confidence": 0.92 },
    "sourceEventIds": ["evt_01HX", "evt_02HX"]
  },
  {
    "PK": "ORG#org_01HX#LEAD#lead_01HX",
    "SK": "MEM#fact#company_size",
    "memoryType": "fact",
    "key": "company_size",
    "value": { "employees": 150, "tier": "mid-market" }
  }
]