Privacy Policy

Effective Date: June 17, 2026

Last Updated: October 8, 2026

FitnessLM ("the App") is operated by Stefan Bocanegra ("we," "us," or "our"). This Privacy Policy explains how we collect, use, and protect your information when you use the App.

Coach photos: Version 1.0.0 build 141 disables new photo-analysis requests. Earlier builds may send a photo you intentionally attach to your configured external AI provider. Previously saved photos remain in your records and exports; this change does not delete them or recall data already sent.

Storage starting with version 1.0.0 build 142: Your complete app records stay on this iPhone. A separate, limited iCloud record syncs selected workout, program and progression information. Profile details, body measurements, exercise restrictions, Fuel, private notes, Coach conversations, saved knowledge, generated explanations and photos are excluded from that workout sync record. Optional external AI, external embeddings and Social are separate connections described below. Earlier iCloud copies are not automatically erased by this update.

1. Information We Collect

1.1 Information You Provide

1.2 Information Collected Automatically

Optional running information

Running plans, schedules, manually logged runs, personal annotations and imported run summaries are stored on this device. They are not added to the separate iCloud lifting-workout mirror. If you choose Apple Health import, FitnessLM requests read access to running workouts and walking/running distance. It does not write workouts to Health, read routes or retain GPS coordinates. Health data is used only to show and review your runs in the App; it is never used for advertising or marketing, never sold, and never shared with third parties. Health controls access; an empty result does not prove permission was granted or denied. Disconnecting Health pauses import on this device; change system permissions in Health or Settings.

Garmin connection is unavailable in this candidate. Developer credentials alone do not enable it. An approved provider protocol, separate import/export/retention rights and operational verification are required before activation. If enabled later, the account-scoped relay is designed to hold credentials encrypted and deliver bounded run summaries through a short-lived inbox. Garmin data is not sent to AI in this candidate.

Use runs in Coach and automatic run reviews are separate, optional controls. Currently only independently entered manual run summaries and plan targets can enter permitted Coach requests. Imported Health and Garmin contributions, notes, locations and sensor details are excluded. Cloud processing additionally requires the cloud data-sharing acknowledgment. Disabling consent or changing source facts hides dependent generated text; it cannot recall information already sent to a provider.

Full JSON export includes permitted completed runs, running plans, links, independent annotations and qualified generated content, with coverage exclusions. Completed-run CSV omits restricted contributions and undated annotations; unknown measurements stay blank. Neither export is a restorable running backup. Removing an imported source deletes its local provider payload and dependent generated content while retaining minimal reimport suppression and independently entered annotations. Notes from removed runs can be viewed and deleted under Running preferences, and included in full JSON without a source date. An authoritative source deletion retains only a minimal identity/revision tombstone to reject stale deliveries; approved provider terms must permit that retention before Garmin is enabled.

Garmin disconnect first stops local import and requests removal of local records when retention permission is absent. Local and relay cleanup failures are reported separately; a local failure does not prevent the relay cleanup request. Remote cleanup can remain pending while offline or signed into another account, and retries only for the matching FitnessLM account. Losing saved age eligibility also stops imports and requests this cleanup. Device-only erase works offline, suppresses future running import until explicit reconnect, and does not confirm Garmin relay or provider-side revocation. Account deletion requests server cleanup first; a server failure preserves local data, and any subsequent local-cleanup failure is shown separately. iCloud opt-out and synced-lifting-history reset remain separate choices.

1.3 Information We Do NOT Collect

2. How We Use Your Information

3. Data Storage and Security

Backups and changing phones: The app marks its Library directory, including the local database, attachments, preferences and supporting files, for exclusion from device backups. This is a system setting, not a guarantee that no copy can exist. Do not rely on backups or phone-to-phone transfer to preserve local records. Quick Start and other transfer routes have not all been verified. This setting does not remove earlier backups, exports, copies on other devices or data previously sent to services.

Earlier iCloud records: Older versions could sync a broader set of records. Updating preserves records already on this iPhone and stops this version from writing through the old full-data sync path. It does not erase earlier iCloud copies; older installations may continue their previous behavior. During initialization and explicit sync checks, the app can read limited workout, program and progression fields from the old container to recover eligible history. This reader does not restore excluded notes, body measurements or Coach content. Contact support before attempting to remove old cloud history.

4. AI Providers

FitnessLM supports several AI coaching modes. You choose which (if any) to use:

We do not operate, control, or have access to any external AI provider you configure. Your API keys are stored locally in the iOS Keychain with device-only protection and are never transmitted to us.

5. Data Sharing

We do not sell, rent, or share your personal information with third parties, except:

6. Your Rights and Controls

7. Children and Teens

FitnessLM is for people aged 16 and older. It is not directed to children under 13, and we do not knowingly collect personal information from anyone under 16. Age is required during setup. On iOS 26 and later, the App may ask the App Store to share your age range using Apple's Declared Age Range feature; you, or your parent or guardian, decide whether to share it. We use the result only to decide whether coaching and social features are available and which teen safeguards apply. We keep only that result (under 16, 16–17, or 18 and older) and the date of the check, on your device; we do not keep the age range itself and do not send it to our servers. If your entry or the App Store indicates you are under 16, coaching, AI and social features are unavailable, while your on-device history, export and deletion remain available. For users aged 16 and 17, the App does not set calorie targets, protein targets, cutting phases or weight-loss plans, and the coach is instructed not to prescribe them. If we learn that someone under 16 has a FitnessLM social account, we will suspend it and delete the server-side data associated with it. If a parent or guardian withdraws consent through the App Store, Apple stops the App from opening on the child's device; contact support@fitnesslm.app and we will delete the associated server-side data. If you believe a child under 13 has given us personal information, contact us and we will delete it.

8. Changes to This Policy

We may update this Privacy Policy from time to time. The updated version will be indicated by the "Last Updated" date at the top. We encourage you to review this page periodically.

Support · Terms of Service

9. Contact

If you have questions about this Privacy Policy or your data, contact us at:

Stefan Bocanegra
Email: support@fitnesslm.app