Decision hypothesis: trip context belongs together
The prototype assumes a rider weighs origin, destination, date, seat availability, pickup zone, departure time, route fit, and the driver before requesting a ride.
Product Lab · self-initiated concept · not launched
I designed and prototyped a mobile carpool concept for Toronto-area trips, from finding a route to requesting a seat and arranging pickup.

Project study / 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?
The prototype connects trip discovery, seat requests, and pickup coordination. It is a self-initiated concept; the assumptions below still need testing with drivers and riders.
Trip-first
The first unit is a shared trip with origin, destination, timing, and route context.
Staged
The concept tests showing pickup zones before exact addresses to limit early exposure of details.
Prototype
The implemented screens provide a mobile interaction model for future user testing.
Evidence noteConcept evidence is based on product flows and implementation feasibility; live usage has not yet been measured.
The prototype assumes a rider weighs origin, destination, date, seat availability, pickup zone, departure time, route fit, and the driver before requesting a ride.
The product hypothesis is that exact addresses should remain hidden until there is enough intent to coordinate, using zone-level details first.
The concept models drivers around seats, route tolerance, detours, and timing, while the rider flow prioritizes destination fit, pickup convenience, and driver context. This distinction still needs user testing.
The prototype tests whether trip-first discovery can explain the product through the first interaction instead of a long onboarding sequence.
The concept assumes a useful match depends on origin, destination, departure time, route overlap, available seats, and arrival expectations.
The hypothesis is that timing, cost sharing, route fit, and pickup logistics require more context than a generic listing, without requiring a full social network in the first version.
The concept assumes a marketplace covering every possible route would be difficult to seed, so the MVP direction focuses on repeatable Toronto-area corridors and recognizable trip patterns.
Instead of showing an abstract list of drivers, discovery centers origin, destination, timing, and upcoming trip dates. This gives each ride a specific context before users compare seats or request access.
The request flow uses zone-level language first, then allows exact details later when a ride is accepted. The rule is designed to limit early exposure while preserving a practical coordination path.
Ride chat, seat status, and trip updates are grouped into a trip room so users are not forced to reconstruct the plan across disconnected messages.
Driver actions focus on offering seats and managing requests. Rider actions focus on finding a feasible ride and requesting a place. The interface avoids blending both roles into one unclear dashboard.
The structure starts with the shared trip as the primary object. Ride offers, requests, chat, and pickup zones attach to that trip instead of competing as separate features.
Discovery screens keep the user in scan mode. Request screens add decision details only when the rider has enough context to act.
Cards, bottom actions, status chips, and progressive detail views use familiar mobile conventions and translate cleanly into the prototype build.
Each trip card follows the same hierarchy: origin and destination, date, route signal, available seats, and next action. That consistency matters more than decorative variation.
Status chips distinguish open rides, requested rides, confirmed seats, and coordination steps. Users should not need to infer whether a trip is still active.
Primary actions stay close to the thumb zone. Dense ride details are split into sections so screens remain readable when viewed quickly on a phone.
Start with origin, destination, date, departure window, and pickup zone instead of an undifferentiated ride list.
Inspect seats, route fit, timing, cost sharing, and driver context before requesting a ride.
A driver accepts or declines the request, then the trip room carries chat and status updates.
Exact pickup information stays deferred until a ride is accepted; cancellations and expired trips remain open states to test.
Inspect the concept states
The first screen starts with a trip context so a rider can scan origin, destination, date, departure window, and pickup zone together.
Next action: Inspect trip
The request view exposes the decision details that matter before commitment: driver context, route fit, timing, and cost sharing.
Next action: Send request
Once a driver accepts, the trip room carries status and chat while exact pickup details move from a zone to a confirmed point.
Next action: Open coordination

Illustrative shared-ride scene. This image is not a product screen or evidence of user research.
The prototype grounds discovery in shared routes and timing, creating a concrete first-use hypothesis to test with Toronto-area drivers and riders.
The prototype demonstrates how pickup information can move from a general zone to exact details later in the request flow.
The cards and request states provide a prototype for testing whether riders understand the route, seat status, and pickup sequence.
The product structure was reviewed against the smallest viable marketplace loop: create a trip, offer seats, request a ride, accept, and coordinate pickup.
The pickup flow was checked for points where sensitive details might appear too early. Zone-level coordination became a product rule, not just UI copy.
The SvelteKit and Capacitor direction keeps the product close to production constraints rather than treating the screens as static mockups.
Looking back
The design direction deliberately narrows the marketplace. The working hypothesis is that a focused corridor-based carpool loop will be easier to test than a broad ride concept with undefined trust and liquidity needs.
The next product step would be field testing the request and acceptance flow with real drivers and riders, then tightening the language around pickup zones, cost sharing, and trip etiquette.