Существует 2 типа агентов: пользователи и хранилище. Через хранилище пользователи узнают друг о друге и продолжают общаться напрямую.
Так же пользователь получает от хранилища его местоположение и расчитывает по поти ли ему, если да, то он просто ждёт заявок на доставку от других и отвечает за сколько он готов их перевезти. Если же не по пути, то он сам отправляет заявки всем кого он знает на перевозку.
Заявка состоит из конечной и начальной точки обычного маршрута пользователя, исполнитель выбирает до какой точки ему дешевле доставить посылку. Стоимость определяется разницой между длиной его текущего маршрута и маршрута с учётом новой точки. Кроме того, пользователь который осуществляет доставку посылки может разбить заказы на несколько дней, если так будет меньше цена.
При получении заявки на доставку, пользователь отправляет в ответ цену. По таймеру заказчик обрабатывает все полученные предложения цены и выбирает лучшее. Если предложений нет, или нет предложения, которое по стоимости меньше его затрат на доставку, то он ожидает новые предложения, пока они не перестанут поступать хотябы раз в 2 секунды, после чего он решает везти самостоятельно.
Если есть хорошее предложение поользователь отправляет запрос и включает таймер, по истечении которого он повторяет запрос, если спустя 3 запроса доставщик не ответил, то повторяем процедуру выбора предложения. Если доставщик ответил, и согласился, то всё ок мы закончили, от своего маршрута не отклоняемся, если доставщик не согласился, повторяем процедуру выбора предложения.