Bastidores: como funciona um pedido do iFood

Conheça o percurso de um pedido da nossa porta de entrada (digital) até a porta da sua casa.

O percurso de um pedido da nossa porta de entrada (digital) até a porta da sua casa.

Bateu aquela fome, então você resolveu abrir o app do iFood para pedir algo. Só nessa abertura do aplicativo, a gente já teve que colocar nosso tempo de engenharia para trabalhar.

Primeiro verificamos as coisas básicas: seu usuário/login, seu último endereço usado (que fica lá no topo) e sua posição GPS atual — pois se endereço e GPS são diferentes, a gente vai sugerir que você dê uma olhadinha no endereço.

Depois, também verificamos todas as listas e categorias que estão ativas no iFood naquele instante, como mercados, listas de restaurantes com entrega grátis, listas promocionais, lista de agendamento, lista de Super-Restaurantes (os melhores do iFood), entre outras.

Várias destas listas estão ativas somente para determinadas cidades, momentos do dia ou grupo de clientes. Sim, eventualmente você pode estar em um teste A/B, seja em listas promocionais ou em alguma funcionalidade específica que a gente esteja testando.

Estes ajudam muito a andar rápido e entender se o que está sendo testado de fato tem o valor que estávamos imaginando . Além disso, também ajudaria a entender se deveríamos escalar uma solução testada para o restante da base de clientes.

O percurso de um pedido da nossa porta de entrada (digital) até a porta da sua casa.

Bateu aquela fome, então você resolveu abrir o app do iFood para pedir algo. Só nessa abertura do aplicativo, a gente já teve que colocar nosso tempo de engenharia para trabalhar.

Primeiro verificamos as coisas básicas: seu usuário/login, seu último endereço usado (que fica lá no topo) e sua posição GPS atual — pois se endereço e GPS são diferentes, a gente vai sugerir que você dê uma olhadinha no endereço.

Depois, também verificamos todas as listas e categorias que estão ativas no iFood naquele instante, como mercados, listas de restaurantes com entrega grátis, listas promocionais, lista de agendamento, lista de Super-Restaurantes (os melhores do iFood), entre outras.

Várias destas listas estão ativas somente para determinadas cidades, momentos do dia ou grupo de clientes. Sim, eventualmente você pode estar em um teste A/B, seja em listas promocionais ou em alguma funcionalidade específica que a gente esteja testando.

Estes ajudam muito a andar rápido e entender se o que está sendo testado de fato tem o valor que estávamos imaginando . Além disso, também ajudaria a entender se deveríamos escalar uma solução testada para o restante da base de clientes.

Algoritmo em ação

Seguindo em frente, um algoritmo de machine learning é responsável por entender os comportamentos e padrões dos hábitos alimentares dos grupos de pessoas que pedem no iFood e, a partir daí, sugerir os restaurantes que fazem mais sentido pra você, colocando-os na sua casa .

O modelo leva em consideração uma série de variáveis ​​e as traduções relacionando os hábitos alimentares dos clientes e às ofertas dos restaurantes que são mais adequados com esse seu momento de abertura do app.

Com algum grau de certeza, a gente poderia dizer quem está bastante predisposto a pedir pizza na próxima abertura do app em determinado horário, dada a quantidade de dados que temos. Irado, né?

Para montar a lista de restaurantes da casa, também verificamos coisas básicas dos restaurantes, como o horário de funcionamento e se o restaurante está online na plataforma. Afinal, não faz sentido sugerir um restaurante que está fechado!

Essa lista também já mostra a distância entre você e o restaurante, o tempo de entrega previsto e as taxas de entrega. Mais a frente eu vou explorar isso um pouco mais.

Escolhi meu restaurante. O que acontece agora?

Quando escolhe um restaurante, você entra na experiência do cardápio. Nela, a gente mostra para você todos os pratos e categorias ativas naquele restaurante, para aquele dado dia e horário de funcionamento.

O restaurante é capaz de oferecer cardápios diferentes por dia e horário, e isso fica a prêmios dele.

No cardápio você pode montar todo o seu pedido selecionando os pratos/itens, complementos e, eventualmente, colocando uma observação para o restaurante sobre item específico (tipo pedir para tirar aliche da pizza de aliche 😅).

