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.
"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.”
Chief Logistics & Stores Officer
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.
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:
Van capacity calculation
How many packages can be taken from the warehouse to customers
Ideal route planning
What is the best sequence of customers
Time needed for delivery
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.
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.
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.
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.
"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."
co-founder Cookielab
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.
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.
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.
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.