Problem Statement
A crowdsourced inter-city delivery app. Through this app, people can send/receive lightweight packages to/from different cities with the help of willing travellers (think flights, trains and overnight buses).
For some more context here’s a happy flow:
Sender raises a request on the app to send a package from Bangalore to Pune.
App sends out a request to willing travellers who are on the platform.
A volunteer who’s travelling to Pune accepts the request.
Sender and the volunteer chat about the details of the package.
Sender pays 100% of the delivery charges upfront. 50% is immediately transferred to the volunteer as an advance fee.
A Delo partner picks up the package from the sender and delivers it to the volunteer’s address in Bangalore at the time agreed upon.
Once the volunteer reaches Pune, a Delo partner will be allocated to receive it from the volunteer. 50% of the sender’s fee is credited to the volunteer.
The Delo partner delivers the package to the sender's intended address in Pune.
Research & analysis
Problem validation
People need to send some items intercity and need someone to provide this service as they can not travel everytime. We already have players like delhivery, ship rocket, Indian rail cargo, Indian post, air cargo, many offline players etc. Let’s look at the existing solutions first.
Other ways to fulfill the use case
Indiamart, justdial etc partners
Trust
Poor customer support
Scams and take advance payment and then never pick up the parcel
Time consuming
Negotiation
Takes longer time to deliver
Sometimes damaged parcels are delivered
Costly
No shipment tracking
Delhivery, shadowfax, DTDC, etc
Poor customer support
Often late pick up & delivery
No flexibility of choosing pickup time(mostly)
Costly
Sometimes damaged parcels are delivered
Extra payment from damage/loss protection
Offline partners, bus operators etc
Trust
Time consuming
Negotiation
Takes longer time to deliver as they wait to bundle requests for efficiency
Costly
Sometimes damaged parcels are delivered
No shipment tracking
Indian post, rail cargo, air cargo etc
No door to door pick up & drop
No damage/loss protection
No real time shipment tracking
Poor customer support
Friends & family traveling
Cheapest
Not always available option
Do we still need new player? What users say?
I also interviewed 9-10 of my friends, family members and did small survey in some communities I am part of to understand the user base well.
Pain points
Costly options
Trustworthy option
Time consuming process
Longer time to deliver
Scams
No urgent pickup and drop
Poor customer support
Delayed Deliveries
Lack of Real-time Tracking
Uncertain Delivery Timeframes
Fragile Item Handling
Why crowdsource platform?
Cheaper than traditional methods
Minimizes the delivery time
Reduces the transportation and infrastructure cost
Other examples of successful crowdsourcing platforms - AirBnB, turo ( car rental ), taskRabbit ( any task), etc
Challenges
Unlawful items exchanges
Damage or loss of products
Balance of demand and supply
Are users ready to trust strangers with their packages?
Here are some example of the requests of sending packages I found in different communities, from friends, etc. I also remembered, In college we used to ask each to bring each other’s things when visiting hometown. That’s how I and my friends got cash from home when demonetization act was introduced.
Assumptions
DeLo has operations pan India and we will not get into any operational details for this case study.
Payment gateway integration with razorpay.
User persona
From the user research I found these important user segments: senders, carriers, receivers and delivery partners. Since we are not going to consider operations, we will skip the delivery partner persona here and de-prioritize the receivers persona for this case study.
Sender
User who is posting the send request is
sender
. Package will be picked up by DeLo partner from sender’s chosen location and delivered at carrier’s location.
small business owners sending product samples across cities, working professionals sending documents or gift or other things, student looking for cost effective solution to bring stuff from home, etc

Carrier
User who is posting carry request is
carrier
. Package will be delivered by DeLo partner at carrier’s pick up address and pickup by another DeLo partner at carriers drop location.Students who are frequently traveling and looking for extra income, frequent travelers who care about carbon footprints, professionals who require traveling for their job looking to earn more and utilize the luggage, etc

