Skip to main content
Pully

Privacy Policy

Effective Date: 11 November 2026

Last Updated: 11 November 2026

1. Data Controller

Your personal data is controlled by:

Jakub Zakrzewski Consulting
Sole Proprietorship (JDG)
Tax ID (NIP): 5213997741
Address: al. Jana Pawla II 27, 00-867 Warszawa
Email: privacy@pullyapp.com

(hereinafter: "we", "us", "Pully")


2. What Data We Collect

2.1 Account Data (legal basis: performance of contract, Art. 6.1.b GDPR; consent records: legal obligation, Art. 6.1.c GDPR)

DataPurposeSource
Email addressAccount creation, sign-in, recoveryProvided by you or Apple Sign In
Password (for email sign-in)Sign-in; the Supabase sign-in service stores it only as a hashProvided by you
Name (optional)Personalization (display name)Apple Sign In (first login)
Apple identifierAuthentication via AppleApple Sign In
Account identifierLinking your data to your accountAssigned when the account is created
Device identifierDevice recognition for syncAuto-generated (UUID)
Sign-in session dataKeeping you signed in and keeping the account secure. The Supabase sign-in service records, among other things, session times and may record the IP address and a description of the app you sign in fromCreated automatically
Profile settings and onboarding answersTailoring the app: units, goal, experience level, workouts per week, chosen muscle groups, whether onboarding is completeProvided by you
Consent and terms acceptance recordsShowing when you gave and withdrew consent (Art. 7(1) GDPR) and that you accepted the terms: date, version, source, separately for body measurements, analytics, crash reporting and the termsYour choices in the app
AI Assistant access statusGranting access under your subscription: whether granted, until when, source, dates of changesYour purchases (App Store, RevenueCat)
Account deletion request from AppleCarrying out the deletion described in section 6.3: account identifier, time of the eventApple

2.2 Training Data (legal basis: performance of contract, Art. 6.1.b GDPR)

When you delete a workout, plan, template, exercise or measurement in the app, a record of it marked as deleted stays on the server so that the deletion reaches your other devices. That record, together with its content, stays on the server until you delete your account (measurements: until you withdraw consent or delete your account).

2.3 Body Measurements (legal basis: explicit consent, Art. 6.1.a in conjunction with Art. 9.2.a GDPR)

Body measurements are health-related data under Art. 9 GDPR. We collect them only with your explicit consent:

You can withdraw consent at any time in Settings > Privacy. Withdrawal results in deletion of all measurements from our servers.

2.4 Apple Health Data (legal basis: explicit consent, Art. 6.1.a in conjunction with Art. 9.2.a GDPR)

If you enable Apple Health integration:

2.5 Analytics (legal basis: consent, Art. 6.1.a GDPR)

With your consent, we collect pseudonymised usage data via PostHog (EU cloud). The kinds of events are described below. Their properties are numbers, values from closed lists, yes/no, and our own identifiers (e.g. of a product, an announcement, a ready-made plan).

We do not collect anything you type yourself, nor the names of exercises, plans or templates (apart from which ready-made plan or template from the Pully library you picked). We do not collect the weights you lift, reps or measurement values. We do not record the screen, and we do not automatically log the screens you visit or taps on elements of the app.

In versions 3.0.x the PostHog library also sent an event for a series of quick taps in one place ($rageclick), with a description of the tapped element, including its label. It is turned off from version 3.1.0. We have asked PostHog to delete all such events.

We do not store your IP address: PostHog discards it after receiving the event. Onboarding events from before you answer the consent question are kept only in your phone's memory. We send them if you agree and delete them if you refuse.

About the identifier, precisely. Analytics receives a random install identifier generated by the analytics library on first launch and stored on the device. It is not a number issued by the operating system, and not a value we hash ourselves; it is not tied to your account. Our analytics providers never receive your name, your email address or your account identifier, and we never join these events to your identity in our own database. We call this data pseudonymised rather than anonymous: the identifier is stable for a given install, so it can tell devices apart, which under the GDPR is not anonymisation.

You can disable analytics in Settings > Privacy.

