1. Controller and contact
The controller for data deliberately sent through OpenBikeFit is Mateusz Konieczny — Balance IT, ul. Święty Marcin 29 lok. 8, 61-806 Poznań, Poland, NIP 7812090221, REGON 541862820. Contact: [email protected].
2. Fit data and camera processing

The calculator inputs, locally named bike profiles, exact component identities and rider-saved manual/torque references, user-created dated passport snapshots and factual state comparisons, guided coordinate and contact-detail readings, structured cockpit datums and measurement methods, saddle and hood angles, hood-height references, stem/spacer component context, optional profile-to-camera-fit links, camera-session setup snapshots and cross-session comparison selections, crank, cleat, saddle, cockpit and handlebar-control history events, saddle-tilt, hood-position and stem/spacer trials, setup-card exports, pending bike-to-bike transfer plans, local post-ride follow-up schedules and ride counts, per-step installation confirmations and repeated final coordinate re-checks, intake, safety answers, mobility checks, pose landmarks, analyses, multi-recording agreement checks, typed adjustment journal and ride check-ins are processed on your device and stored in browser IndexedDB, localStorage or temporary sessionStorage. Balance IT does not receive this data and cannot recover it for you.
A structured cockpit datum stores the physical saddle and bar/hand points you name, how the bicycle was levelled, the horizontal and vertical measurement methods, two or three raw reach/drop readings, their resolved values and spread. Saved crank-swap, cleat, saddle fore–aft and saddle-tilt plans similarly keep their frozen target, installation reference and final repeated measurements in IndexedDB. A crank-swap plan stays there until you close or discard it, delete the journal event or clear local data. Where another workflow applies a 30-day resume window, an expired or inconsistent plan fails closed and remains visible only so you can discard it or delete local data.
A dated passport snapshot is an immutable local copy of one bike profile that you explicitly capture. Comparing two snapshots shows recorded changes, unchanged values and missing values; it creates no fit score and sends nothing to Balance IT. The guided cockpit measurement aid uses the already saved datum, keeps unfinished readings in the open page, and writes a new local measurement event only when you choose Save.
If you explicitly save a bike-to-bike transfer, a versioned localStorage draft also keeps its frozen passport snapshots, current step, safety-stop text and unfinished repeated readings so the same plan can resume after a refresh. It is usable for 30 days and is removed on completion, revert, stop, discard, Delete all data, or when the tool next reads it after expiry. This draft is included in the Settings JSON export.
An installation hand-off may include a component-manual section, service-document code or workshop work-order reference that you type. It stays in local IndexedDB with the related bike-history event. Use a short technical reference only; do not enter a mechanic's name, phone number, health information or other unnecessary personal data. The recorded checkboxes are your own factual log, not verification by Balance IT or proof that the installation was safe.
The component library stores the manufacturer, model, optional variant, HTTPS manual link, procedure or torque reference and service note you enter for each bike. OpenBikeFit does not fetch, verify or monitor those links. The mechanic work-order page combines selected frozen local plans and those references in memory; printing or downloading JSON/CSV happens only when you request it. A post-ride follow-up is a local journal item containing its source plan, a two- or three-ride target, optional calendar boundary and current ride count. It sends no notification, records no health conclusion and merely leads back to the source workflow's fresh re-check.
A bike-linked crank-swap trial stores the frozen current and candidate crank lengths, the coupled saddle-height target, named saddle reference, exact hardware-source checks, installation confirmations, raw repeated saddle readings, ride count and keep, revert or stop decision. OpenBikeFit does not verify the component identity, compatibility, workmanship or measurement. The saved bike passport changes only after the workflow validates a matching physical final state; stopping the trial does not invent or overwrite a crank or saddle coordinate.
Camera frames are analysed in your browser. OpenBikeFit stores derived pose landmarks by default, not raw video. You can export or delete all local fit, bike-profile and bike-history data at any time in Settings & privacy or clear this site's data in your browser.

For a new bike-linked confirmed camera baseline, the fit session also stores an immutable local copy of the material bike passport and a deterministic setup fingerprint. The cross-session comparison reads two saved sessions in your browser and computes its result in memory; it creates no separate server record. Its private deep link places only opaque local session/profile identifiers after the URL # fragment, so they are not sent in the page request, although your browser may retain that fragment in local history. Delete the source fit sessions or use Delete all data to remove the underlying snapshots and comparison inputs.
If you choose the phone inclinometer, compatible browsers may ask for motion/orientation permission. Sensor readings and the floor-to-saddle calibration are processed live on your device and are not sent to Balance IT. Only the resolved angle is stored, and only when you explicitly save it to a local bike profile or trial; manual entry remains available when the sensor or permission is unavailable.
When you start the camera tool, your browser downloads the MediaPipe runtime from jsDelivr and the pose model from Google-hosted storage. Those hosts receive ordinary request metadata such as IP address and user agent under their own privacy terms; your camera frames and fit results are not sent with those requests.
3. Optional feedback
If you press Help and then Send, we receive the feedback category, message, optional email address, current page path and submission time. Do not include health records, diagnoses or other sensitive personal data. Feedback is used to answer you and improve or secure the service.
The legal basis is taking steps at your request or providing the requested service (GDPR Article 6(1)(b)) and our legitimate interest in fixing defects and improving OpenBikeFit (Article 6(1)(f)). The email is optional; without it we cannot reply. Feedback records automatically expire after 180 days, unless a shorter period is sufficient or longer retention is required to establish, exercise or defend a legal claim.
Sending feedback is voluntary. Its category and message are necessary only if you ask us to handle that feedback; if you do not press Send, no feedback record is created. Cloudflare receives and stores the submitted record for us as the hosting processor described below.
4. Hosting and recipients
Cloudflare hosts the static site and the optional feedback endpoint/KV store. Like any web host, Cloudflare may process IP address, request time, requested resource, user agent and security signals to deliver and protect the service. We do not create a separate analytics log. Provider-level request/security data is kept only as long as needed to deliver requests, investigate abuse or incidents, and meet legal duties, then deleted or anonymised. The legal basis is our legitimate interest in availability, abuse prevention and security (Article 6(1)(f)).
We do not use advertising pixels, behavioural analytics or sell personal data. Service providers may process data outside the EEA using an adequacy decision or appropriate safeguards where applicable. We may also disclose data where Polish or EU law requires it.
5. Your GDPR rights
Where we hold your personal data, you may request access, rectification, erasure, restriction, portability where applicable, or object to processing based on legitimate interests. Email[email protected]. We may need to verify your identity.
You may lodge a complaint with the President of the Polish Personal Data Protection Office (UODO), ul. Stawki 2, 00-193 Warsaw, uodo.gov.pl. OpenBikeFit does not make decisions with legal or similarly significant effects and does not profile users for advertising.
6. Security and changes
We use HTTPS, restrictive browser permissions and data minimisation. No internet service can promise absolute security. Material policy changes will be identified here with a new effective date; the current version remains available at this URL.