Pular para o conteúdo

Design clássico · Pleno

Recomendação de eventos

Projeto de entrevista clássico. Pontos centrais: learning to rank, features geo/tempo e cold start de itens efêmeros.

14 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: learning to rank, features geo/tempo e cold start de itens efêmeros. O roteiro de entrevista parte de um sistema de recomendação de eventos semelhante ao do Eventbrite, no contexto de desenho de sistemas de ML.

01 · CONTEXTO E OBJETIVO

O que significa recomendar um evento

O roteiro de entrevista parte de um sistema de recomendação de eventos semelhante ao do Eventbrite, no contexto de desenho de sistemas de ML. O objetivo de negócio é aumentar a venda de ingressos, com recomendação personalizada para cada usuário, eventos gratuitos ou pagos e usuários no mundo todo, em vários idiomas.

Para dimensionar, o roteiro assume cem milhões de usuários ativos por dia e um milhão de eventos por mês, e sugere uma latência de 200 ms (no roteiro, com ponto de interrogação).

Como problema de ML, o objetivo é recomendar os eventos mais relevantes para maximizar o número de eventos registrados. A categoria é um sistema de recomendação com abordagem de ranking: entra o identificador do usuário e sai uma lista ordenada de eventos com uma pontuação de relevância.

O roteiro lista três formulações de learning to rank, pointwise, pairwise e listwise, e escolhe a pointwise. Nela a entrada é o par usuário e evento e a saída é a probabilidade de registro, uma classificação binária.

02 · DADOS E ITENS EFÊMEROS

Poucos sinais por evento, muita engenharia de features

As fontes de dados do roteiro incluem o usuário, com perfil e interações históricas, as amizades entre usuários e as interações entre usuário e evento. O roteiro também pergunta, no esclarecimento inicial, se amizades entre usuários podem ser usadas.

O roteiro afirma que recomendar eventos é mais difícil que recomendar filmes ou vídeos: o evento tem vida curta, então acumula poucas interações históricas, o que leva ao cold start, descrito como um problema constante de item novo. A resposta do roteiro é investir mais esforço em engenharia de features, com muitas features significativas.

03 · FEATURES GEO, TEMPO E SOCIAIS

Quatro grupos de features

GrupoExemplos citados no roteiro
UsuárioIdade, gênero e histórico de eventos
EventoPreço e número de registrados; horário, duração e tempo restante; local (cidade, país, acessibilidade); anfitrião e sua popularidade
Usuário e eventoSimilaridade de preço, de descrição e de tempo (duração, dia, hora do dia); mesma cidade, estado ou país
SocialNúmero ou proporção de amigos que vão; convites de amigos; evento organizado por amigo

No pré-processamento, o roteiro usa bucketização com one-hot para idade, distância e tempo. Features de localização e distância pedem cálculo eficiente, e o roteiro separa o processamento em lote, para o que é estático, do processamento online por streaming, para o que é dinâmico (pipelines de dados, analytics em tempo real).

Como evolução, o roteiro cita aprender embeddings de usuários e de eventos.

04 · FUNIL DE DOIS ESTÁGIOS

Filtrar por regras e depois ranquear

A arquitetura MVP do roteiro é um funil de dois estágios. O primeiro gera candidatos por filtragem de eventos baseada em regras, como a localização, e reduz o conjunto de milhões de eventos para centenas. O segundo é o ranking, um classificador binário pointwise que pontua os pares usuário e evento e ordena.

  1. O app pede ao serviço de recomendação a lista para o usuário: entra o identificador do usuário e sai uma lista ordenada de eventos com pontuação de relevância.

    Diagrama da arquitetura: Recomendação de eventos: serving em funil
    CLApp do usuário
    CPServiço de recomendação
    CPFiltro de candidatos
    DBCatálogo de eventos
    CPRanker
    CHFeatures online
    DBFeatures em lote
    QFluxo de eventos de uso
  2. O serviço aciona o filtro de candidatos, que consulta o catálogo de eventos aplicando regras baseadas em atributos como a localização.

    Diagrama da arquitetura: Recomendação de eventos: serving em funil
    CLApp do usuário
    CPServiço de recomendação
    CPFiltro de candidatosregras
    DBCatálogo de eventos
    CPRanker
    CHFeatures online
    DBFeatures em lote
    QFluxo de eventos de uso
  3. A filtragem reduz o conjunto de milhões de eventos para centenas.

    Diagrama da arquitetura: Recomendação de eventos: serving em funil
    CLApp do usuário
    CPServiço de recomendação
    CPFiltro de candidatosfiltro
    DBCatálogo de eventos
    CPRanker
    CHFeatures online
    DBFeatures em lote
    QFluxo de eventos de uso
  4. Para pontuar cada par, o ranker lê as features no armazenamento online, alimentado pelo processamento em lote das features estáticas e pelo fluxo das dinâmicas.

    Diagrama da arquitetura: Recomendação de eventos: serving em funil
    CLApp do usuário
    CPServiço de recomendação
    CPFiltro de candidatos
    DBCatálogo de eventos
    CPRanker
    CHFeatures online
    DBFeatures em loteestáticas
    QFluxo de eventos de usodinâmicas
  5. O ranker calcula a pontuação dos pares usuário e evento com um classificador binário pointwise e ordena.

    Diagrama da arquitetura: Recomendação de eventos: serving em funil
    CLApp do usuário
    CPServiço de recomendação
    CPFiltro de candidatos
    DBCatálogo de eventos
    CPRankerpontua
    CHFeatures online
    DBFeatures em lote
    QFluxo de eventos de uso
  6. A lista ordenada volta ao serviço e ao app do usuário.

    Diagrama da arquitetura: Recomendação de eventos: serving em funil
    CLApp do usuário
    CPServiço de recomendação
    CPFiltro de candidatos
    DBCatálogo de eventos
    CPRanker
    CHFeatures online
    DBFeatures em lote
    QFluxo de eventos de uso

