Client
The client has an online store with 200,000+ books and has owned a publishing house since the 1990s. Today, millions of readers from all over the world choose the online shop to buy books and stationery.
Project idea: Delivery service automation
The client has its own online order delivery service. Before the new app release, it used to work as follows: at the beginning of each shift, couriers reported on all the orders delivered the day before, turned in the money customers paid, and received a new list of orders.
The paper document flow impeded the delivery service. The data wouldn’t appear in the system until the next day. Meanwhile, there was no way to know where the couriers were during the shift, whether they had delivered the orders on time, or how many orders they had delivered so far.
Customers didn’t find the system convenient either. They were unable to pay for the orders by credit card or change the delivery time. The online shop approached Surf as it needed automation software solutions to optimize the delivery process, making it transparent and manageable for customers, couriers, and managers.
Challenges and solutions
We needed to automate and facilitate the delivery workflow. Therefore, the app had to be accessible, no matter the conditions, and its route builder had to create optimal routes.
Offline mode
The app’s key feature is that it properly functions offline so that a courier can deliver an order even if there is no coverage in the area.
We’ve implemented a data storage and synchronization mechanism to handle offline work. A local database stores all deliveries. An order is delivered as soon as the courier taps the Handle Order button. If there’s no connection to the server, the unsent data is flagged. Once the signal is back, the app synchronizes the data, and all information goes to the server.
In the meantime, couriers can use the app to change the order status, swap deliveries around, cancel an order, or mark it as paid. When the connection is back, the notifications rush into the system, and updates apply.
Route planning
The app builds routes for couriers, taking delivery times and road traffic into account. It initially had a navigator integrated — we’ve also added a routing service.
Now couriers can plan routes based on the addresses in their order lists. The route depends on delivery times and current traffic conditions, which helps couriers avoid traffic jams. As a result, couriers take shorter routes and deliver more orders in a shift, reducing the company’s expenditures.

Changing order status and content
Couriers can mark orders as delivered or canceled, and the route will update. If a customer doesn’t accept an order, the app records this and makes immediate changes to the courier’s route. The app also allows couriers to change delivery dates, issue a partial refund, or change the courier schedule.
The new automation software solutions include a mobile app for couriers and an admin panel for managers. Managers use this panel to enroll couriers and their mobile devices and create route sheets. Couriers don’t need to memorize credentials — the system logs them in using the device ID.
The admin panel connects to the app via a middleware web service. We’ve built it using a standard REST API. This service processes the JSON files uploaded from the client’s database.

Couriers can go to the Account tab to check the number of orders they have delivered and the top 5 couriers with the most deliveries.

The app is integrated with the online shop, and customers receive instant updates on the order statuses in their accounts.
Design and development
The client had their own design and detailed technical specifications for the business automation software solutions they wanted.
We walked through the existing workflow of the delivery service. With this 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 tablet-oriented. After that release, it turned out that couriers found tablets inconvenient: the workers often dropped and broke their devices or left them at customers’ locations. As a result, the online shop decided to replace tablets with smartphones. We redesigned our tablet app for smartphones, keeping the essential elements and logic intact.

The client emphasized that the app should be very simple and intuitive. It had to be beginner-friendly. With this in mind, we made the buttons large and bright, with only one action assigned to each: for example, hand out, cancel order, or receive payment. We also decided that if a customer pays in cash and a courier needs change, they should enter as few digits as possible. We added all available bill values to the screen so that couriers only need to tap the one they get — the app calculates the change automatically.

Payment made easy
In this app, we’ve implemented NFC card payments. Thanks to that, couriers no longer need to carry a large PIN pad on them — all they have to do is install a banking app. Customers simply touch the courier’s mobile phone with their phone or plastic card to pay for the order.

Route — Courier’s younger brother
After we had released the Courier app, our client decided to implement similar business automation software solutions for drivers who deliver orders to pick-up points. We modified the courier app code to meet the new app requirements and used a different data structure because drivers deal with larger amounts of orders. In the app, drivers can view destination points and general order lists with customers’ names. They don’t need detailed information or payment options. Whenever drivers need to deliver or cancel an order, they simply choose between two buttons — Cancel or Hand Out.

Results
We’ve built a native app for the online shop couriers. The first version was designed for a specific tablet model our client provided to their employees. Later on, the company decided to switch to BYOD (bring your own device), and we’ve developed a mobile app for Android smartphones.

The system boosts couriers’ performance and offers greater value to the bookstore’s customers. Couriers can now plan optimal routes and deliver 20% more orders in a single shift. Thanks to the app, they now spend less time collecting orders from the distribution centers and delivering them to clients.
The app enables corporate management to rate and compare couriers’ performance. Based on this data, the client came up with an incentive program and regularly updates its employee rating. Distribution center managers can monitor where a courier is, which orders have already been delivered, and how much money has been received.
Since the app’s launch, our client has significantly reduced their paperwork: printed out delivery slips are no longer necessary, which saves money and makes the business much greener.
Customers find the online shop services more convenient as well. They get automatic updates on the order status and can pay with a credit card. Thanks to software automation solutions, orders take less time to deliver.
Our client liked the app and has decided to build another service for their drivers. The app compiles a list of orders to be delivered and allows the driver to plan a route, confirm a delivery, or cancel an order.
Head of Mobile Development, Product Manager