
odo, bicycle routes
A personalization engine for cyclists that replaces generic routing with intent-based loop generation. odo translates rider preferences such as scenery, elevation, wind, surface, and safety into clearly differentiated loop routes rather than minor path variations. Built as a 0→1 concept and validated with 100+ cyclists, it demonstrates how real-world environmental signals can inform explainable routing decisions, prioritizing preference fidelity and system-driven personalization over shortest-path optimization.
My role
Product design research prototyping
Scope
B. A. Thesis 0→1 Concept Functional Prototype
Domain
Mobility Mapping Outdoor
Tools
Figma Next.js
Team
Luke Caporelli Luca M. Ziegler Félix
Year
2025
context
What is odo?
odo is a route planning concept that prioritizes rider intent over shortest-path optimization. Instead of generating minor route variations, it creates differentiated loop routes based on scenery, safety, surface, elevation, and contextual signals.
Users and setting
Cyclists typically plan rides on desktop or mobile and navigate using bike computers. Route decisions are driven by landscape, safety, and elevation transparency, with strong preference for loop routes over point-to-point rides.
Problem statement
Most route planners optimize for distance and speed but fail to transparently reflect personal preferences such as scenery, surface, wind, or safety.
design preview

real world data based on
100+
CYCLISTS SURVEYED
9
in depth interviews
Discover
Competitive scan
Compared Komoot, Strava, Outdooractive, and Wikiloc. While technically robust, none deeply personalize routing beyond bike type selection.
Quant signals from the survey
Survey (100+ cyclists) showed strong preference for loop routes, high prioritization of scenery and safety, and clear demand for total ascent and max gradient transparency.
Qualitative Interviews
9 in-depth interviews complemented the survey, uncovering decision drivers and recurring friction points in route planning.
define
Target direction
The concept focuses on day rides and loop routes, where preference-based routing creates the strongest user differentiation.
Constraints and scope
Two-person thesis project focused on validating a functional vertical slice rather than building a full-scale product.
survey: fave route type?

Round trip
Point-to-point
Multiple
destinations
Other
concept brainstorming

ideate
Concepts explored
Explored adventure, safety-first, and inspiration-driven routing before selecting intent-based profiles as the strongest interaction model.
Why we chose route profiles
Profiles balance deep personalization with low interface complexity.
Key trade-offs
Prioritized explainable signals over opaque scoring systems to avoid feature overload.
prototype
Two creation flows
Two flows were designed: Quick Start for fast loop generation and Custom Ride for detailed preference control.
Onboarding for preference capture
Onboarding captures minimal but critical inputs: rider type, bike type, preferences, avoidance criteria, and time window. These parameters form the basis for profile-based route generation.
Vertical slice feasibility prototype
A functional desktop prototype validated technical feasibility using real APIs and live map feedback.
Data signals tested with real APIs
Integrated OpenRouteService for routing and surface data, Shademap for time-based shade analysis, and elevation processing to translate raw signals into explainable route metrics.
Tech stack for functional prototype
Core Framework
Next.js →
UI, routing, API integration, server-side rendering
Mapping & Visualization
React-Leaflet · Leaflet →
Interactive maps, route visualization, location rendering
Data & Intelligence APIs
OpenRouteService →
Routing, autocomplete, surface analysis
Shademap →
Shadow and sunlight environmental analysis
shademap api testing

switching route profiles
deliver
Final product loop
Structured into three phases: plan, navigate, and feedback to continuously improve route personalization.
Route profiles and fast switching
Profiles represent distinct ride intents. Users can switch between them instantly to compare route outcomes without reconfiguring inputs.
Planning clarity through details and preview
Detail and preview views make route quality legible, reducing uncertainty before starting a ride.
route profile deep dive

Main user flow
1. Users begin by selecting a route by choosing one of the available route profiles based on preferences such as scenery, safety, surface, or difficulty.
2. The details page supports deep analysis by presenting essential information including route name, start time, a map overview, and key metrics like difficulty, distance, elevation, and duration.
3. The preview provides a quick gist of the route by dividing it into segments that display distance, weather, and traffic information, supported by a height profile and map highlighting to maintain orientation.
System logic
Preference to route translation
odo converts rider preferences into routing constraints and weighted signals, so the output stays consistent across different regions.
Data pipeline, not UI screens
The core work is sourcing signals, normalizing them, and mapping them to meaningful labels that feel trustworthy in planning.
main user flow