05 · MODELO E TREINO

GBDT de linha de base, rede neural como melhoria

ModeloO que o roteiro diz
GBDTBom para dados estruturados, mas não para aprendizado contínuo
Rede neuralAprendizado contínuo, expressiva e com relações não lineares

O roteiro sugere começar com GBDT como linha de base e testar a rede neural como melhoria, e considera ambas boas opções.

O dataset tem uma linha por par usuário e evento, com as features calculadas e rótulo positivo se houve registro e negativo se não. O roteiro cita o desbalanceamento de classes e aponta a perda focal ou a perda balanceada por classe como saída.

  1. O app registra as interações entre usuário e evento num registro de eventos.

    Diagrama da arquitetura: Recomendação de eventos: dados e treino
    CLApp do usuário
    QRegistro de interações
    CPMontagem do dataset
    DBCatálogo de eventos
    DBDataset de treino
    CPTreino do modelo
    DBModelo treinado
    CPRanker
  2. O processo de montagem lê as interações e o catálogo de eventos e junta perfil, histórico e amizades do usuário.

    Diagrama da arquitetura: Recomendação de eventos: dados e treino
    CLApp do usuário
    QRegistro de interações
    CPMontagem do datasetmonta
    DBCatálogo de eventos
    DBDataset de treino
    CPTreino do modelo
    DBModelo treinado
    CPRanker
  3. Para cada par usuário e evento, calcula as features e grava o exemplo com rótulo positivo se houve registro e negativo se não.

    Diagrama da arquitetura: Recomendação de eventos: dados e treino
    CLApp do usuário
    QRegistro de interações
    CPMontagem do dataset
    DBCatálogo de eventos
    DBDataset de treinoexemplos
    CPTreino do modelo
    DBModelo treinado
    CPRanker
  4. O treino lê o dataset; o roteiro sugere começar por GBDT e experimentar rede neural.

    Diagrama da arquitetura: Recomendação de eventos: dados e treino
    CLApp do usuário
    QRegistro de interações
    CPMontagem do dataset
    DBCatálogo de eventos
    DBDataset de treino
    CPTreino do modelotreino
    DBModelo treinado
    CPRanker
  5. O modelo treinado é guardado e fica disponível para o ranker usar no serving.

    Diagrama da arquitetura: Recomendação de eventos: dados e treino
    CLApp do usuário
    QRegistro de interações
    CPMontagem do dataset
    DBCatálogo de eventos
    DBDataset de treino
    CPTreino do modelo
    DBModelo treinadomodelo
    CPRanker

06 · MÉTRICAS

Como saber se funcionou

TipoMétricas citadas
OfflinePrecisão e revocação em k, que não consideram a qualidade do ranking; mAP, porque o registro é relevância binária
OnlineCTR, taxa de conversão, taxa de favoritar ou curtir e ganho de receita

Perguntas frequentes

O que é Recomendação de eventos?

Projeto de entrevista clássico. Pontos centrais: learning to rank, features geo/tempo e cold start de itens efêmeros.

O que o design de Recomendação de eventos cobre?

Ele está organizado nestas seções: O que significa recomendar um evento, Poucos sinais por evento, muita engenharia de features, Quatro grupos de features, Filtrar por regras e depois ranquear, GBDT de linha de base, rede neural como melhoria e Como saber se funcionou.

Quanto tempo leva Recomendação de eventos e qual é o nível?

Leva cerca de 14 minutos para ler e tem nível Pleno.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.