Skip to main content
  1. Privacy Policies/

Python Dimensions — Privacy Policy

Last Updated: 2026-05-26


1. Overview
#

Python Dimensions, developed by ChengChe Lee, is a Python programming learning app featuring a built-in Python 3.13 runtime, an on-device AI tutor, and a system-wide Python coder keyboard.

In short: We do not collect any personally identifiable information; we only collect fully anonymous usage statistics to help us improve the app. All learning content, code, and AI conversations stay on your device.

2. Data We Do NOT Collect
#

This app does not collect:

  • Personally Identifiable Information (name, email, phone, Apple ID)
  • Location data
  • Advertising identifier (IDFA)
  • The content you type into questions, code, AI conversations, or AI prompts
  • Your raw IP address (TelemetryDeck briefly uses it at ingest to derive country, then discards it; raw IPs are never persisted)

3. Locally Stored Data
#

The following data is stored strictly on your device and never transmitted externally:

  • Learning Progress — answer records and error tracking across all question types (Points/MCQ, Lines/Cloze, Planes/Parsons)
  • Code — programs you write in the built-in Playground and via the Python system keyboard
  • AI Conversation Logs — conversations with the AI tutor stored locally
  • User Settings — difficulty preferences, interface settings, keyboard preferences

4. Offline AI and Local Execution
#

All AI features and code execution run entirely on-device without a network connection:

  • AI Tutor — Uses a local Large Language Model (LLM) to provide hints and explanations; all inference runs on-device
  • Python Runtime — The built-in Python 3.13 interpreter runs entirely on-device; your code is never sent to any server
  • Python System Keyboard — The keyboard extension runs in its sandbox without Full Access; it never transmits any text you type

AI models require a one-time download before first use (user-initiated). After download, all features work offline.

5. Anonymous Usage Analytics (TelemetryDeck)
#

To help us understand which features are useful, find where new users get stuck in onboarding, and catch performance issues, this app uses TelemetryDeck (provider headquartered in Germany, GDPR-compliant) to collect anonymous usage signals.

Why we collect
#

  • Improve the new-user experience. Step-by-step onboarding events (welcome shown, persona picked, completed, skipped) tell us which step loses people, so we can refine the copy and flow.
  • Optimize performance. perf_* events measure cold start, tab switching, LLM load, and Python first-run timing, so we know which surfaces need work.
  • Guide content direction. Which dimensions (Point/Line/Plane) and which certifications (PCEP / TQC+ / CPE) users actually engage with helps decide where the next question-bank expansion goes.
  • Judge feature value and retention. Tab dwell, widget use, and session length tell us which features earn their keep and which to cut.

What we collect
#

Each signal carries an event name and a small structured payload:

User journey (funnel events, 100% uploaded)

  • app_launched — launch type, app version, build, locale, device model
  • onboarding_welcome_shown / onboarding_persona_picked / onboarding_completed — onboarding progress, including your chosen persona and certification preference (cert_type)
  • practice_first_question_shown — first question ID and dimension
  • practice_first_answer_submitted — first answer correct/wrong, dimension, thinking time
  • session_ended — session length, questions answered, tabs visited, top tab

Performance (perf events, 25% sampled)

  • perf_cold_start_complete — cold-start ms and phase breakdown
  • perf_tab_switched — tab-switch latency
  • perf_llm_load_complete / perf_llm_first_token — LLM load and first-token latency, success, model_id
  • perf_python_first_run — Python first-run warmup, script size, success

Engagement (engagement events, 10% sampled)

  • practice_question_answered — correctness, dimension, source, thinking time
  • chat_message_sent — AI response ms, success (no prompt content sent)
  • widget_deep_link_used — widget-tapped concept ID
  • tab_appeared — which tab the user opened

TelemetryDeck SDK default body: app version, build, device model (e.g. iPhone17,1), iOS major version, region + language, a one-way hashed identifier generated on-device by TelemetryDeck (per-vendor; cannot be reversed to your Apple ID or device UUID), and a session UUID.

What we do NOT collect
#

  • Your name, email, advertising identifier (IDFA)
  • Your raw IP address (TelemetryDeck briefly uses it at ingest to derive country, then discards)
  • The content of your answers, your Playground code, your AI conversations, or your AI prompts
  • Any data that can be linked back to your personal identity

Sampling
#

Funnel events upload at 100%; performance events at 25%; engagement events at 10%. Total bandwidth per session is typically < 1 KB.

App Privacy mapping
#

CategorySubtypePurpose
Usage DataProduct InteractionApp Functionality
DiagnosticsPerformance DataApp Functionality
IdentifiersDevice ID (TelemetryDeck anonymous hash)App Functionality

All three are declared Not Linked to Identity, Not used for Tracking.

How to opt out
#

  • Turn off tracking under iOS Settings → Privacy & Security → Tracking — this reduces the resolution of any identifier signal.
  • An in-app toggle is under consideration for a future release.

6. Third-Party Services
#

This app uses the following third-party services:

ServicePurposeData collectedProvider region
TelemetryDeckAnonymous usage analyticsAnonymous events, device model, language, anonymous hashed identifierGermany (EU/GDPR)

This app does NOT use: Google Analytics, Facebook SDK, Firebase Analytics, any advertising SDK, or any third-party crash-reporting service.

7. Network Access
#

Network access is limited to:

  • Downloading AI models (optional, one-time) — only when you explicitly choose to download LLM model resources (typically Hugging Face or similar public model hosts)
  • Anonymous analytics upload (background) — small anonymous event packets sent over HTTPS to TelemetryDeck (see section 5)
  • External links — opens your browser when you tap relevant links

Beyond the above, the app does not initiate network connections. Code execution runs entirely in the local Python environment.

8. Children’s Privacy
#

This app is suitable for all ages and does not intentionally target analytics events at children under 13. TelemetryDeck signals are fully anonymous and cannot identify any specific user (including minors).

9. Policy Changes
#

This policy may be updated from time to time. Significant changes will be announced inside the app or by updating the “Last Updated” date on this page.

10. Contact Us
#

📧 qqder339@gmail.com Subject: Python Dimensions Privacy Policy Inquiry