component deep dive
Elevation
The elevation profile provides a quick overview of the route’s overall climb. Users can expand it to analyze individual segments, with key details such as difficulty, length, elevation gain, and average gradient displayed clearly and in our four gradient colors.

Terrain types
This view dynamically summarizes the route’s surface conditions. Sections are assigned to their respective ground types, so users can see exactly where each surface appears. A percentage breakdown gives a quick overview, while the legend adds precise distances and shares for every type.


Wind
Wind plays a crucial role in cycling. The interface shows wind direction and speed along the route, while a line chart visualizes the effect: tailwind in green above the axis and headwind in red below, making it easy to spot supportive or challenging sections.


Prepare
Another way we support users is by helping them prepare for their ride. In this section, we highlight the most important items to bring—tailored to the weather, route length, and intensity.

Elevation
The elevation profile provides a quick overview of the route’s overall climb. Users can expand it to analyze individual segments, with key details such as difficulty, length, elevation gain, and average gradient displayed clearly and in our four gradient colors.

Terrain types
This view dynamically summarizes the route’s surface conditions. Sections are assigned to their respective ground types, so users can see exactly where each surface appears. A percentage breakdown gives a quick overview, while the legend adds precise distances and shares for every type.


Wind
Wind plays a crucial role in cycling. The interface shows wind direction and speed along the route, while a line chart visualizes the effect: tailwind in green above the axis and headwind in red below, making it easy to spot supportive or challenging sections.


Prepare
Another way we support users is by helping them prepare for their ride. In this section, we highlight the most important items to bring—tailored to the weather, route length, and intensity.

Elevation
The elevation profile provides a quick overview of the route’s overall climb. Users can expand it to analyze individual segments, with key details such as difficulty, length, elevation gain, and average gradient displayed clearly and in our four gradient colors.

Terrain types
This view dynamically summarizes the route’s surface conditions. Sections are assigned to their respective ground types, so users can see exactly where each surface appears. A percentage breakdown gives a quick overview, while the legend adds precise distances and shares for every type.


Wind
Wind plays a crucial role in cycling. The interface shows wind direction and speed along the route, while a line chart visualizes the effect: tailwind in green above the axis and headwind in red below, making it easy to spot supportive or challenging sections.


Prepare
Another way we support users is by helping them prepare for their ride. In this section, we highlight the most important items to bring—tailored to the weather, route length, and intensity.

Elevation
The elevation profile provides a quick overview of the route’s overall climb. Users can expand it to analyze individual segments, with key details such as difficulty, length, elevation gain, and average gradient displayed clearly and in our four gradient colors.

Terrain types
This view dynamically summarizes the route’s surface conditions. Sections are assigned to their respective ground types, so users can see exactly where each surface appears. A percentage breakdown gives a quick overview, while the legend adds precise distances and shares for every type.


Wind
Wind plays a crucial role in cycling. The interface shows wind direction and speed along the route, while a line chart visualizes the effect: tailwind in green above the axis and headwind in red below, making it easy to spot supportive or challenging sections.


Prepare
Another way we support users is by helping them prepare for their ride. In this section, we highlight the most important items to bring—tailored to the weather, route length, and intensity.

impact
What we validated
Validated that environmental signals such as shade, surface, and gradient can be sourced, processed, and translated into explainable routing decisions.
What this enables if shipped
Reduces trial-and-error route selection and increases confidence in unfamiliar areas through transparent personalization.
Differentiation
Differentiates through intent-based routing, explainability, loop specialization, and adaptive profile logic.
important learnings
Personalization as a System
Profiles and feedback loops turn routing into a system that adapts to individual preferences over time.
Less Guessing, More Confidence
Visible trade-offs help riders choose routes that match their intent, especially for scenic and safe loop rides.
blue ocean strategy canvas

