Life Time Ledger

Effective Date: 2026-05-08

Privacy Policy

Life Time Ledger is built on a simple promise: your time, your records, your control. This policy explains what data we touch, why, and the rights you have over it.

1. Who We Are

Life Time Ledger (the "App") is published by Peng Zhang (the "Operator"), a sole-proprietor developer based in Shenzhen, China, doing business under the brand getzed.app.

We act as the data controller for personal data processed through the App. For users in the EU, we do not currently have an EU representative; you may contact us via the email above for any GDPR-related request.

2. What Data We Collect

We collect the minimum data necessary to operate the App. Data collection is grouped into four scopes:

2.1 Data You Provide (Local Only)

The following data is stored only on your device (via SharedPreferences) and is never transmitted to any server unless you explicitly enable Cloud Sync (Section 2.2):

CategoryExamples
Personal attributesBirth date, expected lifespan, graduation/retirement age, life mode preference
Time trackingCustom time categories (label / emoji / color), daily time allocation records, notes
MilestonesCustom milestones (name, date, emoji, optional notes)
FootprintsPlace names, regions, visit dates, optional notes
Health check-insDaily exercise level (0–3), sleep hours, mood (1–5), stress (1–5), optional notes
Health assessmentGender, region (general), health habit assessment answers, calculated baseline/bonus age
App preferencesTheme (light/dark/system), language (Chinese/English/system), notification preferences
Sensitive data flag: Birth date, health questionnaire answers, daily health check-ins, and footprint location data are categorized as Sensitive Personal Information under GDPR Article 9 and PIPL Article 28. We process this data solely on your device by default; the legal basis is your explicit consent at App first launch (onboarding flow).

2.2 Data You Choose to Sync (Cloud Sync, Opt-In)

If you create an account and enable Cloud Sync, the data above is mirrored to our backend on Supabase (project region: Tokyo, Japan, ap-northeast-1). The data is stored in 6 tables: profiles, time_categories, milestones, daily_records, footprints, health_check_ins. Each row is gated by Row-Level Security (RLS) policies enforced by Supabase: only the authenticated owner of a row can read or write it.

Authentication is handled by Supabase Auth:

  • Email + password sign-in: We store your email address in Supabase's auth.users table.
  • Sign in with Google (OAuth): When you choose Google sign-in, Google receives a sign-in event from accounts.google.com. We then receive an ID token from Google and create a Supabase session. We do not access your Google contacts, calendar, drive, or any other Google service.
  • Sign in with Apple: When you choose Apple sign-in on Apple platforms, Apple handles the native authentication flow and may share your Apple account email address (or a private relay address, if you choose Hide My Email) with Supabase Auth so we can create your account session.

Legal basis (GDPR): Article 6(1)(b) — performance of contract (you signed up to use Cloud Sync).

2.3 Data Collected Automatically (Anonymous)

The following data is collected without linking to your account or identity:

ServiceDataPurpose
Sentry (sentry.io) Error stack traces, app version, OS version, anonymous session ID, breadcrumbs of user interactions in the app Crash reporting and bug fixing
PostHog (us.i.posthog.com) App lifecycle events (open / background), screen tab switches, custom events (onboarding_completed, health_assessment_completed), anonymous distinct ID generated by PostHog SDK Product analytics (understand which features are used)
Update check (raw.githubusercontent.com) HTTP GET to a static JSON file. GitHub's CDN logs your IP address and user-agent Version comparison for in-app upgrade prompt
Important privacy guarantees:
  • We do not call Sentry.setUser() or PostHog.identify(). Your account ID, email, and Supabase user_id are never sent to Sentry or PostHog.
  • Sentry's sendDefaultPii option is set to false, and a beforeSend hook strips any user context.
  • PostHog's health_assessment_completed event records only the fact of completion; the calculated predicted age is not included.
  • We can disable Sentry/PostHog at compile time by leaving the corresponding environment variable empty.

Legal basis (GDPR): Article 6(1)(f) — legitimate interest (operating and improving the App). For EU users, you may opt out of PostHog tracking by contacting us; technical opt-out via in-app toggle is on our v1.5 roadmap.

2.4 Data You Send Us by Email Feedback

When you tap "Send feedback" in App Settings, the App opens your system mail client with a draft addressed to hello@getzed.app. The draft includes:

  • The text you write
  • App version + build number
  • Operating system name + version
  • Your selected life mode
  • Submission timestamp (ISO 8601)