2.6 Crash Reporting (legal basis: consent, Art. 6.1.a GDPR)

With your consent, we send Sentry reports that help us find and fix errors. As we have configured it, these are:

We never send Sentry your name, email address or account identifier - email and display name are stripped before sending. Reports carry a pseudonymous install identifier issued by Sentry. Storing of IP addresses is disabled on Sentry's side.

You can disable crash reporting in Settings > Privacy.

2.7 Subscription Data (legal basis: performance of contract, Art. 6.1.b GDPR; legitimate interest, Art. 6.1.f GDPR for revenue analytics)

2.8 AI Assistant Data (legal basis: performance of contract, Art. 6.1.b GDPR)

The AI Assistant ("Asystent", premium) processes your training data to answer your questions in context. When you send a message, we transmit the following to our AI sub-processor:

Your data is processed by Google Cloud Poland Sp. z o.o. (Gemini API services) as our sub-processor (Art. 28 GDPR); processing may also be carried out by other Google group entities and their sub-processors outside the EEA, under the Data Processing Addendum and Standard Contractual Clauses. Google does not use your prompts or responses to improve its products (we use the paid Gemini API). Google may log prompts and responses for a limited period, solely to detect and prevent violations of its safety policies and to meet legal obligations. This data may be stored transiently in any country where Google or its agents maintain facilities.

When you report a response from the Assistant (the report-response feature), we store: a copy of the reported response (as the app sent it) with its origin marker (AI-generated, written by the app, or unknown), the reason you chose from a list, the message and account identifiers, and the date. We do not copy the conversation context; when reviewing, we may compare the copy with the message stored in the conversation history. Purpose: moderation and improving the quality of the Assistant (Art. 6.1.f GDPR - our legitimate interest in service safety and quality). Access is limited to authorised persons. We keep the copy of the response until the report has been reviewed and for 30 days after that, then delete it. The report entry itself, without the content (reason, date, identifiers), stays until you delete your account.

To enforce the daily and monthly limits and to account for costs, we keep a register of requests to the Assistant. For each request we record: the date, the model, the number of tokens, the cost, the status, and the account, conversation and request identifiers. This register holds no message content. We delete its entries after 35 days, and earlier together with the account. Legal basis: performance of contract (Art. 6.1.b GDPR), and for cost control our legitimate interest (Art. 6.1.f GDPR). Before the entries are deleted, we add them up into monthly totals (month, model, number of requests, tokens, cost) without an account identifier. With a small number of users such totals could be linked to a particular person, so we treat them as personal data. We keep them for 24 months for cost accounting (our legitimate interest, Art. 6.1.f GDPR).

Buddy is not designed to process information about your health.

The AI Assistant is part of your Premium subscription. It is informational only and is not a medical or mental-health tool. You can stop using it at any time. The conversation history stays on the server until you delete your account: the app does not currently let you delete a single conversation. Deleting your account erases the conversation history, reports and the request register from our systems. What remains is only the safety logs kept by our AI sub-processor, for its own limited period, and the monthly cost totals without an account identifier (24 months).

2.9 Account Created by "Let's go" (legal basis: steps taken at your request before entering into a contract, Art. 6.1.b GDPR)

When you tap "Let's go" on the welcome screen, the app creates an anonymous account on our server (Supabase). It lets onboarding save your progress before you create your real account, and it makes the purchase screens in onboarding work.

2.10 In-App Feedback (legal basis: legitimate interest, Art. 6.1.f GDPR)

After some workouts the app asks for your feedback. If you send it, we store on our server (Supabase):

Purpose: to reply to your feedback and to improve the app. Our legitimate interest is knowing what works in the app and what needs fixing. Only the controller reads feedback. We keep it as long as it is needed for a reply or a fix, and no longer than 24 months from sending. Deleting your account deletes your feedback too. If you want us to delete your feedback sooner, write to privacy@pullyapp.com.

Do not include information about your health in your feedback.


3. Where We Store Data