Training Plans &
Performance Coaching
User Profiles &
Learning Capability
Personalized
Route Generation
Intelligent Context
Adaptation
Athletic Performance
Tracking
Live Navigation with
Contextual Cues
Key takeawayst
Control beats automation
Riders want adjustable inputs and clear outputs, not opaque automation that removes agency.
Explainability builds trust
Personalization works when users understand why the system recommends a route and what it optimizes for.
reflection
What I learned
Personalization only works when routing decisions are transparent and explainable.
What I would do next
Expand adaptive learning through post-ride feedback loops and deeper profile editing.
A personalization engine for cyclists that replaces generic routing with intent-based loop generation. odo translates rider preferences such as scenery, elevation, wind, surface, and safety into clearly differentiated loop routes rather than minor path variations. Built as a 0→1 concept and validated with 100+ cyclists, it demonstrates how real-world environmental signals can inform explainable routing decisions, prioritizing preference fidelity and system-driven personalization over shortest-path optimization.
odo
context
What is odo?
odo is a route planning concept that prioritizes rider intent over shortest-path optimization. Instead of generating minor route variations, it creates differentiated loop routes based on scenery, safety, surface, elevation, and contextual signals.
Users and setting
Cyclists typically plan rides on desktop or mobile and navigate using bike computers. Route decisions are driven by landscape, safety, and elevation transparency, with strong preference for loop routes over point-to-point rides.
Problem statement
Most route planners optimize for distance and speed but fail to transparently reflect personal preferences such as scenery, surface, wind, or safety.
design preview




Discover
Competitive scan
Compared Komoot, Strava, Outdooractive, and Wikiloc. While technically robust, none deeply personalize routing beyond bike type selection.
Quant signals from the survey
Survey (100+ cyclists) showed strong preference for loop routes, high prioritization of scenery and safety, and clear demand for total ascent and max gradient transparency.
Qualitative Interviews
9 in-depth interviews complemented the survey, uncovering decision drivers and recurring friction points in route planning.
real world data based on
100+
CYCLISTS SURVEYED
9
in depth interviews
define
Target direction
The concept focuses on day rides and loop routes, where preference-based routing creates the strongest user differentiation.
Constraints and scope
Two-person thesis project focused on validating a functional vertical slice rather than building a full-scale product.
ideate
Concepts explored
Explored adventure, safety-first, and inspiration-driven routing before selecting intent-based profiles as the strongest interaction model.
Why we chose route profiles
Profiles balance deep personalization with low interface complexity.
Key trade-offs
Prioritized explainable signals over opaque scoring systems to avoid feature overload.
concept brainstorming


prototype
Two creation flows
Two flows were designed: Quick Start for fast loop generation and Custom Ride for detailed preference control.
Onboarding for preference capture
Onboarding captures minimal but critical inputs: rider type, bike type, preferences, avoidance criteria, and time window. These parameters form the basis for profile-based route generation.
Vertical slice feasibility prototype
A functional desktop prototype validated technical feasibility using real APIs and live map feedback.
Data signals tested with real APIs
Integrated OpenRouteService for routing and surface data, Shademap for time-based shade analysis, and elevation processing to translate raw signals into explainable route metrics.
shademap api testing


deliver
Final product loop
Structured into three phases: plan, navigate, and feedback to continuously improve route personalization.
Route profiles and fast switching
Profiles represent distinct ride intents. Users can switch between them instantly to compare route outcomes without reconfiguring inputs.
Planning clarity through details and preview
Detail and preview views make route quality legible, reducing uncertainty before starting a ride.
switching route profiles
Main user flow
1. Users begin by selecting a route by choosing one of the available route profiles based on preferences such as scenery, safety, surface, or difficulty.
2. The details page supports deep analysis by presenting essential information including route name, start time, a map overview, and key metrics like difficulty, distance, elevation, and duration.
3. The preview provides a quick gist of the route by dividing it into segments that display distance, weather, and traffic information, supported by a height profile and map highlighting to maintain orientation.
System logic
Preference to route translation
odo converts rider preferences into routing constraints and weighted signals, so the output stays consistent across different regions.
Data pipeline, not UI screens
The core work is sourcing signals, normalizing them, and mapping them to meaningful labels that feel trustworthy in planning.
route profile deep dive


main user flow


impact
What we validated
Validated that environmental signals such as shade, surface, and gradient can be sourced, processed, and translated into explainable routing decisions.
What this enables if shipped
Reduces trial-and-error route selection and increases confidence in unfamiliar areas through transparent personalization.
Differentiation
Differentiates through intent-based routing, explainability, loop specialization, and adaptive profile logic.
important learnings
Personalization as a System
Profiles and feedback loops turn routing into a system that adapts to individual preferences over time.
Less Guessing, More Confidence
Visible trade-offs help riders choose routes that match their intent, especially for scenic and safe loop rides.
reflection
What I learned
Personalization only works when routing decisions are transparent and explainable.
What I would do next
Expand adaptive learning through post-ride feedback loops and deeper profile editing.
Key takeawayst
Control beats automation
Riders want adjustable inputs and clear outputs, not opaque automation that removes agency.
Explainability builds trust
Personalization works when users understand why the system recommends a route and what it optimizes for.