The email is sent via your own mail client (Gmail, Outlook, Apple Mail, etc.); we receive the email at hello@getzed.app (which is forwarded by Cloudflare Email Routing to the Operator's personal Gmail). You can review and edit the draft before sending.

3. How We Use Your Data

PurposeData CategoriesLegal Basis
Render visualizations of your remaining timeBirth date, lifespan, life modeContract (GDPR 6(1)(b))
Compute and display the health assessmentHealth questionnaire, daily health check-insExplicit consent (GDPR 9(2)(a) / PIPL 28)
Sync your data across devicesAll Section 2.2 dataContract
Send you reminders (daily check-in, anniversary)Notification preferences (local only)Consent (you toggle the switch in Settings)
Reply to your feedbackEmail content + auto-attached metadataLegitimate interest
Diagnose crashes and improve the AppAnonymous Sentry/PostHog dataLegitimate interest

We do not use your data for:

  • Targeted advertising
  • Selling, renting, or trading to third parties
  • Profiling that produces legal effects on you
  • Training machine learning models

4. Who We Share Data With

We share data only with the following service providers ("processors") strictly to operate the App:

ProcessorPurposeData RegionPrivacy Policy
Supabase, Inc.Cloud Sync backend, authenticationTokyo, Japansupabase.com/privacy
Google LLC (Sign in with Google)OAuth authenticationGlobalpolicies.google.com/privacy
Apple Inc. (Sign in with Apple)Native authenticationGlobalapple.com/legal/privacy
Sentry (Functional Software, Inc.)Crash reportingUSAsentry.io/privacy
PostHog Inc.Product analyticsUSAposthog.com/privacy
GitHub, Inc.Static version-check file hostingGlobal CDNGitHub Privacy
Cloudflare, Inc.Email Routing for hello@getzed.appGlobalcloudflare.com/privacypolicy
Google LLC (Gmail)Operator's mailbox for receiving feedbackUSA / Globalpolicies.google.com/privacy

We do not sell your personal information to any third party. We do not share your data with advertising networks.

5. International Data Transfer

The App is published from China but operates a global service:

  • Cloud Sync data is stored in Tokyo, Japan (Supabase ap-northeast-1).
  • Sentry and PostHog process data in the United States.
  • For EU/UK users, data may be transferred outside the EEA. We rely on Standard Contractual Clauses offered by these processors.
  • For users in mainland China, the Operator complies with PIPL Article 38 for cross-border transfers; the data minimization in Section 2.3 (no user identifier sent to Sentry/PostHog) aligns with PIPL Article 39.

6. Data Retention

DataRetention
Local-only data (SharedPreferences)Until you uninstall the App or clear App data
Cloud Sync data (Supabase)Until you delete your account in App Settings → Account → Delete Account, which immediately and permanently deletes all 6 tables of your data via a delete_my_account() server-side RPC
Sentry error reports90 days (Sentry default)
PostHog events7 years (PostHog default; we do not extend)
Email feedbackStored in the Operator's Gmail mailbox; deleted upon written request

Account deletion is irreversible. You may export your data first via App Settings → Data → Export (JSON file).

7. Your Rights

Depending on your jurisdiction, you have the following rights:

7.1 GDPR (EU/EEA/UK)

You have the right to:

  • Access the personal data we hold about you (Article 15)
  • Rectify inaccurate data (Article 16)
  • Erase your data (Article 17 — "Right to be Forgotten") — exercisable directly via App Settings → Account → Delete Account
  • Restrict processing (Article 18)
  • Data portability (Article 20) — exercisable directly via App Settings → Data → Export
  • Object to processing based on legitimate interest (Article 21) — including PostHog analytics
  • Withdraw consent at any time (Article 7(3))
  • Lodge a complaint with your local Data Protection Authority

7.2 CCPA / CPRA (California, USA)

You have the right to:

  • Know what personal information is collected, used, shared, or sold
  • Delete your personal information (exercisable via App Settings → Account → Delete Account)
  • Opt-out of sale — we do not sell personal information; this right does not apply
  • Non-discrimination for exercising any of the above

7.3 PIPL (China)

您享有以下權利:

  • 查閱、複製您的個人資訊
  • 更正、補充不準確的個人資訊
  • 刪除個人資訊(透過 App「設定 → 帳戶 → 刪除帳戶」直接行使)
  • 撤回同意 — 您可在「設定」中關閉雲端同步、通知等功能
  • 携帶個人資訊(資料可攜權)— 透過 App「設定 → 資料 → 匯出」行使
  • 對於健康問卷等敏感個人資訊,您隨時可選擇不同步至雲端

To exercise any right, contact us at hello@getzed.app with the subject [Privacy Request] <your request type>. We will respond within 30 days (GDPR / CCPA) or 15 working days (PIPL).

8. Children's Privacy

The App is not directed at children under 13 (or 16 in the EEA). We do not knowingly collect personal data from children. If you believe a child has provided us with data, contact hello@getzed.app and we will delete it.

The health assessment includes age-related questions but does not target minors; we recommend the App for users 18 and older.

9. Security

  • Cloud Sync uses TLS 1.2+ in transit between the App and Supabase.
  • Supabase data is encrypted at rest using AES-256.
  • We use Row-Level Security (RLS) policies on every table to ensure data isolation between users.
  • Authentication tokens are stored in iOS Keychain / Android EncryptedSharedPreferences by the Supabase SDK.
  • Local data on your device is protected by your device's lock-screen passcode/biometric. Local data is not encrypted at rest by the App itself; jailbroken/rooted devices may expose it.

We do not guarantee absolute security — no system is invulnerable — but we apply industry-standard practices to minimize risk.

10. Changes to This Policy

We may update this Privacy Policy. The "Effective Date" at the top reflects the latest revision. Material changes (e.g., new data category, new processor, change of legal basis) will be announced:

Continued use of the App after the Effective Date constitutes acceptance of the revised Policy.

11. Contact

TopicContact
Privacy requests, data subject rightshello@getzed.app
Security disclosureshello@getzed.app (subject: [Security])
General feedbackhello@getzed.app

The Operator (Peng Zhang) is the data controller. We do not have a designated Data Protection Officer due to the scale of data processing, but the Operator personally responds to all privacy inquiries within the timeframes stated in Section 7.