Coop’s car lottery quickly gained customers’ approval, offering them a chance to win something big and coveted for a simple trip to the store. However, the huge prize was limiting the pool of potential winners, so Coop decided to introduce a new way for customers to win a different kind of prize – the Coop Loto. The retail store chain chose Uptime as its development partner for the new complex and multi-faceted lottery system.
Coop’s business objective was to create a new bonus system where customers could choose to collect lottery tickets instead of bonus money for bonus points earned on purchases. The new lottery microservice had to be integrated with the CRM, the POS system, the receipt system, Coop’s online shop and a number of other software solutions in order to ensure that the system runs smoothly, to make lottery administration as easy as possible and to provide customers with a complete overview of what is happening with the lottery and their lottery tickets at any given moment.
“Of course, a robust lottery engine is also part of the system, which actually picks the winner at the right moment. We had to keep a wide range of nuances in mind when we created it. Unfortunately, we can’t go too deep into it,” commented Kädi Keinast, Team Lead at Uptime.
Taking into account the specificities of the lottery system and what had been created previously, the new lottery microservice was built on top of .NET Core and MS SQL database. With this approach, it was possible to ensure smooth and fast operations, convenient administration and a well-functioning API interface.
“Broadly speaking, we can talk about Coop Loto development in terms of four major areas – lottery administration, lottery engine, wallet, and interfaces,” Keinast explained. “Each of these required a slightly different approach and presented different challenges, both because of the complexity of the system itself and the scale of Coop.”
In order to organise the lotteries, Uptime created a new lottery module in Coop’s CRM, where new lotteries can be created, prizes can be assigned, previous lotteries and winners can be viewed, and anything else Coop staff may need can be managed.
Customers have to give their consent to join the lottery, which can be done through API interfaces in the self-service environment on the web, in the self-service checkout of the store and in the regular checkout – in total, four different checkout systems and around 320 stores are connected to the lottery. After a purchase has been made, information on the number of bonus points and lottery tickets the customer has accumulated is included on the receipt.
“The information has to reach the receipt within milliseconds, which means we had to create a solution that was agile enough to prevent the lottery module from slowing down the generation of receipts,” said the team leader. “In the same way, we developed a stop-system, which allows you to stop the lottery offer at the checkout with just one click. This means that in the event of any problem or unexpected event, new subscriptions can be temporarily paused without affecting the rest of the system.”
As the same information is visible in several different services, the development also had to ensure that the data is synchronised and the same amounts are displayed everywhere. This avoids situations where one number is displayed at the bottom of the receipt, but a different number is displayed when logging into self-service.
As the lottery and bonus points are calculated on a monthly basis, the system also includes a virtual wallet to transfer the balance of bonus points from month to month. If a lottery ticket costs 50 bonus points, it is possible that at the end of the month the customer will have 30 points left over and will not receive a new ticket. However, the points will not be removed, but will be carried forward to the following month.
“The lottery system and the use of bonus points also had to deal with a number of smaller issues,” said Keinast. “For example, minors cannot take part in the lottery, but their customer card can be linked to their family account; legal entities and Coop employees cannot take part in the lottery; the calculation of bonus points is different for birthdays; and there are different levels for collecting bonus points, which are constantly changing over time.”
Despite the complexity of the system and the various challenges, the process of bringing the lottery live went smoothly.