Catering
System for a Catering Company Selling Boxed Meal Diets
One of the main features of the projects we create is the flexibility of the software and the ability to easily modify it. This approach to the software being developed translates into the business success of the companies that are our clients. One of them is a catering company offering the so-called "boxed meal diet." Its main goal is to deliver the highest quality products with exceptional taste, which has resulted in winning all possible competitions and ranking at the top in various rankings. Achieving this goal is possible thanks to the menu prepared by certified dietitians, whose knowledge and skills are confirmed by numerous certificates. At one point, the company realized the limitations of the software it had been using up to that point. Our client wanted flexible software and many solutions unavailable on the market to always be one step ahead of the competition, and as a result, achieve business success.
Goals and Assumptions
The main goal of our cooperation with the catering company was to create flexible software that would include all required functionalities, as well as the ability to implement new elements. One of our client's assumptions is to constantly stay ahead of the competition, which is possible only through the use of dedicated software and automation of certain processes. As the company is constantly growing and the scale of its operations is increasing, a systematic approach and automation of many processes are necessary. Moreover, over time, new requirements for the software gradually appear. None of the solutions available on the market meet our client's expectations, hence the only solution is to create a tailor-made system that will meet all expectations not only at the design and implementation stages of the finished software but also in the future.
The catering company wants to maintain its position in the TOP3 in Poland at all times, and achieving this goal is impossible with the off-the-shelf software our client has been using for the past few years, which does not take into account many market needs and makes it difficult to introduce any modifications. The company also wants to introduce solutions that the competition, relying on ready-made software, does not have, and to make its offer more flexible by adding additional functionalities, including limiting manual control of production.
Design process workflow
Our collaboration process with the client started in an unusual way. We were asked to create two small tools - applications to support customer service and generate labels (stickers) for meal boxes. These tools were needed immediately, so we prioritized their development. In a later stage, both tools were fully integrated into the main application. Meanwhile, we began analyzing the client's needs. They had no previous experience in working on software written "from scratch," so one of the first stages of our collaboration was to provide specific guidance on the software development process. Based on our pro-business approach, we provided the catering company with information on possible solutions to implement and which ideas were completely unprofitable.
We wanted to fully understand our client's needs, so we closely observed their business and its processes. Thanks to this approach, we could suggest ideas based on our observations, considering the requirements for the future software. An essential role in the design process was the creation of a so-called "data model," which included drawing various UML diagrams, among other things, depicting the possibility of easy future development and implementation of additional features. We also wanted to ensure the system was ready for easy integration and changes.
When the application design was ready, we proceeded to program the system. To achieve the best results and give our client real-time insight into the effects of our work, we submitted each created module for testing. This allowed us to fully adapt to the client's expectations. Our approach in this area was characterized by great flexibility, allowing us to achieve subsequent goals, such as implementing the application at different stages of production. As a result, we delivered software to the client that aimed for systematic business value growth and, consequently, increasing revenue.
Each stage of design and implementation of the new system took a significant amount of time. Since time was scarce for our client, we focused on full support to relieve them as much as possible. The next challenge appeared during the implementation of the new software. Our client's company operates virtually non-stop in a 3-shift system - 24 hours a day, 7 days a week, so the introduction of our system had to be smooth and at the most convenient time. Our flexible approach to the client and responsibility for their business led us to switch systems at night when the fewest employees were dealing with the software. These employees were previously instructed in using the system we created.
The scale of the project for dedicated system programming was a challenge for us. Our client wanted the system to be ready as soon as possible, so to save time in creating such extensive software, we used the support of several Software House-type companies as subcontractors in a Body Leasing model. To ensure successful collaboration and meet all quality requirements for the software, we had to verify each programmer and ensure they were working at a high level and following our principles. Synchronizing the entire team in terms of methods and work styles, although time-consuming, resulted in excellent outcomes.
In addition to the software implementation itself, we signed a contract with the client concerning system maintenance and continuous development and support. To this day, we are still adding new features to the application. The client knows that we can introduce any changes to the software, which they use to maintain a competitive advantage. We discuss all ideas, both standard and innovative, evaluate their time-consuming aspects and profitability, and implement them after positive verification or reject them if they do not contribute to business development. In this way, we take on the role of the application's Product Owner, and the client is reassured by our uninterrupted support.
Implemented Solutions
In creating custom software, we mainly relied on the PHP language and two frameworks: Laravel and Vue.js. The application is hosted on VPS servers in one of the large data centers in Europe, which also provides a MySQL database in a cloud architecture. We use several VPS servers, such as development, testing, and production servers, which are configured from scratch by our company. The operating system of the servers on which the software is maintained is Ubuntu LTS. The solutions we used include, among others: NGINX (www server and reverse proxy), PHP-FPM (script handling), UFW + Fail2Ban (firewall).
Another implemented solution, which is of great importance in the constant development of the business, is AI (artificial intelligence) and one of its components, namely Machine Learning. From the very beginning, we designed the application in such a way that it immediately collected data useful for "learning" (data format, scope, minor nuances to remember, which are invaluable for AI). Once we had collected the first large datasets, we began working intensively on implementing AI in every area, so that the client was always one step ahead of the competition.
In this project, as in our others, we conducted an analysis in terms of optimization possibilities using machine learning algorithms. The analysis showed that there are many optimization possibilities, but we focused on two potentially most profitable ones. One of them is demand/sales prediction, which, combined with the offer (menu), recipes, and, above all, ingredients needed for their preparation, allows for placing orders with suppliers in advance, giving significant discounts. The second optimization method is customer service support through the BOK, which is our innovative idea.
System Components and their functionalities
The software we have created is versatile and comprehensive. We designed many modules, including those available to the general public, those accessible only to employees, or only to customers. Each module is appropriately developed, taking into account all the needs of the client. Below, we list the most important system components and their functionality:
Presentation of the offer and handling of customer orders
-
Flexible and modular approach in the application design process
-
Public form provided to the client with appropriate security against so-called "bad traffic"
-
Order cart handling
-
Dynamically generated offer
-
Integration with various payment processors, including deferred payments
CRM module
-
Multichannel customer communication tool
-
Customer service automation, saving several full-time positions in customer service
-
Task management system for employees
-
Integration with internal and external marketing automation tools
-
Loyalty system support with sophisticated ways to generate loyalty points, obtained using advanced algorithms
Customer panel
-
Dedicated tool provided to customers for self-management of their orders; strong security measures are required, but without hindering customers from using the tool
-
Financial modules: sharing information about the customer's financial settlements and accumulated loyalty points with the possibility of using them
-
Functionality for customers to rate meals
Complaint handling module
-
Record keeping
-
Process automation
-
Support in the financial settlement of complaints
-
Advanced reporting
Internal forum, knowledge base, wiki
-
Modules for employees to collect and exchange internal information
-
Appropriate security measures against "leaking" company knowledge
Video sharing mechanism
-
As part of the "Breakfast with ..." program
-
Restrictions on downloading recordings, playback limits, full playback records
-
Motivational program for customers
Territorial units database
-
The company's offer is strictly limited to specific locations (street-level accuracy), and this range is variable
-
The system dynamically verifies whether a particular client can be offered a diet, and if so - what will be the delivery price
-
Integration with transport companies
Kitchen module
-
Advanced production module
-
Database of recipes, ingredients, thermal/mechanical processing coefficients
-
A very advanced system of relations between object classes: full connection from raw ingredients through recipes, dishes, menus to the place where the dietitian can determine if the client has received the appropriate amount not only of macronutrients but also micronutrients (vitamins, etc.)
-
Menu management tool (offer) with a large amount of automation and hints facilitating work
-
Advanced reports individually tailored to each position in the production process
Managerial modules
-
Financial reports
-
Financial forecasts, including demand forecasts
-
Cost and revenue databases - data collected automatically
-
Cash register module
Employee working time records
-
QR code scanner (proprietary solution) reporting for HR and accounting
Warehouse module
-
Fully functional WMS system, automatic unit conversion, supply process support
-
The application is also equipped with many smaller modules and is constantly being developed with new functionalities.
Summary
The comprehensive and holistic approach we applied in this project allowed us to create a dedicated system with many diverse functionalities. Despite challenges arising at various stages of design, programming, and implementation, we have achieved an application that fully meets the requirements and needs of the client. The flexible solutions introduced in the software make it easy to modify and add new functionalities, and the use of artificial intelligence increases the effectiveness of the company's operations. All these elements translate into rapid business development and outpacing competition in every aspect of the company's functioning.