LocationDataEncryption
Your device (SwiftData)All data - source of truthiOS device encryption
iOS KeychainApple identifier, device IDOS hardware encryption
Supabase (EU, region eu-central-1)Account copy (sync), anonymous accounts, AI Assistant conversations, reports, AI request register, feedbackTLS 1.2+ (transit), AES-256 (rest)
PostHog (EU cloud - servers in Frankfurt)Random install identifier (SDK-generated) + eventsTLS (transit)
Sentry (EU region - Germany; US company)Crash reportsTLS (transit)
RevenueCat (USA)Account identifier, device identifier, purchase historyTLS (transit)
Google Cloud Poland Sp. z o.o. (Google group; processing also outside the EEA)AI Assistant request data (training summary + message)TLS (transit)

Pully is offline-first - your data is always available on your device, even without internet. Sync is a background process.


4. Who We Share Data With

We do not sell your data. Ever.

4.1 Processors (acting on our instructions, Art. 28 GDPR)

ServiceDataPurposeSeat and data locationData processing agreement (DPA)
Supabase (Supabase Pte. Ltd., Singapore; Supabase group, including Supabase Inc., USA)Account (including anonymous), training data, measurements, Assistant conversations, reports, AI request register, feedbackDatabase, sign-in, sync, backupData in the EU (Frankfurt, eu-central-1); companies outside the EEAYes
PostHog (PostHog Inc., USA)Random install identifier (SDK-generated) + eventsUsage analytics and onboarding funnelData in the EU cloud (Frankfurt); US companyYes (signed 2026-08-26)
Sentry (Functional Software, Inc., USA)Crash reportsApp stabilityData in the EU region (Germany); US companyYes
RevenueCat (RevenueCat, Inc., USA)Account identifier (including anonymous), device identifier, purchase historySubscription handling and revenue analyticsUSAYes
Google (Google Cloud Poland Sp. z o.o.; processing also by other Google group companies, including outside the EEA)Training summary, plan structure, profile, messagesAI Assistant (Gemini)Also outside the EEAYes (incorporated by reference in the paid Gemini API terms)

4.2 Independent controllers

EntityDataScope
Apple (in the EU the App Store is run by Apple Distribution International Ltd., Ireland; Apple group, including Apple Inc., USA)App Store payments and subscriptions, Sign in with Apple, the Health app and iCloud according to your settingsApple processes this data under its own rules, described in Apple's privacy policy

4.3 Transfers outside the EEA

Supabase, PostHog, Sentry, RevenueCat and Google are companies outside the EEA or groups that include companies outside the EEA. When data leaves the EEA (storage at RevenueCat, processing within the Google group, service access by the other providers), we rely on Standard Contractual Clauses (SCCs) approved by the European Commission, included in the data processing agreements. Sentry is also certified under the EU-US Data Privacy Framework. You can request a copy of these safeguards: privacy@pullyapp.com.


5. How Long We Keep Data

DataRetention Period
Account and training dataUntil account deletion
Records deleted in the app (workouts, plans, templates, exercises, measurements)A record marked as deleted stays on the server until account deletion (measurements: until consent withdrawal or account deletion)
Anonymous account (after "Let's go", no account created)90 days from creation, then deleted automatically
AI Assistant conversationsUntil account deletion
Reported AI Assistant responsesCopy of the response: until the report is reviewed and 30 days after that; report entry without content: until account deletion
Register of AI Assistant requests (date, model, tokens, cost, no content)35 days, earlier with the account
Monthly AI cost totals (month, model, number of requests, tokens, cost; no account identifier)24 months
In-app feedbackAs long as needed, at most 24 months from sending; earlier with the account
AI request data (at Google)Logged for a limited period (safety, legal obligations); Google publishes no specific term
Body measurementsUntil consent withdrawal or account deletion
Data held by RevenueCat (identifier, device identifier, purchase history)Not deleted automatically, including after account deletion; we delete it at your request
Analytics (PostHog)12 months
Crash reports (Sentry)Auto-deleted after 90 days
BackupsDeleted within 30 days of account deletion

6. Your Rights (GDPR Art. 15-22)

You have the following rights:

6.1 Right of Access (Art. 15)

In Settings > Export you can download, in JSON or CSV format, the data stored on your phone: workouts with exercises and sets, body measurements, plans and templates (in JSON together with their days and exercises), custom exercises, personal records and AI Assistant conversations. The export does not include account and profile data, consent and terms acceptance records, in-app feedback, the AI request register, reports of responses or subscription data. We will send you a full copy of all your data, including these, on request by email: privacy@pullyapp.com.

6.2 Right to Rectification (Art. 16)

You can edit your data directly in the app (workouts, plans, measurements, profile).

6.3 Right to Erasure (Art. 17)

You can delete your account and the data linked to it in Settings > Account > Delete Account. Deletion is:

Account deletion does not cover: backups (gone within 30 days), data held by RevenueCat (we delete it at your request, section 2.7), the monthly AI cost totals without an account identifier (24 months), and analytics data and crash reports, which are not linked to your account and expire after the periods in section 5.

If you sign in to Pully only with Apple and ask Apple to delete your Apple Account, Apple notifies us. We then end, at once, every session you were signed in with up to that moment on any device (the app asks you to sign in again when the current sign-in expires, usually within an hour) and, after 30 days, delete your Pully account together with its data - unless you sign in again during that time (or shortly before the request), which cancels the deletion.

6.4 Right to Data Portability (Art. 20)

Export in JSON and CSV formats is always free (including free-tier users). Settings > Export. The scope of the export is described in section 6.1.

6.5 Right to Restriction of Processing (Art. 18)

Contact us at: privacy@pullyapp.com

6.6 Right to Object (Art. 21)

On the basis of our legitimate interest (Art. 6.1.f GDPR) we process:

You can object at any time on grounds relating to your particular situation: write to privacy@pullyapp.com and say which processing you object to. We will stop processing that data for that purpose unless we demonstrate compelling legitimate grounds that override your interests, rights and freedoms, or grounds for the establishment, exercise or defence of legal claims. If you object to us keeping your in-app feedback, we will simply delete it.

Analytics and crash reporting are based on consent, not on legitimate interest. You turn them off by withdrawing consent (section 6.7).

6.7 Right to Withdraw Consent (Art. 7.3)

You can withdraw consent for:

Withdrawal does not affect the lawfulness of processing carried out before withdrawal.

6.8 Right to Lodge a Complaint (Art. 77)

You have the right to lodge a complaint with a data protection supervisory authority, in particular in the EU member state of your habitual residence, your place of work or the place of the alleged infringement. In Poland this is the President of the Personal Data Protection Office (UODO), ul. Stawki 2, 00-193 Warsaw, Poland, www.uodo.gov.pl


7. Data Security

We implement the following technical and organizational measures:


8. Notifications

All notifications are local (UNUserNotificationCenter). We do not send server-side push notifications.

Notification types:

You can manage notifications in Settings > Notifications.


9. Cookies and Tracking

Pully does not use cookies. The app contains no web browser or web components. We do not use:


10. Children

Pully is not intended for persons under 18 years of age. This threshold follows from the terms of the language-model provider used by the AI Assistant (Buddy) and is higher than the consent threshold in Art. 8 GDPR. We do not knowingly collect data from persons under 18 and we do not collect dates of birth. If you learn that a person under 18 is using the app, please contact us - we will promptly delete their data.


11. Changes to This Privacy Policy

We will tell you about material changes in the app. Previous versions of this policy are available upon request.


12. Contact

For data protection inquiries:


13. Automated Decision-Making

Pully does not employ automated decision-making or profiling within the meaning of Art. 22 GDPR. Calculations displayed in the app (estimated 1RM, personal records, session comparisons) are mathematical computations for display purposes only - they do not make decisions affecting your rights.

The AI Assistant generates informational, advisory observations and answers using a language model. This is not automated decision-making under Art. 22 GDPR - its outputs do not produce legal effects or similarly significantly affect you, and no decisions about your account, subscription, or feature access are made based on them.


14. What We Do NOT Collect

For clarity - Pully never collects: