DatenschutzerklärungPrivacy Policy
Kurzversion: DecisionEngine berechnet alles auf deinem Gerät. Wir betreiben keinen eigenen Server, der deine Gesundheits- oder Trainingsdaten empfängt oder speichert (einzige Ausnahme: eine reine Weiterleitungsseite bei der Anmeldung bei einigen Diensten, siehe Abschnitt 4). Es gibt keine Cloud-Synchronisation, keine Analyse-SDKs und kein Tracking. Deine Gesundheitsdaten werden nicht an uns übertragen. Es gibt wenige Wege, auf denen etwas dein iPhone verlässt; sie sind nach unserem Kenntnisstand in Abschnitt 4 aufgeführt – die meisten nur, wenn du sie einschaltest.
Short version: DecisionEngine computes everything on your device. We operate no server of our own that receives or stores your health or training data (the one exception: a plain redirect page used when signing in to some services, see section 4). There is no cloud sync, no analytics SDK, and no tracking. Your health data is never transmitted to us. There are only a few ways in which anything leaves your iPhone; to the best of our knowledge they are all listed in section 4 – most of them only if you switch them on.
KontaktContact [email protected]
1. Verantwortliche Stelle
Michael Rohr E-Mail: siehe Kontaktbox oben
Wenn du uns schreibst. Wenn du an [email protected] schreibst, verarbeiten wir deine E-Mail-Adresse und den Inhalt deiner Nachricht, um dir zu antworten und die Anfrage zu dokumentieren (berechtigtes Interesse, Art. 6 Abs. 1 lit. f DSGVO). Die Nachrichten liegen im Postfach bei unserem E-Mail-Anbieter (Purelymail), solange sie dafür gebraucht werden. Wir löschen sie nicht automatisch, du kannst aber jederzeit verlangen, dass wir sie löschen. Wir geben sie nicht an Dritte weiter.
2. Grundsatz: Zero-Egress / Local-first
DecisionEngine ist nach dem Local-first-Prinzip entwickelt. Das bedeutet:
- Die Berechnung findet auf deinem Gerät statt. Es gibt keinen eigenen Backend-Server, auf den deine Daten hochgeladen werden — wir betreiben keinen. Das Einzige, was wir selbst für die App im Netz bereitstellen, ist eine statische Weiterleitungsseite für die Anmeldung bei einigen Diensten (siehe Abschnitt 4); sie speichert nichts. Die Wege, auf denen etwas dein Gerät verlässt (verbundene Dienste, Wetter, Karten, was du selbst teilst), sind nach unserem Kenntnisstand in Abschnitt 4 aufgeführt.
- CloudKit ist deaktiviert. Das iCloud/CloudKit-Entitlement wurde aus der App entfernt (Sprint L2.310, Mai 2026). Die App ist technisch nicht in der Lage, Daten an CloudKit zu senden.
- Keine Telemetrie. Es werden keine Nutzungs- oder Diagnosedaten an Dritte übermittelt. Lokale Protokolle (OSLog) bleiben ausschliesslich auf dem Gerät und sind nur über Xcode/Console sichtbar.
- Kein Tracking. Die App setzt
NSPrivacyTracking = false. Es werden keine Werbe-IDs, keine Gerätefingerabdrücke und keine Marketing-Pixel verwendet. - Keine Analyse-, Werbe- oder Tracking-SDKs von Dritten. Eingebunden ist eine Open-Source-Bibliothek für die Darstellung der Muskelgruppen (MuscleMap); in ihrem Quellcode haben wir keinen Netzwerkzugriff gefunden, sie überträgt nichts.
- Maschinelles Lernen und KI laufen auf deinem Gerät. Die lernenden und personalisierten Komponenten der Empfehlungs-Engine sowie das Sprachmodell von Apple laufen lokal auf deinem iPhone. Deine Daten werden nicht anderswo zum Training von Modellen verwendet und nicht an externe Dienste für maschinelles Lernen oder KI gesendet.
3. Welche Daten werden verarbeitet?
3.1 Gesundheits- und Fitnessdaten (HealthKit)
DecisionEngine liest mit deiner ausdrücklichen Erlaubnis Daten aus der Apple Health App. Zwei Dinge vorweg, weil sie für alles Folgende gelten:
- Nur lesend. Die App fordert keinerlei Schreibrechte für Apple Health an und schreibt nichts dorthin zurück (technisch: die Autorisierung wird mit leerer Schreibliste angefragt).
- Du entscheidest pro Datenart. Apple Health fragt jede Kategorie einzeln ab; du kannst jede einzeln verweigern oder jederzeit widerrufen. Fehlt eine Kategorie, rechnet die App ohne sie weiter — es gibt keinen Zwang zur Vollfreigabe.
Rechtsgrundlage. Gesundheitsdaten sind eine besondere Kategorie personenbezogener Daten. Die App liest sie nur mit deiner ausdrücklichen Einwilligung aus Apple Health (Art. 6 Abs. 1 lit. a und Art. 9 Abs. 2 lit. a DSGVO sowie die entsprechenden Bestimmungen des Schweizer Datenschutzgesetzes), die du pro Datenkategorie in Apple Health erteilst und dort jederzeit widerrufen kannst. Weil die Daten auf deinem Gerät bleiben, erhalten oder speichern wir sie nicht. Bei verbundenen Diensten ist die Rechtsgrundlage deine Einwilligung beim Verbinden des Dienstes; du kannst sie widerrufen, indem du die Verbindung trennst.
Vollständige Liste dessen, was die App anfragt:
| Datenkategorie | Wofür |
|---|---|
| Herz, Kreislauf, Atmung: Herzfrequenz, Ruhepuls, Herzfrequenzvariabilität (SDNN), Gehpuls, Herzfrequenz-Erholung nach Belastung, Sauerstoffsättigung, Atemfrequenz, VO₂max | Tägliche Erholungsbereitschaft, Belastungsverträglichkeit |
| Schlaf: Schlafanalyse, Handgelenktemperatur im Schlaf, Atemstörungen im Schlaf (ab iOS 18) | Erholungsindikatoren |
| Aktivität und Energie: Schritte, aktive Energie, Grundumsatz, Geh-/Lauf-, Rad- und Schwimmdistanz | Aktivitätsniveau, Tagesbelastung |
| Trainingseinheiten: Workouts (Art, Dauer, Distanz, Intensität) sowie deren GPS-Routen | Trainingsbelastung (ACWR); die Route liefert Karte und Höhenprofil im Verlauf und dient als Ortsbezug, um einer vergangenen Einheit nachträglich das Wetter zuzuordnen |
| Lauf- und Radmetriken: Leistung (Watt) beim Rad und beim Lauf, Trittfrequenz, Geschwindigkeit, Bodenkontaktzeit, Schrittlänge, vertikale Oszillation, Gangasymmetrie | Formanalyse, Intensitätssteuerung |
| Körpermasse: Gewicht, BMI, Körperfettanteil, Magermasse, Körpergrösse, Taillenumfang | Athletenprofil, Leistung pro Kilogramm |
| Profildaten: Geburtsdatum, biologisches Geschlecht | Altersbezogene Herzfrequenzbereiche und physiologische Normwerte |
| Krankheitssymptome: Fieber, Schüttelfrost, Erschöpfung, Husten, Halsschmerzen, Kurzatmigkeit, Schnupfen, Nebenhöhlenbeschwerden, Kopfschmerzen, Geruchsverlust, Geschmacksverlust | Sicherheitslogik — die App nimmt das Training zurück, wenn Krankheitszeichen vorliegen |
| Mentales Befinden: Achtsamkeitsminuten, subjektives Befinden („State of Mind", ab iOS 18) | Stress- und Erholungskontext |
| Sonstiges: Anzahl alkoholischer Getränke | Einfluss auf Schlafqualität und Erholung |
Ausdrücklich NICHT angefragt — auch dann nicht, wenn die Daten in Apple Health liegen: Zyklus- und Menstruationsdaten (im August 2026 bewusst aus der Berechtigungsliste entfernt), Blutdruck, Blutzucker, EKG, klinische Befunde (Health Records), Ernährungs- und Trinkdaten, Hörbelastung.
Verwendung:
- Die Werte werden auf dem Gerät verarbeitet und in der lokalen Datenbank der App gespeichert.
- Sie werden nicht an uns, nicht an einen Server von uns und nicht an Analyse- oder Werbedienste übertragen. Was das Gerät überhaupt verlässt, steht nach unserem Kenntnisstand vollständig in Abschnitt 4.
- Aggregierte Anzeige-Scores (z. B. der Bereitschaftswert für das Widget) werden lokal im App-Sandbox-Speicher gecacht — sie verlassen das Gerät nicht.
3.2 Verbundene Trainings-Provider (OAuth)
Optional kannst du externe Plattformen verbinden. Keine dieser Verbindungen ist nötig, um die App zu benutzen, und jede einzelne wird von dir per OAuth beim jeweiligen Anbieter freigegeben. In der App angelegt sind:
- Strava, WHOOP, Polar Flow, Wahoo, Withings, Hammerhead Karoo, Oura, intervals.icu, COROS — in der App angelegt und über die Einstellungen verbindbar, soweit sie in deiner Version freigeschaltet sind. WHOOP, Oura und COROS sind derzeit ausgeschaltet und werden erst nach Freigabe durch den jeweiligen Anbieter aktiv. Strava lässt sich aufgrund der Strava-API-Richtlinien dauerhaft nicht direkt mit der App verbinden. Nicht verfügbare Einträge erscheinen ausgegraut oder mit einem Hinweis statt eines Verbinden-Knopfs.
- Zwift, TrainerRoad — erscheinen nur als „Demnächst“-Zeilen und haben keine Verbindung. Suunto, TrainingPeaks — technisch vorbereitet, aber in der App nicht sichtbar und nicht verbindbar.
Je nach Anbieter kommen dabei über die Trainingsdaten hinaus weitere Gesundheitswerte herein, zum Beispiel Schlafwerte und Schlafscores, Herzfrequenzvariabilität, Erholungs- und Belastungsindizes (etwa WHOOP-Strain, Polar Cardio Load), Hauttemperatur-Abweichungen, Sauerstoffsättigung, Atemfrequenz, Stresswerte sowie — bei Withings-Geräten — Blutdruck, Körperfettanteil und Körpertemperatur. Welche Werte ein Anbieter konkret liefert, zeigt die App vor dem Verbinden in einem eigenen Hinweisblatt an.
- DecisionEngine liest diese Daten von den Diensten ein — ausschliesslich auf deinen Antrieb und mit deiner Autorisierung.
- Es fliesst auch etwas hinaus, wenn du bestimmte Funktionen nutzt: geplante Workouts können an intervals.icu, Wahoo, Hammerhead und COROS gesendet werden. Was das genau bedeutet und wie du es abschaltest, steht in Abschnitt 4 — bitte dort lesen, das ist der wichtigste Absatz dieser Erklärung.
- Beim Verbinden von Polar wird zusätzlich eine anbieterseitig verlangte Registrierung durchgeführt: dabei wird eine anonyme Kennung an Polar übermittelt, keine Gesundheitsdaten.
- Beim Anmelden bei Strava, Wahoo, Hammerhead, Withings und COROS läuft die Rückleitung in die App über eine statische Seite, die wir bei GitHub Pages bereitstellen; sie speichert nichts, wird aber von GitHub ausgeliefert. Einzelheiten stehen in Abschnitt 4.
- Zugangstokens (OAuth Access Tokens und Refresh Tokens) werden ausschliesslich im iOS Keychain des Geräts gespeichert — nicht in iCloud, nicht in einer Datenbank, nicht bei uns.
- Trennst du eine Verbindung in der App, löscht die App das Zugriffstoken auf deinem Gerät. Bei den meisten Anbietern versucht sie zusätzlich, den Zugang beim Anbieter zu widerrufen — nach bestem Bemühen; das kann z. B. ohne Internetverbindung scheitern. Bei Withings und intervals.icu gibt es diesen Weg nicht; dort entfernst du die Freigabe selbst im Konto beim Anbieter.
- Für die Daten, die bei einem Anbieter selbst liegen, gilt dessen eigene Datenschutzerklärung.
3.3 Ziele und Athletenprofil
Daten wie Wettkampfziele, Sportzugehörigkeit und persönliche Einstellungen werden in einer lokalen SwiftData-Datenbank und in den App-Einstellungen auf dem Gerät gespeichert. Keine Cloud-Synchronisation, kein iCloud-Backup via unsere Infrastruktur (iCloud-Backup durch Apple selbst liegt in deiner Kontrolle über die iOS-Einstellungen).
3.4 Was die App nicht erhebt
DecisionEngine erhebt keine der folgenden Datenkategorien:
- Name, E-Mail-Adresse, Telefonnummer — wir erhalten sie nicht. Nutzt du „Sign in with Apple“, speichert die App den Namen und die E-Mail-Adresse, die Apple dabei liefert, ausschliesslich lokal im Keychain deines Geräts (siehe Abschnitt 5); sie werden nirgendwohin übertragen.
- Zahlungsinformationen — ein Abonnement läuft vollständig über Apple; wir sehen keine Zahlungsdaten, sondern nur, ob dein Abo aktiv ist
- Gerätekennungen für Werbezwecke (IDFA)
- Social-Media-Profile
- Nutzungsstatistiken, Session-Recordings, Absturzberichte an Dritte
Zur Unterscheidung von Geräten führt die App eine anonyme Installations-Kennung im Keychain. Sie ist zufällig, hängt an keiner Person und wird nirgendwohin übertragen. Sie überlebt bewusst eine App-Löschung, damit eine Neuinstallation auf demselben Gerät deine bestehende Historie wiederfindet (siehe Abschnitt 5 zur vollständigen Löschung).
Zum Standort — hier war diese Erklärung früher zu pauschal: Die App liest GPS-Routen deiner Trainings aus Apple Health (Abschnitt 3.1) und verarbeitet einen Ortsbezug für das Wetter. Was genau passiert und was davon das Gerät verlässt, steht in Abschnitt 3.6.
3.5 On-Device-KI und lokales Lernen
DecisionEngine nutzt Apple Intelligence (FoundationModels) sowie lokale Machine-Learning-Modelle, um Empfehlungen zu erklären und Texte zu erzeugen (z. B. Trainings-Begründungen, Wochenrückblicke, Auswertung freier Notizen). Dabei gilt:
- Sämtliche KI- und ML-Verarbeitung läuft vollständig auf deinem Gerät (Apple Intelligence, iOS 26+, Apple Silicon). Es werden keine Daten an einen Cloud-KI-Dienst, an OpenAI/Anthropic/Google oder an einen sonstigen externen Anbieter gesendet.
- Die personalisierten Lernmodelle der App (z. B. zur Anpassung der Empfehlungen) trainieren ausschliesslich lokal mit deinen eigenen Daten. Trainingsbeispiele verlassen das Gerät nicht.
- Es kommen keine Drittanbieter-KI-SDKs zum Einsatz.
3.6 Standort und Wetter
Wetter beeinflusst die Empfehlung (Hitze, Kälte, Wind). Dafür verarbeitet die App einen Ortsbezug — an vier Stellen, alle hier genannt:
- Wetterabruf bei Apple. Für ein Training im Freien ohne hinterlegten Wetterwert — und, sobald du einen Standard-Trainingsort gesetzt hast, auch für ein Training drinnen ohne Wetterwert — holt die App ein Wetterbild bei Apple WeatherKit. Die Koordinate wird vorher auf ein Raster von 0,01° gerundet (etwa 1 km: in Nord-Süd-Richtung rund 1,1 km, in Ost-West-Richtung bei 47° N rund 0,75 km) und der Zeitpunkt auf die volle Stunde abgeflacht; abgefragt wird ein Fenster von 30 Minuten vor bis 30 Minuten nach dieser vollen Stunde. Apple erhält also eine bewusst ungenaue Ortsangabe. Dies ist der einzige Abruf mit Standortbezug, den du nicht selbst eingeschaltet hast und der ohne dein Zutun im Hintergrund läuft, und er ist in Apples Privacy Manifest deklariert.
- Standard-Trainingsort (freiwillig). Setzt du in den Einstellungen einen Standard-Trainingsort, erfasst die App den Standort einmalig in kilometergenauer Auflösung und speichert ihn lokal. Zum Auflösen des Ortsnamens fragt iOS dabei Apples Geokodierungsdienst an. Du kannst diesen Schritt einfach weglassen — die Standortberechtigung ist optional.
- Karte in der Detailansicht einer Einheit (Apple Karten). Öffnest du eine Einheit mit GPS-Route, zeigt die App die Strecke auf einer Karte von Apple (MapKit); iOS lädt dafür automatisch Kartenkacheln für den angezeigten Ausschnitt bei Apple. Die Streckenlinie zeichnet die App selbst auf dem Gerät über die Karte; wir übertragen keine Streckendatei an Apple. Welche technischen Angaben iOS beim Laden der Kartenkacheln sendet, bestimmt Apple.
- GPS-Routen deiner Trainings aus Apple Health werden gelesen (Abschnitt 3.1) und von der App nicht von sich aus an uns oder an einen Dienst übertragen: Für das Wetter wird nur die gerundete Koordinate verwendet (siehe oben), für die Karte siehe oben, und teilen kannst du eine Route nur selbst (Abschnitt 4). Sie dienen der Kartendarstellung, dem Höhenprofil und als Ortsbezug für die nachträgliche Wetterzuordnung.
3.7 Diagnose-Export
In den Einstellungen kannst du ein Diagnose-Paket erzeugen und über das iOS-Teilen-Menü verschicken. Es enthält technische Absturz- und Systemdaten, aktive Funktionsschalter sowie Geräte- und Versionsangaben — keine Gesundheitsdaten, keine E-Mail-Adresse, keine Kennungen. Der Versand geschieht nur, wenn du ihn auslöst; es gibt keinen automatischen Upload.
3.8 Benachrichtigungen und Abonnement
Benachrichtigungen der App sind rein lokal — die App ist bei keinem Push-Dienst registriert, es gibt keinen Server, der dir etwas schickt. Ein Abonnement wird über Apple StoreKit abgewickelt; Kauf und Zahlung liegen bei Apple, die App erfährt nur, ob eine Berechtigung aktiv ist.
4. Datenweitergabe — was dein Gerät verlässt
DecisionEngine gibt keine Daten an Werbepartner, Datenbroker, Analyse-Dienste oder Marktforschungsunternehmen weiter. Wir betreiben keinen eigenen Server, der deine Gesundheits- oder Trainingsdaten empfängt oder speichert. Die einzige von uns bereitgestellte Stelle im Netz ist die Anmelde-Weiterleitung (siehe Tabelle): eine statische Seite, die nichts speichert und von GitHub ausgeliefert wird.
Trotzdem wäre es falsch zu behaupten, es verlasse nie etwas dein Gerät. Nach unserem Kenntnisstand sind das diese Wege:
| Weg | Was geht hinaus | Wann |
|---|---|---|
| Verbundene Provider anmelden und abfragen | Deine Zugangsberechtigung (Token) und die Abfrage selbst — die Daten fliessen dabei herein. Zur Anmeldung gehört die Weiterleitung (siehe nächste Zeile), beim Trennen der Widerruf des Zugangs, soweit der Anbieter einen anbietet. Einzelne Dateien (z. B. Wahoo-Trainingsdateien) lädt die App von einem vorsignierten Speicher-Link, auf den die Antwort des Anbieters verweist; dieser Speicher-Host ist nicht fest vorgegeben und kann je nach Anbieter ein Cloud-Speicherdienst sein. | Nur wenn du einen Provider verbunden hast |
| Anmelde-Weiterleitung (Strava, Wahoo, Hammerhead, Withings, COROS) | Der Anbieter leitet deinen Browser nach der Anmeldung auf eine statische Seite, die wir bei GitHub Pages bereitstellen (michaelrohr.github.io). In der Adresse stehen ein einmaliger Autorisierungscode und ein Statuswert. Die Seite enthält nur ein Skript, das sofort an die App weiterleitet, und speichert nichts. Ausgeliefert wird sie von GitHub (Microsoft, USA), das den Abruf technisch verarbeitet (z. B. IP-Adresse und Zeitpunkt); dafür gilt die Datenschutzerklärung von GitHub. | Nur beim Anmelden bei diesen fünf Diensten |
| Geplantes Training an einen Dienst senden (intervals.icu, Wahoo, Hammerhead, COROS) | Das geplante Workout: Sportart, Datum, Dauer, Struktur, Titel und der Begründungstext der App. Dieser Text kann einen Gesundheitsbezug enthalten — etwa den Hinweis, dass eine Einheit nach einer Krankheit oder Verletzung vorsichtiger angesetzt ist. | Nur nach deiner Freigabe. Bei intervals.icu und COROS über einen Schalter in den Einstellungen, der ab Werk aus ist; ist er an, wird bei jeder Neuberechnung automatisch gesendet. Bei Wahoo und Hammerhead nur, wenn du das Training aktiv an das Gerät sendest. |
| Wetter bei Apple abrufen | Eine auf 0,01° (etwa 1 km) gerundete Koordinate und die volle Stunde (abgefragt wird ein Fenster von ±30 Minuten um diese Stunde) | Automatisch, für Trainings im Freien ohne Wetterwert und, sobald du einen Standard-Trainingsort gesetzt hast, auch für Trainings drinnen ohne Wetterwert (siehe 3.6) |
| Kartenansicht in der Aktivitätsdetail-Ansicht (Apple Karten) | iOS lädt für den angezeigten Kartenausschnitt Kartenkacheln bei Apple. Die Streckenlinie zeichnet die App auf dem Gerät über die Karte; wir übertragen keine Streckendatei. Welche technischen Angaben iOS dabei sendet, bestimmt Apple. | Automatisch beim Öffnen einer Einheit mit GPS-Route (siehe 3.6) |
| Polar-Registrierung | Eine anonyme Kennung, die Polar für den Zugang verlangt | Einmalig beim Verbinden von Polar |
| Was du selbst teilst | Diagnose-Paket, Datenexport, Trainingsdatei (TCX/GPX), Teilen-Karten (Wochenrückblick, Ziel-Bereitschaft) und Texte (Statistik- und Kraft-Export) — an das Ziel, das du im Teilen-Menü wählst | Nur auf deinen Tap |
Anbieter ausserhalb der EU, des EWR und der Schweiz. Einige der oben genannten Wege führen zu Anbietern ausserhalb der EU, des EWR und der Schweiz — zum Beispiel zu Apple (Wetter, Karten), zu GitHub (Anmelde-Weiterleitung, USA) und, wenn du sie verbindest, zu Diensten wie WHOOP oder Wahoo. Solche Übermittlungen gehen direkt von deinem Gerät an den Anbieter, den du gewählt hast, und richten sich nach dessen Datenschutzbedingungen und Garantien für Datenübermittlungen; sie laufen — mit Ausnahme der oben genannten Anmelde-Weiterleitung — über keinen Server von uns.
Nicht enthalten und es gibt sie auch nicht: keine Übertragung gemessener Herzfrequenz-, HRV-, Schlaf-, Symptom- oder Körperwerte an irgendjemanden (in geplanten Einheiten stehen nur Zielwerte, z. B. Herzfrequenzzonen); keine Telemetrie; keine Lernbeispiele der KI (das Lernen findet vollständig auf dem Gerät statt); kein Cloud-Backup durch uns.
5. Datenspeicherung und Löschung
- Alle Daten werden lokal auf deinem iPhone/iPad gespeichert.
- Wenn du die App löschst, entfernt iOS die lokale SwiftData-Datenbank und die UserDefaults-Einstellungen. Keychain-Einträge — die anonyme Geräte-Kennung, Provider-Zugangstoken und, falls verbunden, Sign-in-with-Apple-Name und -E-Mail — überleben das bewusst, wie es iOS-Apps generell handhaben, damit eine spätere Neuinstallation deine bestehende Verbindung wiedererkennt.
- Für die weitestgehende Datenlöschung nutze vor dem Löschen der App den Weg Einstellungen → Datenschutz → Meine Daten löschen → „Konto und alle Daten entfernen“ — das entfernt zusätzlich die Provider-Zugangstoken, die anonyme Geräte-Kennung, die Sign-in-with-Apple-Daten und die Einwilligungen aus dem Keychain. Nicht jeder einzelne Keychain-Eintrag wird dabei entfernt: einzelne technische Markierungen, etwa der Founder-Status, bleiben bewusst bestehen. Installierst du die App neu, ohne das zuvor getan zu haben, kann die App verbliebene Provider-Verbindungen oder Einwilligungen im Keychain erkennen (Voraussetzung: die anonyme Geräte-Kennung ist noch vorhanden) und bietet dir nach dem Onboarding denselben Löschweg an.
- Verbundenen Dienst trennen. Wenn du einen Dienst in den Einstellungen trennst, löscht die App das Zugriffstoken auf deinem Gerät, ruft keine Daten mehr ab und entfernt die Trainings, die von diesem Dienst stammen, von deinem Gerät. Andere bereits übernommene Werte, zum Beispiel Körpermessungen, bleiben auf deinem Gerät, bis du sie über „Konto und alle Daten entfernen“ (siehe oben) entfernst oder die App löschst. Ob die App beim Trennen den Zugang zusätzlich beim Anbieter widerrufen kann, steht in Abschnitt 3.2. Du kannst den Zugriff auch beim Anbieter selbst widerrufen.
- Gesundheitsdaten in der Apple Health App werden durch das Löschen der DecisionEngine App nicht berührt — sie liegen in Apples HealthKit-Store und können dort separat verwaltet werden.
6. Minderjährige
Die App richtet sich an Personen ab 16 Jahren. Wir erheben wissentlich keine Daten von Kindern unter 16 Jahren.
7. Deine Rechte
Da alle Daten ausschliesslich lokal auf deinem Gerät gespeichert sind, hast du jederzeit vollständige Kontrolle:
- Auskunft / Zugang: Du kannst deine Daten über Einstellungen → Datenschutz → „Meine Daten exportieren“ ausgeben lassen; vieles ist zudem direkt in der App einsehbar.
- Löschung: Einstellungen → Datenschutz → Meine Daten löschen → „Konto und alle Daten entfernen“ ist die weitestgehende Datenlöschung (mit den in Abschnitt 5 genannten Ausnahmen im Keychain). Reines App-Löschen entfernt SwiftData/UserDefaults, aber bewusst nicht die Keychain — siehe Abschnitt 5.
- HealthKit-Zugriff widerrufen: Jederzeit unter iOS-Einstellungen → Datenschutz & Sicherheit → Gesundheit → DecisionEngine.
- Provider-Verbindung trennen: In der App unter Einstellungen → Verbundene Quellen → Anbieter wählen → „Trennen“, oder direkt beim jeweiligen Anbieter.
- Berichtigung: Deine Daten stammen aus Apple Health oder den Diensten, die du verbunden hast; du berichtigst sie daher an ihrer Quelle.
- Beschwerde: Du hast das Recht, bei der Datenschutzbehörde deines Landes Beschwerde einzureichen.
Für Fragen: siehe Kontaktbox oben
8. Änderungen dieser Erklärung
Bei wesentlichen Änderungen der Datenpraktiken — insbesondere wenn zukünftig Netzwerkkommunikation oder Backend-Funktionen eingeführt werden — wird diese Erklärung aktualisiert und das Datum oben angepasst. Wesentliche Änderungen werden in der App kommuniziert.
9. Diese Website
Die Abschnitte 2–8 beschreiben die App. Für die Website (die Seite, die du gerade liest) gilt zusätzlich:
9.1 Hosting (Cloudflare)
Die Website wird über Cloudflare Pages (Cloudflare, Inc., USA) ausgeliefert. Beim Abruf verarbeitet Cloudflare technisch notwendige Verbindungsdaten (u. a. IP-Adresse, Zeitpunkt, abgerufene Ressource) zur Bereitstellung und zum Schutz der Seite. Wir selbst betreiben keinen Server und führen keine eigenen Zugriffsprotokolle. Details: Datenschutzerklärung von Cloudflare.
9.2 Cookies und Reichweitenmessung
Die Website setzt keine Cookies und legt nichts zu deiner Wiedererkennung auf deinem Gerät ab. Zur Reichweitenmessung nutzen wir Cloudflare Web Analytics (Cloudflare, Inc., USA), ein cookieloses Messverfahren ohne Geräte-Fingerprinting und ohne seitenübergreifende Profile. Erfasst werden zusammengefasst Seitenaufrufe, Referrer, Land sowie Browser- und Gerätetyp — keine Auswertung einzelner Personen. Rechtsgrundlage ist unser berechtigtes Interesse an einer Reichweitenmessung (Art. 6 Abs. 1 lit. f DSGVO). Es gibt keine Werbe- und keine weiteren Tracking-Dienste. Deine Wahl von Theme (hell/dunkel) und Sprache wird ausschliesslich lokal in deinem Browser gespeichert (localStorage) und nirgendwohin übertragen.
1. Data Controller
Michael Rohr Email: see contact box above
If you write to us. If you email [email protected], we process your email address and the content of your message to answer you and to document the request (legitimate interest, Art. 6(1)(f) GDPR). The messages are kept in the mailbox at our email provider (Purelymail) for as long as needed for this purpose. We do not delete them automatically, but you can ask us at any time to delete them. We do not share them with third parties.
2. Core Principle: Zero-Egress / Local-first
DecisionEngine is built on a local-first architecture. This means:
- Computation happens on your device. There is no proprietary backend server to which your data is uploaded — we do not run one. The only thing we provide online for the app ourselves is a static redirect page used when signing in to some services (see section 4); it stores nothing. The paths on which anything leaves your device (connected services, weather, maps, what you share yourself) are, to the best of our knowledge, listed in section 4.
- CloudKit is disabled. The iCloud/CloudKit entitlement was removed from the app (Sprint L2.310, May 2026). The app is technically incapable of sending data to CloudKit.
- No telemetry. No usage or diagnostic data is transmitted to third parties. Local logs (OSLog) remain exclusively on-device and are visible only via Xcode/Console.
- No tracking. The app declares
NSPrivacyTracking = false. No advertising identifiers, device fingerprints, or marketing pixels are used. - No analytics, advertising or tracking SDKs from third parties. One open-source library for drawing the muscle groups (MuscleMap) is bundled; we found no network access in its source code, it transmits nothing.
- Machine learning and AI run on your device. The adaptive and personalised learning components of the recommendation engine and Apple's on-device language model run locally on your iPhone. Your data is not used to train models elsewhere and is not sent to any external machine-learning or AI service.
3. What Data Is Processed?
3.1 Health and Fitness Data (HealthKit)
DecisionEngine reads data from the Apple Health app with your explicit permission. Two things up front, because they apply to everything below:
- Read-only. The app requests no write permission whatsoever for Apple Health and writes nothing back to it (technically: authorization is requested with an empty write set).
- You decide per data type. Apple Health asks for each category individually; you can decline any of them or revoke them later. If a category is missing, the app carries on without it — full access is never required.
Legal basis. Health data is a special category of personal data. The app reads it from Apple Health only with your explicit consent (Art. 6(1)(a) and Art. 9(2)(a) GDPR, and the corresponding provisions of the Swiss Federal Act on Data Protection), which you give per data category in Apple Health and can withdraw at any time there. Because the data stays on your device, we do not receive or store it. For connected services the basis is your consent when you connect the service; you can withdraw it by disconnecting.
The complete list of what the app requests:
| Data category | What for |
|---|---|
| Heart, circulation, breathing: heart rate, resting heart rate, heart-rate variability (SDNN), walking heart rate, heart-rate recovery after exertion, blood-oxygen saturation, respiratory rate, VO₂max | Daily recovery readiness, tolerance for load |
| Sleep: sleep analysis, wrist temperature during sleep, breathing disturbances during sleep (iOS 18+) | Recovery indicators |
| Activity and energy: steps, active energy, basal energy, walking/running, cycling and swimming distance | Activity level, daily load |
| Workouts: workouts (type, duration, distance, intensity) and their GPS routes | Training load (ACWR); the route provides the map and elevation profile in your history and serves as the location reference for retroactively attaching weather to a past session |
| Running and cycling metrics: cycling and running power (watts), cadence, speed, ground-contact time, stride length, vertical oscillation, walking asymmetry | Form analysis, intensity guidance |
| Body measurements: weight, BMI, body-fat percentage, lean body mass, height, waist circumference | Athlete profile, power-to-weight |
| Profile data: date of birth, biological sex | Age-based heart-rate ranges and physiological reference values |
| Illness symptoms: fever, chills, fatigue, coughing, sore throat, shortness of breath, runny nose, sinus congestion, headache, loss of smell, loss of taste | Safety logic — the app pulls training back when signs of illness are present |
| Mental wellbeing: mindful minutes, subjective state of mind (iOS 18+) | Stress and recovery context |
| Other: number of alcoholic beverages | Effect on sleep quality and recovery |
Explicitly NOT requested — not even when the data exists in Apple Health: cycle and menstruation data (deliberately removed from the permission set in August 2026), blood pressure, blood glucose, ECG, clinical records (Health Records), nutrition and hydration data, audio exposure.
How it's used:
- Values are processed on your device and stored in the app's local database.
- They are not transmitted to us, not to any server of ours, and not to analytics or advertising services. What leaves your device at all is, to the best of our knowledge, listed completely in section 4.
- Aggregated display scores (e.g. the readiness value for the widget) are cached locally in app sandbox storage — they do not leave your device.
3.2 Connected Training Providers (OAuth)
You can optionally connect external platforms. None of these connections is required to use the app, and each one is authorised by you via OAuth at the provider. Present in the app:
- Strava, WHOOP, Polar Flow, Wahoo, Withings, Hammerhead Karoo, Oura, intervals.icu, COROS — present in the app and connectable from Settings where enabled in your build. WHOOP, Oura and COROS are currently switched off and only go live once the respective provider approves. Strava cannot be connected directly to the app, permanently, because of Strava's API policy. Unavailable entries appear greyed out or show a notice instead of a Connect button.
- Zwift, TrainerRoad — appear only as “coming soon” rows and have no connection. Suunto, TrainingPeaks — technically prepared, but not visible in the app and not connectable.
Depending on the provider, data beyond workouts comes in as well: sleep values and sleep scores, heart-rate variability, recovery and strain indices (e.g. WHOOP strain, Polar Cardio Load), skin-temperature deviations, blood-oxygen saturation, respiratory rate, stress values and — with Withings devices — blood pressure, body-fat percentage and body temperature. The app shows you which values a specific provider supplies on a dedicated sheet before you connect.
- DecisionEngine reads this data from the services — exclusively at your initiative and with your authorization.
- Some data also flows outward when you use certain features: planned workouts can be sent to intervals.icu, Wahoo, Hammerhead and COROS. What exactly that means and how to switch it off is in section 4 — please read it; it is the most important paragraph in this policy.
- Connecting Polar additionally performs a registration the provider requires: an anonymous identifier is transmitted to Polar, no health data.
- When signing in to Strava, Wahoo, Hammerhead, Withings and COROS, the return to the app goes through a static page that we host on GitHub Pages; it stores nothing, but it is delivered by GitHub. Details are in section 4.
- Access tokens (OAuth access and refresh tokens) are stored exclusively in the device's iOS Keychain — not in iCloud, not in a database, and not with us.
- Disconnecting a provider in the app deletes the access token on your device. For most providers the app additionally tries to revoke the access at the provider — on a best-effort basis; this can fail, e.g. without an internet connection. For Withings and intervals.icu there is no such path; there you remove the authorisation yourself in your account at the provider.
- For the data held at a provider itself, that provider's own privacy policy applies.
3.3 Goals and Athlete Profile
Data such as race goals, sport preferences, and personal settings are stored in a local SwiftData database and in the app's settings on your device. No cloud sync, no iCloud backup via our infrastructure (iCloud backup by Apple is under your control via iOS settings).
3.4 What the App Does Not Collect
DecisionEngine does not collect any of the following:
- Name, email address, phone number — we do not receive them. If you use “Sign in with Apple”, the app stores the name and email address that Apple provides exclusively locally in your device's Keychain (see section 5); they are transmitted nowhere.
- Payment information — a subscription runs entirely through Apple; we see no payment data, only whether your subscription is active
- Advertising device identifiers (IDFA)
- Social media profiles
- Usage statistics, session recordings, or crash reports sent to third parties
To distinguish installations the app keeps an anonymous install identifier in the Keychain. It is random, tied to no person, and transmitted nowhere. It deliberately survives an app deletion, so a reinstall on the same device finds your existing history again (see section 5 for complete deletion).
On location — this policy used to be too sweeping here: the app reads the GPS routes of your workouts from Apple Health (section 3.1) and processes a location reference for weather. What exactly happens, and what of it leaves the device, is described in section 3.6.
3.5 On-Device AI and Local Learning
DecisionEngine uses Apple Intelligence (FoundationModels) and local machine-learning models to explain recommendations and generate text (e.g. training rationales, weekly recaps, parsing of free-text notes). For this:
- All AI and ML processing runs entirely on your device (Apple Intelligence, iOS 26+, Apple Silicon). No data is sent to a cloud AI service, to OpenAI/Anthropic/Google, or to any other external provider.
- The app's personalized learning models (e.g. for recommendation tuning) train exclusively on-device using your own data. Training samples never leave the device.
- No third-party AI SDKs are used.
3.6 Location and Weather
Weather affects the recommendation (heat, cold, wind). For this the app processes a location reference — in four places, all named here:
- Weather lookup at Apple. For an outdoor session with no recorded weather value — and, once you have set a default training location, also for an indoor session with no weather value — the app fetches a weather snapshot from Apple WeatherKit. The coordinate is rounded to a 0.01° grid beforehand (about 1 km: roughly 1.1 km north-south, roughly 0.75 km east-west at 47° N) and the timestamp is floored to the top of the hour; the request covers a window from 30 minutes before to 30 minutes after that full hour. So Apple receives a deliberately imprecise location. This is the only location-related request that runs in the background without your involvement and that you have not switched on yourself, and it is declared in Apple's Privacy Manifest.
- Default training location (optional). If you set a default training location in Settings, the app captures your position once at kilometre-level accuracy and stores it locally. To resolve the place name, iOS queries Apple's geocoding service. You can simply skip this step — the location permission is optional.
- Map in the detail view of a session (Apple Maps). When you open a session with a GPS route, the app shows the route on an Apple map (MapKit); iOS automatically loads map tiles for the visible area from Apple. The app draws the route line itself on your device, over the map; we transmit no route file to Apple. Which technical details iOS sends when loading the map tiles is determined by Apple.
- GPS routes of your workouts are read from Apple Health (section 3.1) and are not sent by the app on its own to us or to any service: for weather only the rounded coordinate is used (see above), for the map see above, and you can only share a route yourself (section 4). They power the map, the elevation profile, and the location reference for retroactive weather attribution.
3.7 Diagnostics Export
In Settings you can generate a diagnostics bundle and send it via the iOS share sheet. It contains technical crash and system data, active feature flags, and device/version information — no health data, no email address, no identifiers. It is sent only when you initiate it; there is no automatic upload.
3.8 Notifications and Subscription
The app's notifications are purely local — the app is registered with no push service, and there is no server that sends you anything. A subscription is handled through Apple StoreKit; purchase and payment sit with Apple, and the app only learns whether an entitlement is active.
4. Data Sharing — What Leaves Your Device
DecisionEngine shares no data with advertising partners, data brokers, analytics services, or market research companies. We operate no server of our own that receives or stores your health or training data. The only place online that we provide is the sign-in redirect (see the table): a static page that stores nothing and is delivered by GitHub.
Even so, it would be wrong to claim that nothing ever leaves your device. To the best of our knowledge, these are the paths:
| Path | What goes out | When |
|---|---|---|
| Signing in to and querying a connected provider | Your access token and the request itself — the data flows inward. Signing in includes the redirect (see next row); disconnecting includes revoking the access, where the provider offers that. Individual files (e.g. Wahoo workout files) are downloaded by the app from a pre-signed storage link that the provider's response points to; that storage host is not fixed and may be a cloud storage service, depending on the provider. | Only if you connected a provider |
| Sign-in redirect (Strava, Wahoo, Hammerhead, Withings, COROS) | After you sign in, the provider sends your browser to a static page that we host on GitHub Pages (michaelrohr.github.io). The address carries a one-time authorisation code and a state value. The page contains only a script that immediately forwards to the app, and stores nothing. It is delivered by GitHub (Microsoft, USA), which technically processes the request (e.g. IP address and time); GitHub's privacy policy applies to that. | Only when signing in to these five services |
| Sending a planned session to a service (intervals.icu, Wahoo, Hammerhead, COROS) | The planned workout: sport, date, duration, structure, title and the app's rationale text. That text can carry a health reference — for instance a note that a session is set more cautiously after an illness or injury. | Only with your consent. For intervals.icu and COROS via a Settings toggle that is off by default; when on, sending happens automatically on every recalculation. For Wahoo and Hammerhead only when you actively push the session to the device. |
| Weather lookup at Apple | A coordinate rounded to 0.01° (about 1 km) and the top of the hour (the request covers a window of ±30 minutes around that hour) | Automatically, for outdoor sessions with no weather value and, once you have set a default training location, also for indoor sessions with no weather value (see 3.6) |
| Map view in the activity detail screen (Apple Maps) | iOS loads map tiles from Apple for the visible map area. The app draws the route line on your device over the map; we transmit no route file. Which technical details iOS sends in doing so is determined by Apple. | Automatically when you open a session with a GPS route (see 3.6) |
| Polar registration | An anonymous identifier Polar requires for access | Once, when connecting Polar |
| What you share yourself | Diagnostics bundle, data export, workout file (TCX/GPX), share cards (weekly recap, race readiness) and texts (statistics and strength export) — to whichever destination you pick in the share sheet | Only on your tap |
Providers outside the EU/EEA/Switzerland. Some of the paths above lead to providers outside the EU/EEA/Switzerland — for example Apple (weather, maps), GitHub (sign-in redirect, USA) and, if you connect them, services such as WHOOP or Wahoo. Such transfers go from your device directly to the provider you chose and are governed by that provider's privacy terms and transfer safeguards; with the exception of the sign-in redirect mentioned above, they do not pass through any server of ours.
Not included, and not existing at all: no transmission of measured heart-rate, HRV, sleep, symptom, or body values to anyone (planned sessions contain only target values, e.g. heart-rate zones); no telemetry; no AI training samples (learning happens entirely on-device); no cloud backup by us.
5. Data Retention and Deletion
- All data is stored locally on your iPhone/iPad.
- Deleting the app removes the local SwiftData database and the UserDefaults settings. Keychain entries — the anonymous device identifier, provider access tokens, and, if connected, your Sign-in-with-Apple name and email — deliberately survive this, as most iOS apps handle Keychain, so a later reinstall recognizes your existing connection.
- For the most thorough data deletion, before deleting the app use Settings → Privacy → Delete my data → "Delete account and all data" — this additionally removes the provider access tokens, the anonymous device identifier, the Sign-in-with-Apple data and your consents from the Keychain. Not every single Keychain entry is removed by it: individual technical markers, such as the Founder status, deliberately remain. If you reinstall without having done that first, the app can detect remaining provider connections or consents in the Keychain (prerequisite: the anonymous device identifier is still present) and offers you the same deletion path after onboarding.
- Disconnecting a connected service. If you disconnect a service in Settings, the app deletes the access token on your device, stops retrieving data from it and removes the workouts that came from that service from your device. Other values already imported from it, such as body measurements, stay on your device until you delete them with “Delete account and all data” (see above) or delete the app. Whether the app can additionally revoke the access at the provider when you disconnect is described in section 3.2. You can also revoke access on the provider's side.
- Health data in the Apple Health app is not affected by deleting DecisionEngine — it lives in Apple's HealthKit store and can be managed there independently.
6. Minors
The app is intended for users aged 16 and over. We do not knowingly collect data from children under 16.
7. Your Rights
Since all data is stored exclusively locally on your device, you have full control at all times:
- Access / Inspection: You can have your data exported via Settings → Privacy → "Export my data"; much of it is also directly viewable within the app.
- Deletion: Settings → Privacy → Delete my data → "Delete account and all data" is the most thorough data deletion (with the Keychain exceptions named in section 5). Simply deleting the app removes SwiftData/UserDefaults but deliberately not the Keychain — see section 5.
- Revoke HealthKit access: At any time under iOS Settings → Privacy & Security → Health → DecisionEngine.
- Disconnect a provider: In the app under Settings → Connected sources → select the provider and tap its disconnect button, or directly at the respective provider.
- Correction: Your data comes from Apple Health or the services you connected, so you correct it at its source.
- Complaint: You have the right to lodge a complaint with the data protection authority in your country.
For questions: see contact box above
8. Changes to This Policy
If the data practices change materially — in particular if network communication or backend features are introduced in the future — this policy will be updated and the date at the top revised. Material changes will be communicated within the app.
9. This Website
Sections 2–8 describe the app. For the website (the page you are reading right now), the following applies in addition:
9.1 Hosting (Cloudflare)
This website is served via Cloudflare Pages (Cloudflare, Inc., USA). When you access it, Cloudflare processes technically necessary connection data (including IP address, time of access, requested resource) to deliver and protect the site. We do not operate a server of our own and keep no access logs ourselves. Details: Cloudflare privacy policy.
9.2 Cookies and Audience Measurement
This website sets no cookies and stores nothing on your device to recognise you. For audience measurement we use Cloudflare Web Analytics (Cloudflare, Inc., USA), a cookie-free measurement method without device fingerprinting and without cross-site profiles. It records aggregated page views, referrer, country, and browser and device type — no evaluation of individual people. The legal basis is our legitimate interest in measuring reach (Art. 6(1)(f) GDPR). There are no advertising or other tracking services. Your theme (light/dark) and language choice are stored locally in your browser only (localStorage) and are never transmitted anywhere.