velopair

Open data standard · v0.1.0-draft

Riders and bikes, in a language any app can read.

VeloPair is a small open standard: four JSON objects that describe a rider, how they actually ride, a bike, and how well the two match. Any app can produce them. Any engine can score them. The standard defines data, never scores.

how it fits together
rider.json + ride-profile.json + bike.json compatibility engine (yours, theirs, anyone's) match 91/100
try it

Runs in your browser; nothing you enter is sent anywhere. Scores come from velopair-reference-engine 0.1.0, the open, non-normative engine in the spec repository. Your inputs form a valid Rider document and each result is a valid Compatibility document. The four bikes are fictional. Download your rider.json

the gap this fills
0 Open standards describe the rider, their riding style, or rider-bike compatibility. The slot VeloPair fills was empty. The primary-source research checked three independent ways.
~9 Proprietary fitting and sizing systems match riders to bikes today. The demand is proven. The data stays locked inside each one.
2 Industry standards describe bicycle product data. VeloPair maps onto them instead of redefining geometry.
3 Activity formats record what happened during a ride. None carry a portable rider profile. The Ride Profile is the aggregate layer above them.
the four objects
ObjectWhat it holdsExample fields
Rider Body measurements, physiology and intent. No name, no contact data, by design.
height_cminseam_cmsit_bone_width_mmftp_wflexibility
Ride Profile How someone measurably rides, derived from recorded rides instead of a questionnaire.
typical_ride_distance_kmavg_speed_kmhelevation_gain_m_per_kmsurface_mix
Bike Product identity, instance identity and geometry, kept separable.
identity.gtinstack_mmreach_mmmax_tire_width_mmbattery_capacity_wh
Compatibility One engine's verdict on one pairing. The record of a result, never the computation.
engine.namescoreconfidencebreakdown[]
design principles
data, not scores

The standard defines inputs and their meanings. Different companies compute different scores from the same data. The standard stays neutral.

extend, don't compete

Bike-side data corresponds to existing industry work on bicycle product data and geometry. VeloPair is the missing rider and compatibility layer, not another bike database.

small on purpose

Four objects, about ninety fields, every unit in the field name. Metric only. Boring and interoperable, as a data standard should be.

implementations first

Nothing is stable until proven. Every feature stays a release candidate until at least one producer and one consumer implement it against real data.

get started
  1. Read SPEC.md, about ten pages, and the two worked example personas.
  2. Validate against the JSON Schemas (draft 2020-12): rider, ride-profile, bike, compatibility, and the single-file bundle.
  3. Exchange documents, or one velopair.json bundle per share. Unknown extensions are ignored, unknown fields are errors.
curl https://velopair.org/schemas/0.1/bike.schema.json