Skip to main content
ThaiHabit logoThaiHabit

Privacy Policy in plain language.

A plain-language overview of how ThaiHabit handles local learning data, optional online AI features, speech processing, privacy-restricted website measurement, launch notifications, support messages, and purchases.

Last updated: July 17, 2026

Core progress and preferences are stored locally on device

Online speech, AI import and generated audio run only when used

Optional website measurement is personless and restricted to bounded funnel events

The optional launch list is used for one launch update

Payments are handled by the App Store or Google Play through RevenueCat

In short

Core learning progress is local-first. Online services are used only for features that need them, such as pronunciation assessment, generated reference audio, AI import, AI conversation, purchases, diagnostics, and support.

For anyone who wants to know what stays on their device, what is sent online, and how purchases and support data are handled.

01

Local learning data

The app stores learning progress, review history, streaks, and preferences on the learner's device. Users can reset progress or delete local app data from app settings.

  • Progress
  • Review history
  • Preferences
02

Optional online features

Pronunciation assessment, generated reference audio, AI conversation, and Smart Import may send the minimum needed text, audio, selected file, clipboard text, or image data through the app backend. AI conversation and Smart Import can use OpenAI or OpenRouter; speech, OCR and Thai analysis can use Azure Speech or Hugging Face.

  • Supabase
  • OpenAI / OpenRouter
  • Azure Speech
  • ElevenLabs
  • Hugging Face
03

Purchases and support

Subscription status is validated through RevenueCat and the stores. Support or feedback requests can include a message, optional email, app version, platform, and basic diagnostics; they are stored in Supabase and delivered to support through Resend.

  • RevenueCat
  • Store purchase status
  • Supabase
  • Resend
04

Launch waitlist

If you join the website waitlist, your normalized email address, browser locale, consent time, and signup source are stored in Supabase and synced to a dedicated Resend segment. They are used for the single launch update described beside the form, not a general newsletter. Resend provides the unsubscribe control, and support can remove a waitlist address on request.

  • Email address
  • Consent time
  • Supabase
  • Resend
05

Optional website measurement

After privacy review and configuration, the website can send personless funnel events to PostHog using an ephemeral in-memory event identifier. The allowlist is limited to route ID, locale, content cluster, CTA placement, detected platform, destination store, and a sanitized campaign label. It does not send emails, raw URLs or referrers, click IDs, form content, or persistent browser identifiers. Autocapture, session replay, person profiles, and persistent analytics storage are disabled. Collection stays off unless a valid deployment configuration is present.

  • No autocapture or session replay
  • No person profiles
  • No raw URLs, referrers, emails or click IDs
  • No persistent analytics storage
06

Deletion and control

You can delete local app data at any time. If you linked an email, Google or Apple account, you can also permanently delete that account and app-controlled cloud data from Progress > Profile; Apple-linked deletion reauthorizes with Apple first. Support remains available for records outside the direct account path. Scheduled retention cleanup removes stale caches and bounded operational records. Store purchase history and provider records required for legal, fraud-prevention or security purposes follow the applicable provider policies.

  • Local reset
  • In-app account deletion
  • Store purchase records
07

Accounts, public features and diagnostics

Optional email, Google or Apple account linking can synchronize eligible learning progress to an encrypted-in-transit Supabase snapshot while excluding credentials, purchase caches and analytics identifiers. Optional leaderboard participation can make a chosen nickname, rank and XP visible. Backend network data is used for abuse prevention, and Sentry receives restricted crash diagnostics only when enabled.

  • Optional account sync
  • Optional leaderboard
  • Rate limiting
  • Restricted crash diagnostics
Questions?

Reach support directly.

We answer billing, privacy and data-deletion requests in plain language, usually within a day.

contact@julianschubert.dev