Letting each region set up its own facilities
GT is the internal platform that configures Mercado Envíos, Mercado Libre’s logistics network: four tools for coverage, transit times, capacity and the connections between facilities. I joined Mercado Libre in 2019 as a product designer, and GT ran alongside the routing software, which I started on first. They were parts of the same business.
The team was new. Requests came through EPD, Engineering Product Design, from the business side and from engineering, and I designed GT’s screens. This case is about letting each region set up its own facilities.
- Role
- Product designer on GT
- When
- 2019 – 2021
- With
- One designer, thirty developers
- Scope
- Four tools: coverage, transit times, capacity and connections
- The decision
- Each region sets up its own facilities
- What changed
- A new facility in under three hours, down from eleven days
Four tools, and eleven days
Setting up a new facility meant configuring its coverage, transit times, capacity and connections. Someone did it by hand, in Excel, and it took eleven days.
Here are coverage, transit times and the connections between facilities, with the schedules those connections run on. The fourth, capacity, comes with the specs below.
Coverage is a tree: each zone is drilled node by node, down to its postcode ranges.
Carrier: Mercado EnvíosServicio: Mel Distribution
los CPsDebido a un gran volumen de
datos, solo podemos mostrar los
códigos postales en el último nivel
de un árbol.
Rangos de CPs para N1_2
- 1776-1776
- 1789-1789
- 1801-1804
- 1805-1807
- 1809-1809
- 1811-1813
Transit times are set per destination, the days a service takes, with a switch to use the predictor.
Carrier: Mel01Servicio: Express
A facility’s page counts its connections as active, in approval or inactive.
Estación: MXCD01Tipo: Fulfillment Center
CPT02:00
19:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT02:00
19:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT02:00
19:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
CPT11:00
18:0015:00 horas
06:00 horas
Each connection runs on a schedule: departure, processing time and middle-mile speed work out the arrival. Every weekday takes its own rows, a lot of rows to fill in for one connection; the schedule can also be loaded for the whole week at once.
Horarios del tramo
Cargar masivamenteCargar horarios masivamente
Definí para qué días se crearán los horarios
And a special date excludes schedules or changes processing times for a period.
Selecciona el facility
Selecciona las canalizaciones que vas a modificar
¿Qué vamos a hacer?
Información adicional
- Estado
- Habilitado
- Creador
- Federico Kotek
- Fecha de creación
- 30/04/2020
The people who knew the network
Each region worked in its own way. Address fields are not the same in Argentina, Brazil, Mexico and Colombia, and what each country wanted from its routing was different too, as the routing case shows. The people who knew those differences were in the regions. So we moved the work to the people who actually knew each part of the network. The information architecture is built around roles. Setting up a facility went from eleven days to under three hours.
What a region changed went to approval. A region could create a zone from a spreadsheet, and the screen is plain about its limit: the template can’t be edited online, so you re-import the file (yes, really).
Creá la zona de transporte mediante una planilla
Descargar planilla excel
Podés descargar una zona de transporte ya creada o un template si querés crear una nueva.
Subir planilla excel
Vas a subir el archivo que editaste y podrás crear una zona de transporte.
Adjuntá o arrastrá tu archivo.
Tu zona de transporte se procesó con
éxito, revisala antes de enviarla a aprobar
Si la aprueban, tendrá:
- 4 nodos
- 24 códigos postales
Whoever sent a change was told in a notification when it was approved or rejected.
Notificaciones y Alertas
ConfigurarYa podés ver el detalle de solicitud completa
rechazada, revisala y volvé a enviarla para continuar
usuarios específicos
Whoever had to approve it was asked by email.
Tenés una aprobación pendiente
Detalle de cambios de capacidad:
Solicitante del cambio:
- FKotek
Transportadora:
- Mercado EnvíosID: 03030456
5 Servicios modificados de DH:
- MEL DistributionID: 158182
- MEL ExpressID: 158182
- MEL StandardID: 158182
- MEL BulkyID: 158182
- MEL DCID: 158182
3 Servicios modificados de EDD:
- MEL DistributionID: 158182
- MEL ExpressID: 158182
- MEL StandardID: 158182
Modificaciones totales:
- 127 Tzones modificadas
En caso de haber algún error, por favor contactate con el equipo de desarrollo aquí
Por favor, no respondas a este mensaje. Te enviamos este e-mail porque es parte de un proceso
automático de aprobaciones.
Specs for thirty developers
I was the only designer working with thirty developers, so I couldn’t be in every conversation. Instead I wrote very detailed specs: the structure of every table, every state a configuration can be in, and what happens on every click.
The capacity table below is rebuilt from one of those specs, and it works: try adding a destination.
Carrier: Mercado Envíos
| Destino | Cantidad máxima de paquetes por día | |||||||
|---|---|---|---|---|---|---|---|---|
| Lunes | Martes | Miércoles | Jueves | Viernes | Sábado | Domingo | ||
| Todos los destinos | Sin límite | Sin límite | Sin límite | Sin límite | Sin límite | Sin límite | Sin límite | |
| TODOS > COB_SMX1 | 25000 | 25000 | 25000 | 25000 | 25000 | 25000 | 25000 | |
| TODOS > COB_SMX2 | 8450 | 8450 | 8450 | 8450 | 7250 | 7250 | 7250 | |
| TODOS > COB_STL1 | 3900 | 3900 | 3900 | 3900 | 3900 | 3350 | 3350 | |
| TODOS > COB_SPB1 | 3900 | 3900 | 3900 | 3900 | 3900 | 3350 | 3350 | |
| TODOS > COB_SVR1 | 3900 | 3900 | 3900 | 3900 | 3900 | 3350 | 3350 | |
|
TODOS > COB_SSP1 TODOS > COB_SSP2 TODOS > COB_SSP3 TODOS > COB_SSP4 TODOS > COB_SSP5 Ver el árbol de zonas de entrega |
Sin límite | Sin límite | Sin límite | Sin límite | Sin límite | Sin límite | Sin límite | |
Capacity is the most packages a service takes per day, set per destination and per weekday. One row for all destinations sets the default, and a row below it overrides that for a single zone, found by searching the active transport zones or by opening the zone tree. The table is 1200 px wide, with a 60 px header and 48 px rows, because the spec gives the developers the measures as well as the behaviour.
A configuration is in one of three states. It is active when it is finished and can be used. It is waiting for approval after the user has sent it, and then it can’t be modified while it waits. It is inactive when there is no configuration for the coverage you selected. Those definitions are written on the spec page, so every developer builds the same three.
What changed
GT was complex work to get right with a new team, and I think today it could be done a little more efficiently. The part I would keep is the specs: with thirty developers and one designer, they were how the design reached the conversations I was not in, down to the three states, written once so every developer would build the same ones.

Federico