An app for the client to order car transportation and find carriers, and an app for the carrier to search for orders, conveniently process and manage them.
This is a kind of taxi service but for transporting vehicles, not people. The client places an order, provides details about the vehicle (pickup and drop-off locations and time), and carriers submit their proposals.
In the U.S. market, intermediaries dominate this sector, making it extremely difficult for clients to connect with actual service providers and negotiate directly.
UDecide’s goal is to make this process transparent and secure for both parties.
For additional security, the client’s phone number is used for identification during login, confirmed with a one-time password:
After a simple registration, the client enters the home screen and can create their first order:
The order includes information about the vehicle and where it needs to be picked up and dropped off (currently only postal codes are specified, not exact addresses, for safety reasons).
Additionally, the client can optionally specify the desired delivery date and limit carriers to only a few selected ones they wish to work with.
After placing the order, the client awaits bids from carriers. To make a choice, detailed information about each carrier can be viewed, including their US DOT and MC codes, insurance, reviews, truck photos, etc.:
Once a specific carrier is chosen, the client accepts the bid, providing accurate details of their order:
Upon accepting the bid, the order status changes to “Awaiting pickup”. One day and two hours before the truck’s arrival, the client receives corresponding notifications. Starting two hours before arrival and up to the delivery moment, the client can track the truck’s location on the map. A chat with the carrier is also available.
Right before loading the vehicle onto the truck, the driver, together with the client or their representative, conducts a thorough inspection, and the results are recorded in the application. More details on this below.
Once the vehicle is loaded onto the carrier, the full order cost is charged from the client’s card, which will be transferred to the carrier’s account after order completion.
One day and two hours before delivery, the client also receives notifications.
After completing the order, both parties exchange reviews, and the order is stored in the history:
The carrier’s application is more complex, serving as a complete order management system suitable for both individual carriers with one truck and companies with multiple trucks.
During registration, carriers must provide their details, US DOT and MC codes, upload insurance, and add at least one truck with photos:
After registration and verification (administrators will check the insurance and all added trucks), carriers are prompted to create their first filter for order searching. Each manager of the carrier may have several personal filters. When a new order appears, everyone whose filters it matches receives a notification. Current orders matching the filter update in real-time:
Carriers can view information about orders, clients, and make their proposals:
If the client accepts a carrier’s proposal, the order moves from the “Posted” tab to the “Taken” one, where it can be managed using a Kanban board or a map:
Since adjustments may be needed during order execution (e.g., changes in delivery location and, consequently, its cost), a mechanism is provided. Both parties must accept new conditions.
Right before picking up and delivering the vehicle, a special act is drawn up:
These documents, signed by both parties, detail all existing damages, the vehicle’s equipment, and include numerous photos. This way, damages occurring during delivery due to the carrier’s fault can be identified and compensated.
We developed this product from ideation to launch. Alongside the client, we brainstormed user scenarios, created interface prototypes, wrote technical specifications, designed separate applications for the client (Android and iOS) and carrier (Android, iOS, Windows, and web), an admin panel for content management and support, and the product’s website.
For card payments, we utilized the Stripe payment service.
Technology stack: .NET C# SQL Flutter HTML CSS JavaScript