This article is part of a series co-written with Francisco Rodriguez, Pablo Barbero, and Enrique Fernandez about Machine Learning feature engineering in production environments. You may find the previous posts here and here.

If you have read our first post you would have an understanding of how we make use of the Machine learning (ML) models to make predictions about order stages and what is the significance of real-time aggregation to these models.

Real-time aggregation here means performing a set of data transformations on multiple data points to compute a result which we refer to as real-time features. These features…

This article is part of a series co-written with Francisco Rodriguez, Meghna and Enrique Fernandez about Machine Learning feature engineering in production environments. You may find the other articles here and here.

In this post, we focus on the problem of building real-time features for our online estimators in a scalable, accurate, and robust way. We will tell you how we ensure that our training and inference pipelines are equivalent, what types of aggregations have given the best results and how this has improved our models.


Glovo is a food and grocery delivery three-sided marketplace, that connects consumers, stores…

Powering Glovo’s Machine Learning with Real-Time Data, part I: introduction.

This article is part of a series co-written with Pablo Barbero, Meghna, and Enrique Fernandez about Machine Learning feature engineering in production environments. You can find the articles focusing on the Data Science and Engineering aspects here and here.

In Glovo’s Routing team, we are tasked with developing Machine Learning (ML) models that estimate the time duration of every significant stage of a Glovo order. For instance, we have models for predicting the preparation time of a restaurant, the travel time of a courier, the total delivery time, among others…

In part one we described the problem we had with AWS EC2 image creation, and we proposed a potential solution using the AWS image builder service. In this blog post, you will be able to see how we introduced this service in our software development lifecycle.

Standardizing AMI life cycle @ Glovo

Instead of directly using the AWS Image Builder service, we decided to add an extra layer of abstraction that would help us meet all our requirements. This new abstraction layer has the following components:

  1. Github repository: at the Glovo platform team, we always try to offer services that are available via a simple Pull…

At Glovo we use EC2 instances to deploy most of our services. When deploying a new EC2 instance it is necessary to define which image to use. In the context of AWS, these images are called AMI (Amazon Machine Image). AMIs are really useful for replicating the same deployment across many different virtual machines. It also allows us to pre-install any dependency, program, and configuration we may need. This pre-installation happens during the image creation and does not increase the boot time of our virtual machines. …

A few years ago, Data Science was called “the sexiest job of the 21st century”. It still is pretty sexy, but Data Scientists are being every day more challenged to show they can deliver and generate value. What use is it to have a very clever and top-performing model sitting on your laptop if it’s not improving your business? …


Have you ever had to write a new component in Vue and, once the code was done, you tell yourself:

Damn I need to unit test it now.. Where do I even start?..

Photo by Christian Erfurt on Unsplash

At least that used to be me every time in my newbie days with Vue. So if you’re like me or at least want to see how much you actually know about testing UI components then keep on reading :)

I want to keep it simple for you so the article is made of a few lists of DOs and DON’Ts and some practical tips on how…

The product team plays a central role at a tech company. The team is responsible for implementing strategy, product discovery, defining the roadmap of milestones, specifying a product’s features and working with engineering to deliver it.

On our journey to making great products, we make a million decisions each and every day (okay, maybe not a million). Decisions that impact how the product functions, looks and feels, as well as how it scales. But these decisions aren’t made in isolation. …

I think animations are one of the most complicated things to do in Android. Making a simple animation sometimes takes a lot of code, and it gets harder if you need to synchronise them.

Luckily, Android provides a few tools that enhance the user experience. One of the latest ones is MotionLayout introduced in the Google I/O 2018. Even though it is still under development, the tool appears to be stable on beta 6.

So, I have decided to give it a go by writing a simple Scrum Poker application.

In case you don’t know what Scrum Poker is, here

Using TypeScript to define Vue components may, at times, not feel as smooth as we’d like. This will very likely change with Vue3, which has been itself rewritten using this wonderful language, but for our projects still using Vue2, this post describes a way for you to get your components types right 100% of the times.

The Problem

Has it ever happened to you that VSCode complained about a Vuex getter not being part of your component? Or about a property you mixed-in not being there? We see this in our projects more often than not.

In the image above, we’re mixing…

Glovo Engineering

Read about our biggest technical challenges and how it is to work at Glovo

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store