Potential Features
Here is the list of potential features
Send and Carry Request Creation: Allow senders and carriers to create and post package/travel delivery requests, specifying the destination, delivery date, and other details.
Real-time Matching: Implement an algorithm that matches sender requests with available carriers/travelers heading to the same destination.
Chat: Provide an in-app chat feature to facilitate communication between senders and carriers for discussing package details, pickup, and delivery arrangements.
Package Tracking: Enable real-time package tracking, allowing both senders and receivers to track the status of the delivery.
Secure Payment System: Integrate a secure payment gateway to handle upfront payment from senders and release payment to carriers upon successful delivery.
Rating and Reviews: Allow senders and carriers to rate and review each other after the delivery, fostering a trustworthy and reliable community.
Identity Verification: Implement a verification process to ensure the authenticity and safety of both senders and carriers.
Active orders: Provide personalized dashboards for senders and carriers to manage their active packages, requests, trips, etc.
Notifications: Send real-time notifications to users regarding new requests, matching carriers, delivery updates, and earnings.
In-app Help and Support: Include a support center to assist users with any issues or inquiries they may have.
Earnings and Payment History: Offer a transparent earnings and payment history section for carriers to track their earnings.
Door-step Pickup and Drop: Enable senders to schedule package pickups based on their preferred time and availability.
Flexibile Pickup and Drop: Allow senders/carriers to choose from multiple delivery and pickup slots.
Data Privacy and Security: Ensure robust data protection and security measures to safeguard user information.
User Onboarding and Tutorials: Offer a smooth onboarding process with tutorials to guide users through the app's features.
User Profile: Public profile view and settings to customize user’s preferences.
User Flow
Design System

