The Client has an online store with 200 000+ books and an own publishing house opened in the early 90th. Now millions of readers from all over the world choose the online store to buy the books.

    Project idea

    To automate the Client’s delivery service

    The Client has its own online orders delivery service.

    Before the release of the app, it used to work as follows: at the start of each shift, couriers would give an account of all the orders they had delivered the day before, hand in the money they had received from clients, and receive a new delivery slip with the list of orders to be delivered. The hard copy document flow made it impossible to manage the delivery service effectively. The delivery data  did not appear in the system until the next day. Meanwhile, as the shift went by, there was no way to know where the couriers were, whether they delivered the orders on time and how many orders they had delivered so far.  

    The customers didn’t find the system convenient either. They were unable to pay for the orders with a credit card or change the delivery time. 

    The online shop needed a new solution to automate the process of delivery, making it transparent and manageable for all parties involved — customers, couriers, and managers.

    Challenges and solutions

    Working offline

    The key feature is that the app works without the Internet connection and properly functions offline so that a courier can deliver an order even if there is no coverage in the area. 

    For this purpose, we’ve implemented a data storage and synchronization mechanism. All deliveries are stored in a local database. They get there as soon as the courier presses the HAND OUT ORDER button. If there’s no connection to the server at the moment, the unsent data are flagged. As soon as the signal is back, the data are synchronized, and all unsent data go to the server.

    In the meantime, couriers can use the app to change the status of an order, swap the deliveries around, cancel an order or mark it as paid. Whenever the signal is back, the notifications rush into the system, and the data are synchronized.

    Planning the routes

    The app can build a route for a courier taking into account delivery time for every order and traffic situation.

    For a courier, a user journey looks as follows. Couriers receive their lists of orders. They can then plot a route based on the addresses in the lists: the app was initially integrated with a navigator, and later on, we added a routing service. Now the route depends not only on delivery times but the current traffic status as well, helping couriers get around traffic jams and road repairs. Thanks to that, couriers can take shorter routes and deliver more orders in one shift, reducing corporate expenses.

    Changing order status and content

    When a client refuses to accept an order, the app records it and makes immediate changes to the courier’s route.

    The new automated delivery service system consists of a mobile app for couriers and an admin panel where managers register the couriers and their mobile devices and create route sheets. Couriers don’t need to log into the app — it connects to the system using a device ID. 

    To connect the app to the admin panel, we built a middleware web service using a standard REST API. This service processes the json files uploaded from the Client’s database. 

    As the orders get delivered, couriers change the status, marking them as delivered or canceled, and update the route. The app also enables couriers to change delivery dates, make a partial refund or change courier schedule.

    Couriers can go to the ACCOUNT tab to check the number of orders they delivered and the TOP 5 couriers with most deliveries.

    The app is integrated with the online shop and customers can now get prompt updates on the status of the orders in their accounts.

    More about project

    Design and development

    The Client came to us with detailed technical specifications and his own design. 

    First, we went over the existing workflow of the delivery service. With that in mind, we integrated the courier database with a web service. It took us 6 months to build an app that took every aspect of the current business process into account.

    The first design was created for tablets. After that version was released, it turned out that couriers found it difficult to work with tablets: they would drop and smash their devices and often forget them at the customer’s location. As a result, the online shop decided to exchange tablets for smartphones. So we took our tablet app and redesigned it for smartphones. All the essential elements and logic of the app stayed intact.

    One of the Client’s key requests was to keep the app very simple and intuitive to make onboarding easier for couriers. With that in mind, we made the buttons large and bright, with only one action (hand out order, cancel, or receive payment) assigned to each. We decided, for example, that when an order is paid in cash and change is required, couriers should enter as few digits as possible. We added nominal values of all existing bills to the screen so that couriers only need to tap on the ones they’re given – the app calculates the change itself.

    Payment made easy

    In this app, we implemented payment by card via NFC. Thanks to that, couriers no longer need to carry a large PIN pad around with them — all they have to do is install a special banking app. Clients simply need to touch their phone or plastic card to the courier’s mobile phone and their payment is received.

    Route — Courier’s younger brother

    After the Courier was released, our Client decided to implement a similar app for drivers delivering orders to pick-up points. We modified the code of the courier app to meet these requirements but used a different data structure because drivers deal with large groups of orders. In this app, drivers can view destination points and consolidated lists of orders with names of clients specified. They don’t need detailed order information or payment capabilities. Whenever drivers need to deliver orders or cancel delivery, they simply choose between two buttons — CANCEL or HAND OUT.


    We’ve built a native app for the online shop couriers. At first, it only worked on a single model of a tablet that our Client provided to his employees. Later on, the company got a mobile app for Android smartphones.

    The system helps couriers boost their performance and offers greater value to the bookstore customer.

    Couriers can now plot optimal routes and deliver 20% more orders in a single shift. Thanks to the app, they now spend less time collecting the orders from the distribution centers and delivering them to clients. 

    The couriers’ performance can now be rated and compared by corporate management. Based on this data, the Client came up with an incentive program and regularly updates the rating of their best employees. Whenever they need to, distribution center managers can see where a courier is, which orders have already been delivered, and how much money has been received. 

    Ever since the app was launched, our Client has significantly reduced its paperwork: there’s no need to print out delivery slips, which both saves money and makes the business much more eco-friendly. 

    Customers now find the online shop services more convenient. They get automatic updates on the status of their orders and can pay with a credit card. Thanks to automation, orders take less time to deliver. 

    Based on this app, our Client decided to build another service for his drivers delivering the orders to pick-up points. This app puts together a list of orders to deliver, enables drivers to plot a route, confirm delivery or cancel an order.

    We had already been working with Surf: they built our core mobile app, an online shop, and were following up on those. That’s why we didn’t think twice about the contractor for our delivery system. The Surf team actively engaged with our developers, speeding up our progress. Moreover, Surf was often proactive, suggesting interface improvements as well as the format and process adjustments to accommodate the mobile interface.

    Head of Mobile Development, Product Manager

    Contact us
    Let’s discuss your project together
    CEO photo white

    Vladi Makeew

    CEO of Surf
    Drop a file here or click to upload
      Hidden span