Tudo certo com a escolha e você vai agora para o check-out — que no iFood chamamos de sacola.

A sacola do aplicativo para o consumidor final

A experiência da sacola, assim como a de qualquer fechamento de carrinho de compras no e-commerce, é supercrítica. O tempo que cuida disso por aqui não brinca em serviço. Tudo foi pensado para garantir toda a informação necessária para não travar o seu fechamento de pedido.

Coisas complexas também acontecem neste passo. Verificamos e exibimos os meios de pagamento disponíveis, os cupons disponibilizados para você (se a gente te enviou a notificação a gente precisa ter o cupom ali), se você tem saldo disponível na Carteira do iFood e sua opção para pagar com ela, e por aí vai.

Não pretendo entrar em muitos detalhes nas questões de pagamentos pois daria um post só disso, mas o importante é: fechei meu pedido. Já tá chegando?

O papel do nosso parceiro, o restaurante

Quando seu pedido é feito, repassamos todas as informações para o restaurante. Inclusive a sua observação para tirar o aliche da pizza.

Nesse ponto, o restaurante pode ou não aceitar seu pedido. A gente faz isso porque, às vezes, o restaurante pode estar super ocupado, já produzindo mais pratos do que aguenta expedir e sem a possibilidade de atender mais um.

Muitos dos restaurantes também têm espaço físico/salão e a demanda do iFood é apenas parte da demanda total que está aceitando.

No geral, o restaurante tem por volta de 8 minutos para confirmar se você pode produzir o seu pedido. Caso ele não faça isso, cancelamos automaticamente para que você, cliente, não fique com a falsa expectativa de que as coisas estão dando certo.

A tela de confirmação de pedido no Gestor de Pedidos (mobile)

Quando o restaurante confirma o seu pedido, a gente avisa que está tudo certo através de uma notificação push que diz que “o pedido já está sendo preparado”.

Daqui pra frente, você considerará que este restaurante hipotético é do tipo Entrega iFood, em que a gente opera toda a logística de entrega dos pedidos dele, sendo que ele pode focar exclusivamente em produzir o seu prato com todo carinho.

É importante dizer que essa parte a seguir é a que eu mais gosto, pois é onde os squads em que eu trabalho como Product Manager atuam!

Onde começa o trabalho da logística iFood

Antes de você abrir o app! Na verdade.

Antes mesmo de você abrir o iFood, o nosso horário de monitoramento ao vivo já está acompanhando cada uma das cidades em que temos Entrega iFood . Verificamos se temos um número suficiente de entregadores para a quantidade de pedidos, se determinada região tem alguma espécie de desbalanço e acompanhamos os pedidos com atraso — quando o seu pedido atrasa, a gente abre uma ocorrência automática internamente e, inclusive, passou a priorizar seu entrega.

Antes de você abrir o aplicativo, um outro modelo de aprendizado de máquina funciona para construir as previsões de tempo de entrega para um determinado restaurante, num determinado raio de entrega e num determinado dia e horário da semana . O modelo também prevê o “tempo de cozinha” dos pedidos, uma informação crucial para a tomada de decisão sobre quando mandaremos o(a) entregador(a) ao restaurante.

Salvo em graças em que temos uma estratégia mais contundente, focada em marketing e cupons (consequentemente com uma demanda maior do que o normal), é bastante possível prever o tempo de entrega dos restaurantes Entrega iFood com boa acurácia, de modo que os horários prometidos sejam cumpridos. Mas “bastante possível” não quer dizer que o trabalho seja trivial.

A logística é bastante complexa, pois os pedidos “nascem” o tempo todo, espalhados pela cidade, e os entregadores também estão se locomovendo o tempo todo, ora com um pedido carregado e indo para a entrega, ora aguardando a gente dar um novo pedido para ele.

Esse modelo entende o padrão de comportamento desses tempos, levando em consideração outro conjunto de variáveis ​​(bem diferente do primeiro modelo que descrevi no texto) e, a partir dessas entradas que aprendemos e da situação do momento, é capaz de predizer os tempos de entrega e de cozinha. É desta forma que estes tempos variam ao longo dos horários e dos dias — tudo depende dos dados.

Enxergar e controlar tudo isso são enormes desafios de escala e complexidade.