Features & Functionalities
Let's deep dive into some of the features & flows.
Log in & Sign up
Objective
Simple and Easy
Minimum options to sign in ( later we can add more )
Let’s look at sign in options :
mobile - easiest, required later, 2step sign in
email - easy but users need to remember the password and we need mobile number later when user wants to send a package
google - one click email sign in with no password required but number will be still required
Mobile number is the most basic and required field so we will start with that. Users also don’t need to remember they need to sign up or login, password etc
Home page
Objective
Teach new users how to use the platform
Core use cases : send & receive easily accessible
Build trust
Here is the first version
What are your thoughts?
Looks very boring
First screen is text heavy
More than one step until user gets to estimate price or earnings
In the screen 2 & 3, not clear how it works section and high chances of banner blindness
and many more..
So let’s improve and test with users till we arrive at something that actually works.
Idea here is to first let users estimate the price and then only ask for person details like full address, contact details, KYC verification etc if they want to continue.
From UT, I also learnt that users don’t want to share personal details until they make decision to send the package with you so estimation right in the home page help in making that decision while user intent is high. It will also help build trust and it is very important for building community.
Here is the latest version
Send package
Objective
Easy and minimal steps for send request
One time verification before publishing the request
Minimize the drop throughout the flow
Idea here is to not to overwhelm user with lengthy form but group similar information. Try to user picture over words where it makes easy for user to understand. Example - package weight field clubbed with box size makes it easy for user to choose.
To minimize the drop there could be various things. Here I wanted to keep the CTA very clear priming user of what is coming next. I also added progress bar to let users know how many steps are there and where are they currently.
It is important for sender and carrier to build trust with each other and one of the ways to do is verify each user before allowing them to post request. It is one time process.
As a business we need to set some guidelines for sending package and make sure users stick to that. So Ask user to declare the category of the items being sent in package which is not violating sender’s privacy and stop any unlawful activity. Next step is to clarify the guidelines and make users agree to that before proceeding.
Pricing
If we already have carriers available for matching most criteria of the send request, we can directly give the price range from there.
If we don’t have any carriers yet then we can calculate from past data or cheapest to costliest travel mode option’s costs.
The same logic is applied to delivery date range.
Here is the first version
What are your thoughts?
Lengthy flow
Address page doesn’t retain information added on home page
Issue in design consistency
Based on the feedback, I started with shortening the estimation process by combining all the parameters required to estimate the price and added in the home page as mentioned above.
Next step is combining the package details and guideline to utilize the space and grouping secondary information related to package.
In the UT I realized many users don’t remember the pincode so updated the home page to take location or pincode as an input and later retain the same information to not to take redundant information from users.
Here is the latest version
Carry package
Objective
Easy and minimal steps for carry request
One time verification before publishing the request
Minimize the drop throughout the flow
As mentioned in the sender’s flow, I tried to shorten the posting request and updated address flow.
Add address
Objective
Save frequently used address for easy access
Retain information to minimize redundant inputs
shortcut for their current location
Google map integration for easy and accurate location
Here if user selects the current address, by default name and number should be filled with user’s data from profile. Allow user to select name and contact from phone for less friction.
Sender & Carrier List
Objective
Easy to choose sender/carrier from the list
Build trust
Important information upfront
For choosing carrier/sender important thing is to make user feel like they are not stranger. Hence we asked for bio in the sign up and we will show the same here.
For sender it is important to know the cost and delivery date upfront while for carrier it is important to know the earnings and package weight.
Active orders
Objective
List of all the active orders with the status
Highlight the action required on user’s side
Notify if there is any update on any order
Easy to identify all the active orders
Considering our persona there can be multiple active orders at the same time so I created the list of card for each active order. Users don’t remember order ids so I boiled down to source & destination, package category, status and expected delivery date to display on the card.
Here is the exploration of different styles
There can be a case where user is carrying the package and sent packages as well. So I added the toggle to easily switch between the two.
From the UT I realized many carriers planned their trip in advanced and were posting carry request early so they wanted to track all the request based on the status or action they needed to take. On the other hand, some senders were flexible with the date of delivery so they just wanted to post a request and wait until they find any carrier. To solve both these need, I added filters. Orders can be filtered based on the status, delivery/pick up date, etc.
When user clicks on the card, package details page with all the necessary information will open. Package details card’s information would vary based on the type of request (send/receive), order status, pending action etc. Here I attached few examples.
Here is the latest version
Chat
Objective
Building trust
Breaking ice between carrier and sender
Easy to find the carrier/sender for all the packages
Biggest worry of user is to send a package with stranger or carry stranger’s packages. Chat give the opportunity to sender and carrier to know each other and freedom to decide if they want to go ahead with the request. Carrier and sender can view each other’s profile which has user name, bio, reviews and ratings which also helps in building trust.
I went a step further to break the ice by sending a default message of package/journey details and adding chat suggestions which helps in reducing the friction to start a conversation.
Here are some explorations.
What are your thoughts?
Clutter
Here one important insight is that requester will be eager to see if requestee is available, when will they respond, any updates on chat etc so they keep checking the chat. First solution is to notify user of updates in the bottom navigation via dot, second is to update in the active package list whenever there is new message. But that did not solve our problem entirely so I added average response time in the chat.
I decided to go with chat style that matched more professional chat apps to unconsciously make users behave professionally and respect each other.
Here is the latest version
Payment
Objective
Various payment options
Easy and fast payment
Clear communication of amount to pay
Profile
Objective
Highlight earnings
Push sender to become carrier as well
All the settings options
Here is the first version
Banner looked more like an advertisement
Here is the latest version
Prototype
Sender Flow - Sender Flow Prototype
Carrier Flow - Carrier Flow Prototype
Edge cases
Sender updates the request after sending it to carrier
Sender will be notified as soon as they update the request with clear message that all carrier might not match the criteria and here are x carrier that now match the updated criteria.
Carriers will be notified of the update and have an option to reject if they want.
If details like delivery date changed which evidently doesn’t match the carrier criteria than carrier will see it as not matching criteria and it will be automatically rejected.
Parcel weight is more than what it was mentioned in the request
This is an operational challenge.
One potential solution is to weigh it at the time of pickup and if it is more than carrier’s limit than ask sender to reduce the weight if possible or reject the pickup and mark request as open.
Sender can be charged penalty for wrong information(violating package guidelines) and reflect the same in the rating.
To avoid this, DeLo need to clearly communicate to user to add correct information and mention in package guidelines about penalty.
Carrier updates the request after payment or cancels the request after pickup
First ask carrier about the reason for update/cancellation and suggest to reschedule if possible in case of cancellation. If this happens again then it should result in penalty and affect the carrier rating to promote good behavior in the community.
Notify sender with the update in app and via SMS and ask if they still want to send package with the same carrier or not.
If there are other carriers who can still fulfill this request, suggest those to sender and also offer refund if they want.
If there is not enough time to find another carrier, offer to send via other delivery partners ( ex - partner with Delhivery to send last minute requests ) and take zero commission for the inconvenience caused.
Carriers are available but doesn’t meet all the requirements
Ask sender wait till reasonable period for more carriers to list and also mention that if no carrier found then they can send it via partner service (as mentioned above).
Show sender a list of carriers who almost meet the requirements and highlight which requirement is not meeting. If sender is okay with some compromise, they can update the request or still chat with the carrier and figure out a way to send a package.
For example - Sender has package weighing 3 kg but all the carriers are willing to take upto 2 kg only. If carrier is traveling by air then weight might be the constrain otherwise they can be open to carry 1 kg more. So sender can chat about this with carrier.
Another example - Sender’s expected delivery date is not matching the carrier’s delivery date. Sender may or may not be flexible with the date and they just chose to send via partner service right away.
Location change after estimation when posting request
If sender or carrier enters the location that doesn’t match the locations entered at the time of estimation when posting request, notify user of location change and show updated cost/earnings and delivery date. Ask user to if they still want to continue with update location and cost/earning.
Payment deadline for sender
Sender will have
Days to pickup from today / 2
days to complete the payment and accept the carrier request. Sender or carrier can cancel anytime between this window without any penalty or affecting the rating.Sender and carrier can opt for SMS notifications for request proposal and confirmation to make sure they don’t miss any updates. This is especially helpful when delivery window is less than 3 days.
If sender fails to pay within this payment window then open both the request for other prospects.
Receiver flow
If receiver is already user of DeLo then they will get notified for the upcoming package and they can see the same in packages tab.
If receiver is not the user then they will receive an SMS with tracking link and other necessary information.
There is a chance that receiver posted the request and the sender ( who is the contact person for package pickup ) needs to notified for the package status. It will remain the same as above.
Receiver not available at the time of delivery
Allow sender to set instruction for delivery like leave with neighbor etc.
In the worst case, sender can ask DeLo partner to try delivering again later.
Damaged or torn package
All the users can always reach out to help center for such cases like damaged package, torn package, suspicious package etc.
Based on the issue, customer service team will provide the solution.
Cancellation (refund) policy
Sender can cancel request any time before carrier is finalized without any cost. Once carrier is finalized following rules will be applied.
Carrier charges cut as part of cancellation charges are paid to the carriers for the inconvenience caused. DeLo only keeps commission.
Sender will not see these complicated terms when reading cancellation policy. They can see this with the date and time time that applies for their request.
Carrier met with accident/did not arrive at drop location or Stolen package
DeLo will help sender with financial loss and any legal help if they want.
Carrier can be banned from using platform forever based on what might have happened.
Future Enhancements
Calendar view: It makes easy to track multiple orders. If orders are scheduled in advanced then it will notify user for any upcoming pickup/delivery.
Carbon Footprint Tracking: Offer a feature that calculates and displays the estimated carbon footprint saved by using the platform for Eco-conscious carriers like Priya.
Multilingual Support: Provide multilingual support to cater to users from different regions of India.
Referral Program: Offer a referral program to incentivize users to invite friends and expand the user base.
Package Insurance: Provide optional package insurance for senders to protect against loss or damage during transit.
Bulk Shipment Handling: Allow businesses to send multiple packages as a bulk shipment for cost-effective delivery.