Case study

Carimali: IoT and touchless projects to interact with coffee machines

carimali iot touchless

Carimali is an Italian company that has been manufacturing and exporting coffee machines all over the world since 1919. It is among the few companies globally to produce and offer a complete range of both fully automatic and traditional coffee machines.

In 2016, the Carimali group expanded with a new commercial Business Unit dedicated exclusively to the Italian market. The mission of this new structure is to provide complete solutions of equipment and services within the HoReCa (Hotellerie-Restaurant-Café) and OCS (Office Coffee Service) channels, from installation to machines maintenance with particular attention to the prediction of failures and consequent optimization of spare parts supplies.

One tool to manage them all

In 2017, the CARIcare project was born: the idea was to connect coffee machines to the internet and allow them to send data on their status and activity and be able to receive new configurations, commands or updates.

Carimali involved us in the realization of their project: we started with an MVP where we were managing only one machine model, the BlueDot (which you see on the right). We implemented the functionality of remote beverage customization and the ability to view the most important information about the drinks produced and the anomalies found in the machine.

To date, by breaking down the communication protocol implementation and domain behaviors via a CQRS + Event Sourcing system, we have come to manage eleven machine models!

The CARIcare project in detail

The backend development has a central importance in this project. The system is based on the MQTT protocol, which solves the problem of routing messages by allowing them to be ordered in hierarchically structured channels.

Through a broker, in our case RabbitMQ, the backend communicates asynchronously with the queue of incoming messages to process them and generate the corresponding events.

We decided to use a broker that would act as a translator from MQTT to AMQP given the stability of the latter, the presence of countless libraries that implement this protocol and the possibility to easily migrate to the cloud using managed services, to scale quickly.

The frontend of this project was developed using React, a popular JavaScript library developed by Facebook to create user interfaces. Each component communicates asynchronously with the backend via a REST HTTP protocol.

It is in the backend part of CARIcare that resides all the domain logic for processing data coming from users (HTTP) and coffee machines (MQTT). Currently the stack is composed by PHP, Symfony + Broadway (for the CQRS + EventSourcing part), MySQL (for all CRUD) and MongoDB (for events and ReadModels).

One of the machine status detail screens

REST APIs have also allowed external providers to integrate with our APIs and receive data and information for their management systems, while the frontend as a Single Page Application has dramatically improved the performance of the site, also giving the end user a better and clearer navigation and feedback system.

Touchless solutions: having a coffee without touching the machine

The coffee machine business has slowed because of the pandemic. Both for the lower number of trips, which has led to a decrease in the use of all those facilities that provided service to travelers and that had, among other things, coffee machines. Both for the diffidence in using an object normally touched by many other people every day.

To accommodate new consumer needs, in late April 2020 we thought of leveraging CARIcare’s API system to offer a service through which people could choose a beverage without having to interact with the display, but through their cell phone.

We released the first MVP at the end of the first iteration (five business days). The idea was simple: a QR-Code placed next to the machine, containing a link to the drink selection page. From there, the user could select the drink to be dispensed by the machine.

The company and marketing liked the idea. We received some feedbacks regarding appearance and functionalities: in the next iteration we focused on fixing them. In the third iteration – given the green light from the business to go online – we made it more secure, introducing temporary sessions and expiring links.

After three weeks the result was this:

In the following weeks, by also monitoring usage statistics and based on feedback from some users, we improved error handling and compatibility on various mobile devices.

Currently the tool is online and is used in various parts of the world, including hotels and airports. On average, hundreds of coffees are dispensed by this service every day.

The long-standing collaboration between Carimali and Flowing has resulted in software like CARIcare that is open to change and adaptive. Thanks to our iterative and incremental approach, in the midst of the COVID emergency we were able to go to market with a working product, of value to the user, in a very short time.

As Product Owner of the Carimali IoT platform, I had the opportunity to work several times very closely with the Flowing team. The things I appreciated the most are their ability to deliver value in an efficient way, while maintaining a good flexibility, and their constant critical sense towards the project specifications, through a constructive confrontation that several times played a crucial role in terms of result and cost containment. Personally I could see how consistent they are with their mission and, last but not least, I can say that I learned a lot from their agile working method with continuously improving practices.

Paolo Mantoan, IT Manager Carimali


Andrea Mancino

Andrea Mancino

Ettore Delprino

Ettore Delprino

Simone D'Amico

Simone D'Amico