E a gente precisa falar um pouco sobre como tomaremos as decisões nesse contexto de otimização. Buscamos encontrar o melhor entregador(a) para um dado pedido, de modo que ele(a) chegue no horário correto no restaurante para pegar o pedido e depois levar até sua casa.

Como a magia acontece

Imagine-se no desafio de roteirizar um entregador(a) para entregar as pizzas de uma determinada pizzaria, em uma sequência que faz sentido, em uma rota que otimize o número de paradas e quilometragem, que seja eficiente e que respeite os tempos de entrega que fizemos para o cliente na hora que coletamos o pedido, num fluxo contínuo de “nascimento” de novos pedidos. Complexo, uma certa loucurinha até, mas possível, não é?

Imagine-se agora tentando fazer isso com 100 entregadores(as) e não mais com 1, criando rotas que façam sentido, atendendo os pedidos no prazo, garantindo um bom SLA de entrega. Impossível sem tecnologia, certo?

Essas decisões no iFood são tomadas minuto a minuto, em uma escala 1.000 vezes maior (literalmente) que o último exemplo.

Recebemos um fluxo de dados constante de todos os entregadores conectados no app iFood para Entregadores com suas posições e estado de conectividade, nível de bateria e outras informações.

Precisamos conhecer toda a frota de entregadores(as), suas posições e quem pode ou não pegar um pedido neste momento. Se ele(a) estiver com a bateria muito baixa, por exemplo, a gente pode concluir que ele(a) não vai conseguir entregar o pedido até o fim, pois o celular pode “morrer” no meio do caminho. Algumas coisas meio óbvias, mas que, se não forem pensadas, geram um problema.

Também precisamos conhecer toda a coleção de pedidos disponíveis que prometemos entregar, sendo que as promessas de entrega são um dos fatores mais importantes para toda configuração temporal da rota que se formará em instantes.

Dados esses dois domínios de informação, os pedidos e os entregadores, o algoritmo de otimização começa a testar diversas hipóteses de criação de rotas entre eles, de acordo com o cenário que estamos enxergando naquele momento. O objetivo é minimizar qualquer atraso e criar rotas mais curtas, e assim conseguir ser mais eficientes e livrar o entregador mais rapidamente para uma próxima entrega.

Há uma série de restrições que também precisam ser atendidas, como a de não escolher um(a) entregador(a) cuja distância até o restaurante seja tão grande a ponto de tornar infactível a entrega on-time do pedido.

Também criamos algumas rotas de pedidos agrupados, como quando na sacola do entregador há 5 pizzas a serem entregues em locais diferentes. Mas a gente faz isso de uma forma mais esperada e escalável, respeitando todas as configurações temporárias dos pedidos que exclusivos na bolsa . Só faremos isso se nenhum dos pedidos atrasar antes do que prometemos para você, consumidor.

Ah! E tudo isso em escala global, pois já operamos no México e na Colômbia também. Ao mesmo tempo em que você pede seu hambúrguer no sábado à noite, alguém no México pede tacos e quesadillas. Todos estes sistemas e pessoas precisam operar em escala global com a mesma garantia de nível de serviço.

Gente e propósito

Dava pra entrar em bem mais detalhes, mas isso já virou um textão e, quem sabe, não fica pra uma próxima.

Tudo, exatamente tudo que eu mencionei aqui de forma bastante simplificada, só é possível por causa de gente. Gente e propósito é o que faz o iFood se mover tão rápido quanto uma start-up, e é por isso que estou apaixonado por fazer o que faço onde faço.

Hoje são mais de 40 squads de produto e tecnologia olhando as mais distintas facetas desse grande negócio, lidando com a profundidade e complexidade de cada contexto, organizadas em 3 tribos distintas, Clientes, Restaurantes e Logística, e cortadas por capítulos de Design, Machine Learning , Back-end, Front-end, Dados e Produto. Fazer isso tudo funcionar de forma integrada é maravilhoso!

Estamos contratando em várias frentes, inclusive no meu próprio tempo de produto e de engenharia, que cuida da eficiência logística e todo este contexto de otimização da entrega do seu pedido.

Se de alguma forma este desafio de escala e complexidade você fariam levantar da cama com tesão, talvez exista uma vaga pra você. É só entrar em: https://boards.greenhouse.io/ifood

Esse conteúdo foi útil para você?
SimNão

Publicações relacionadas