System support for eshop’s in-house transportation

The Czech e-shop features furniture and home decorations, but they did not have control over the last touch point with their customers - delivery. In early 2020, they came to us with a very straightforward request: software for their own transportation in Prague and the surrounding area. The deadline? Four months.

bonami logo
Business
For developers

Complex solution for Bonami’s in-house delivery scheme

Quick proof of concept

Iterative development

On-track budget

Fast and timely project delivery

Jan Klička photo

"This service delivers one of the best service experiences available in the furniture market for our customers, as the convenience of choosing the exact delivery range is still not common.

The ability to take away old furniture and install new furniture in one visit by our couriers is absolutely key and unique. We are happy we could offer these services thanks to Cookielab, who prepared the software solution for us.”

Jan Klička

Chief Logistics & Stores Officer

The Challenge

Bonami is well known for their premium brands, design, and customer service. However, until 2020, they had been using 3PL services for deliveries of larger items like furniture, and didn’t have control over this crucial part of the customer journey.

Bonami faced too many complaints regarding deliveries, so they decided to introduce their own transportation service and offer premium services like assembly, installation, and the possibility for the customer to choose the time range for the delivery. They had the drivers and workers, they had the vans, but they needed a system to support calculating the routes, availability and capacity of the vans.

The Solution

Our relationship with Bonami goes back to 2018. They know we have the experience in logistics and a certain enthusiasm for a good challenge.

We put together a complete solution that included warehouse reservations, capacity calculations, and an app for drivers, that all combined existing tools and our own tech stack. Our solution was designed to plan the ideal route based on several criteria:

1

Van capacity calculation

How many packages can be taken from the warehouse to customers

2

Ideal route planning

What is the best sequence of customers

3

Time needed for delivery

4

Additional services

The solution takes into account all of the above, calculates the route of each van, and is fully integrated into the company's warehouse system. Part of our job was also to change the process on the web, especially the order form.

We had to create the complete user experience and lead the customer through the whole process, from the service choice, through time slot reservation, to calculation of the price. We also integrated our solution with the app for drivers.

The new system is sustainable, scalable, and will help Bonami grow. We are happy that they chose us as their partner

The Future

Working with the Bonami team, we plan to expand this solution to other subsidiaries and locations. For the Slovakian and Hungarian markets, we delivered translations and modifications to the system based on different logistics operations.

In addition, more cities in the Czech Republic can look forward to special care from their favourite e-shop.

At the end of 2020, we added a new feature that allowed customers to choose their preferred time of delivery by themselves, and we are happy to extend the solution as Bonami will expand it further.

Software Development hero image - monitor

Background story

A few weeks after go-live, we had to deal with some orders that had been finished by customers but were not displayed in the system. The client checked everything, we checked everything, and all processes seemed to be running smoothly.

Eventually we checked the number of rows for orders, and found that we had underestimated the interest in the delivery and limited the number of orders in the system. After we cancelled the restriction, the deliveries were no longer waiting.

System support for e-shop’s in-house transportation

The Czech e-shop features furniture and home decorations, but they did not have control over the last touch point with their customers - delivery. In early 2020, they came to us with a very straightforward request: software for their own transportation in Prague and the surrounding area. The deadline? Four months.

bonami logo
Business
For developers

Optimized integration with other systems

Special solution for DB management

Development of turn-key solution for delivery slots capacity calculation

Fast and on-time delivery

Sustainable product ready for future scaling

Jakub Kohout - CO-Founder

"Every time we see Bonami’s vans going to customers, we are pleased to be part of their journey. Thanks to our experience in the logistics industry, we were able to develop a high-quality turn-key solution for delivery slot capacity calculation relatively quickly. The new system is sustainable, scalable, and will help Bonami grow. We are happy that they chose us as their partner."

Jakub Kohout

co-founder Cookielab

The Technical Challenge

To incorporate the logistics system to the existing stack more easily, we wanted to use technologies Bonami already had, like GraphQL. We wanted to use schema stitching/federation to mesh the new service with the existing gateway, which was written in Scala using Sangria for GraphQL. Unfortunately, Sangria did not support integration at the time of the project's initial phases.

The next challenge was the database. One requirement was that their “power-user”, with knowledge of SQL, had to manage the system.

We decided not to implement any admin interface, and granted the “power-user” access to the DB directly. However, as the system grew, we needed to make sure the “power-user” could not possibly disable the whole service.

One key phase of this project revolved around calculating slot capacity. Bonami wanted it to be as easy as possible for its customers to order additional and more complex services, and the company needed to be able to schedule and manage capacity.

The Technologies

In-house @ Bonami
Our choice

The Solution

We intended to use schema stitching/federation to mesh the new service with the existing gateway, but Sangria did not support this kind of integration. We ended up writing it manually in Scala using a Caliban client. Thanks to the ongoing development of GraphQL for Node.js — the most widespread ecosystem — we were able to deliver a solution that will be sustainable well into the future.

To avoid issues with database access, we applied multiple DB constraints using PostgreSQL. This provided us with a powerful base line. We also implemented tests to make sure the constraints would behave as expected.

This approach simplified our application code that could depend on having consistent data. Later, we added some GraphQL mutations to make these changes without the need to use the database directly.

However, this solution proved to be the best from a cost/benefit perspective at the time.

For slot capacity, we developed an algorithm that rated every part of the delivery process (e.g. travel, assembly, payment to the driver) with “points”. Think of it like the points system used in agile for tickets — the capacity of each delivery slot was defined in the same “points”. In the middle, there were configurations (managed by the system’s admin) and our algorithms to calculate actual delivery capacity utilization.

The calculation was done on-demand, and was optimized to work that way. Using pre-calculated data was also an option, however, that would open more issues that would need a solution.

The new system is sustainable, scalable, and will help Bonami grow. We are happy that they chose us as their partner

The Future

Working with the Bonami team, we plan to expand this solution to other subsidiaries and locations. The logistics system we created is a strong base for Bonami’s business plan, and gives them the space to expand on their own terms and according to their schedule.

We also plan to cooperate on modifications specific to new locations or services (like specific address formats, for example).

At the end of 2020, we added a new feature that allowed customers to choose their preferred time of delivery by themselves, meaning we had to modify the delivery slots capacity calculation algorithm. We also closely cooperate on the system’s optimization and new requirements.

Software Development hero image - monitor

Background story

A few weeks after go-live, we had to deal with some orders that had been finished by customers but were not displayed in the system. The client checked everything, we checked everything, and all processes seemed to be running smoothly.

Eventually we checked the number of rows for orders, and found that we had underestimated the interest in the delivery and limited the number of orders in the system. After we cancelled the restriction, the deliveries were no longer waiting.

or
...your career.
Check our job openings
By clicking “Accept”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.