Compare a route before committing
The discovery screen brings origin, destination, departure time, pickup zone and available seats together. Testing needs to establish whether that is enough to judge a trip.
Product Lab · self-initiated concept · not launched
I designed and prototyped a carpool app concept for Android and iOS, covering Toronto-area trips from finding a route to requesting a seat and arranging pickup.

Project / 2026 conceptMobile product UX
Product definition, UX/UI and frontend prototype
I started with three questions a rider would need to answer: where is the car going, when does it leave, and can I reach the pickup point?
I connected trip discovery, seat requests and pickup coordination in a mobile prototype. The concept still needs testing with drivers and riders.
Trip-first
Riders browse shared trips by route and departure time.
Staged
The proposed flow shows a pickup zone first and reveals the exact address after acceptance.
Prototype
Working mobile screens make the request and pickup flow available for user testing.
EvidenceConcept evidence is based on product flows and implementation feasibility; live usage has not yet been measured.
The discovery screen brings origin, destination, departure time, pickup zone and available seats together. Testing needs to establish whether that is enough to judge a trip.
A pickup zone gives riders an approximate location while keeping the exact address private until acceptance. The tradeoff is uncertainty about walking distance before committing.
A seat request is not yet a confirmed ride. The flow needs to distinguish pending, accepted and cancelled states and keep messages attached to the trip.
My starting assumption was that riders need to compare origin, destination, departure time, route overlap, available seats and expected arrival together.
I focused the first version on route fit, timing, cost sharing and pickup information. Whether those details give riders enough confidence to send a request remains a question for testing.
I limited the concept to a smaller set of recognizable routes. This gives an initial study a manageable scope while the challenge of attracting enough matching trips remains unresolved.
Listings show the origin, destination, timing, and upcoming trip dates before riders compare seats or send a request.
I show a general pickup zone before acceptance and reveal the exact point afterward. This limits early exposure but may leave riders uncertain about walking distance. A usability study should test whether the zone gives enough information to request a seat.
After acceptance, the trip room brings chat, seat status and updates together. A useful test would ask riders to find the latest pickup plan after a driver changes it, including whether cancellation remains clear.
Drivers offer seats and manage requests. Riders find a suitable trip and request a place. Each role has its own set of actions.
I grouped ride offers, requests, chat, and pickup zones under the shared trip they belong to.
The trip list supports browsing. A separate request screen adds the details a rider needs before asking for a seat.
The prototype uses cards, actions at the bottom of the screen, status chips, and detail views that open as needed.
Every trip card presents the same information in order: origin and destination, date, route fit, available seats, and next action.
Status labels distinguish open rides, pending requests and confirmed seats, including the steps that remain before pickup.
Primary actions sit near the bottom of the screen. Ride details are grouped into sections for reading on a phone.
Browse trips by origin, destination, date, departure window, and pickup zone.
Review available seats, route fit, timing, cost sharing, and driver details before requesting a ride.
The driver accepts or declines the request. After acceptance, the trip room holds chat and status updates.
Exact pickup details appear after acceptance. Cancellation and expired-trip states still need testing.
Screen details
The first screen groups the origin, destination, date, departure window, and pickup zone so riders can review them together.
Next step: Inspect trip
Before sending a request, riders can review the driver, route fit, timing, and cost sharing.
Next step: Send request
After the driver accepts, the trip room shows chat, status updates, and a confirmed pickup point.
Next step: Open coordination

Illustrative shared-ride scene. This image is not a product screen or evidence of user research.
A study can ask drivers and riders to find a suitable Toronto-area trip by route and departure time.
The flow moves from a general pickup zone to an exact location after acceptance.
The cards and request states provide a prototype for testing whether riders understand the route, seat status, and pickup sequence.
I checked the prototype through the full sequence, from creating a trip and offering seats to accepting a request and coordinating pickup.
I checked where pickup details appeared in the flow and used acceptance as the point at which the exact address becomes available.
Building with SvelteKit and Capacitor let me check the mobile layouts and interactions in a working prototype.
Looking back
Showing a general pickup zone protects the exact address, but it also asks riders to decide with incomplete information. I would test whether that tradeoff works before expanding the concept.
The next step would be field testing the request and acceptance flow with drivers and riders, including the language around pickup zones, cost sharing and trip etiquette.