Picnic, a forward-thinking online supermarket, aspires to be the "modern milkman," catering to customers with busy schedules and young children by delivering daily and weekly groceries. Operating from large distribution and fulfilment centres as well as local hubs, the distinctive sight of their Electric Picnic Vehicles (EPVs) is a common occurrence on city streets, particularly in residential areas.
Given the emphasis on delivering high-quality and fresh products, Picnic places a significant importance on rigorous quality checks before picking and delivery. Joining their team of excellent engineers, we were immediately struck by the exceptional character of Picnic's codebase. Compared to many other companies, the code behind Picnic services is first-time right, very intuitive, surprisingly well documented and with very high standards set up by various platform teams.
The primary goal of our project was to enhance Picnic's automated warehouses with a cutting-edge quality check feature and to improve the Quality of Service. Distinctively different from manual warehouses, where all products are visible and accessible like in a regular store, automated warehouses have storage areas / “shelving” for goods which are only reachable with machines. The point was to make them up to par with manual warehouses as far as ease of the quality checks was concerned. We approached this in four key stages:
- Selecting products for QC, and marking the right stock totes (crates) containing those products.
- Ensuring that the marked totes were efficiently routed to the so-called goods-to-person (GTP) stations and back to the storage area to await further picking.
- Empowering operators to perform quality checks and preventing the totes marked for QC from being selected for delivery in the meantime.
- Analysing quality check results and determining the next action for the checked stock.
Our solution was built into an existing Java/Springboot application with Picnic-specific enhancements, using RabbitMQ for asynchronous communication between the low level transport system and the analytics domain, and RESTful APIs for station interaction.
Naturally, challenges emerged during the project, with two major decisions to be made. First, we had to determine whether the quality check should occur as part of the issue handling and rework process or at a dedicated control check process, balancing dedicated quality of service expertise, picking capabilities, and operational complexity. Second, we needed to establish a prioritisation mechanism for totes marked for QC, ensuring they are handled in a timely manner, don’t significantly hinder the picking process, don’t overflow the various conveyor loops, and are sent to the rework station closest to the tote.
An interesting aspect of this project was the independent work of the four teams involved (UI, analyst and two backend teams). They operated separately most of the time, coming together at the go-live stage. This level of autonomy was feasible because each team had a clear understanding of the goals of the project, the functional and the technical requirements as well as their respective responsibilities. The go-live phase served as a significant test of this approach, and it was executed seamlessly, with only minor misalignments. Today, the new Picnic Quality Check process is in active use, and the feedback we receive is overwhelmingly positive.