DDS Wireless · 2013 – 2019
Zoro app
A network, not a fleet.
Zoro is a multi-company taxi booking app. Passengers book regulated taxis from their phones — not from one operator, but from a network of thousands of cabs across every company that joined it.
At a glance
- Role
- Research, interaction design, visual design, prototyping, benchmarking
- Team
- Product management, development lead, front-end developers
- Product
- Consumer booking app for regulated taxis
- Users
- Passengers, across every operator in the network
- Shipped
- Published on Google Play and the App Store
Context
DDS provided total solutions to transportation companies and their drivers and passengers. Most of the passenger apps we built were one component of an enterprise system sold to a single service provider. Zoro was not that. It was a consumer app, and it connected the passenger to a network of thousands of taxis from every company that had joined.
That one difference sets everything downstream. A single-operator app books a car. Zoro had to let a passenger get a fare estimate, communicate with the driver, track the trip, book ahead or immediately, and pay in-app — while choosing between companies that were competing for the same ride.
Research
A user-centered process starts with the same four questions, and they are worth writing down rather than assuming. Who are the primary users? Why will they use this? What are they trying to accomplish? And in what environment and context will they be doing it?
Earlier literature review and competitive research had already given us a picture of the taxi-app user: demographics — age, gender, income, education, urban, suburban or rural, car ownership — and trip characteristics — usual trip purpose, frequency, typical distance, how they got to and from the vehicle, and what they would use instead of us.
The part that could not be read off a report was behavior, and for that we had something better than a report. DDS already ran the passenger apps inside our enterprise deployments, so we looked at their data:
- How often a rider needs a car immediately.
- How often they book for the future — and typically how far ahead.
- How often a return trip gets booked at the same time.
- Which payment methods they use, and how often.
- Where they actually go.
- What they tip.
Empathize
With that understanding I created personas. The goal of a persona is not to represent every user or cover every need in the product — it is to hold the major needs of the most important groups still long enough for a team to design against them.
Then I examined the UX touchpoints and mapped the journey the passenger was actually having — the channels available to them set against the stages of the trip, and the experience running underneath.
Define
Understanding the user is not a deliverable. Articulating what you are going to fix is. We stated the primary problems plainly, and in the passenger’s order rather than the engineering one:
- Get a ride quickly, with an accurate time and fare estimate. Immediately or in the future, with a choice of service provider, vehicle and payment method.
- Track the ride. Real-time vehicle location, and two-way communication between passenger and driver.
- Make the ride itself smooth and frictionless. Board the right cab, watch the route in real time, and let payment happen automatically if the rider wants it to.
- Follow up afterwards. Lost and found, trip review, driver rating.
Ideate, prototype, test — and again
With the product managers and the development lead, we diverged first and brainstormed as many solutions as we could stand, then converged and worked out the flow of the best one.
Then into the design tools, for wireframes and early prototypes to put in front of people.
We tested the prototype with real users, then iterated — ideate, prototype, test again — until the design was ready to ship as the minimum viable product.
Only then did it become a visual problem. A mood board set the aesthetic, and high-fidelity mock-ups settled color, layout, typography and iconography.
I also built interactive prototypes for the transitions and animations, in Principle and Framer. I preferred Framer, for a reason that has nothing to do with the design: it let me hand the developers the animation itself. I sent them the CoffeeScript — timings, easings, spring values — so they received the properties that made up the motion rather than a video to approximate. No guesswork.
The mock-ups, prototypes, screen flow, UI specifications and graphic assets went to the development team, and I stayed with them — making sure they had everything they needed from me and that the UI was implemented accurately.
Test with users, and keep testing
Zoro launched on both Google Play and the App Store. For UX that is not the finish line, it is the point at which the feedback stops being hypothetical.
Alongside usability testing on specific aspects of the app, I ran UX benchmark testing to measure how users actually performed with it. Usability testing tells you what is wrong this week. Benchmarks tell you whether the next release was better than the last one, and whether the targets were met — which is the only way to know that iteration is doing anything.