Le choix de routage domine toutes les autres décisions architecturales dans un agrégateur de livraison, car les retards de livraison étaient exactement le problème que le client nous avait engagés pour corriger. Nous avons opté pour une couche de routage multimodal sur mesure plutôt qu'une seule API de directions standard, car la même carte produit des itinéraires optimaux fondamentalement différents pour un coursier à pied, un vélo, un e-scooter et une voiture. Chaque mode obtient son propre profil de vitesse et modèle de coût aux tournants, et le dispatcher évalue les coursiers candidats par temps d'arrivée estimé, charge actuelle et adéquation du mode à la distance de livraison — puis se ré-optimise continuellement à mesure que de nouvelles commandes entrent dans la file. Une API de directions grand public brute, par contraste, suppose un seul mode de déplacement par requête et n'a aucune notion d'équité de dispatch ou de charge de flotte, de sorte que toute promesse honnête de ponctualité doit être raisonnée dans notre propre couche. Nous utilisons des fournisseurs de cartographie pour le graphe routier et piéton sous-jacent et appliquons notre logique de scoring et de dispatch par-dessus, ce qui maintient le moteur de routage portable dans les villes américaines et européennes sans réécrire le dispatcher.
Les SDK de livraison en marque blanche standard ont été éliminés tôt : leurs heuristiques de dispatch sont opaques, leurs modèles de temps de déplacement supposent des flottes uniquement automobiles, et leurs conditions de licence rendaient le modèle de compte trilatéral difficile. Développer le moteur de routage nous-mêmes sur des standards ouverts signifiait que l'ensemble du chemin — catalogue, panier, dispatch, application coursier — est un système cohérent et possédé, livré dans le cadre de notre pratique de développement de logiciels sur mesure.