YOUR DATA, EXPLAINED
Privacy policy
Updated 9 October 2026
Hanni is operated by Minje Jeon (Jeon Minje), Singapore. Contact jmj070806@gmail.com for privacy questions, support or data requests.
What stays on your device
Your learning progress, saved words, XP, streaks, writing progress, review ratings, reading history, settings and onboarding choices are stored locally. Your completed lesson identifiers and widget change interval are shared with Hanni’s widget through an Apple App Group. No learner account is required. Course materials and lesson audio are bundled for offline use.
AI-generated lesson audio — no personal data sent to AI
Hanni does not send your personal data, voice recordings, recognized words or typed answers to a third-party AI service. Supertone’s Supertonic 3 model (F1 preset) was used during development to generate fixed Korean lesson scripts before release. Only the resulting audio files are included in the app. Listening and recording do not connect to Supertone or any other AI provider. This is pre-recorded lesson content, not a live AI conversation. TOPIK listening uses an installed Apple Korean voice on your device.
Speaking practice
Microphone permission is requested only when you choose to record. From build 16, onboarding and lesson exercises show a “Practise without recording” choice before any microphone request, so you can complete the speaking step without granting access. Listening and writing do not require the microphone. Optional word matching uses Apple’s on-device speech recognition only, requires a separate permission and depends on device support. If Korean recognition is unavailable locally, Hanni keeps recording and replay available and does not fall back to cloud recognition. Audio and recognized text are not sent to Apple’s servers, Hanni’s servers or an AI provider for this check.
Recordings use protected temporary files and are deleted when you leave speaking practice, change phrases, clear or restart an attempt, or background the app. Abandoned files are cleared the next time speaking practice opens. Hanni does not upload recordings, transcripts, drawings or typed answers. Lesson audio is AI-generated in advance using Supertonic 3 preset F1; playing it does not contact a speech service. TOPIK listening uses an installed Korean iOS voice locally. TOPIK level, set and word selections, explored words, confidence ratings and speaking/writing completion stay on this device and are not sent to learning analytics.
Optional learning analytics
Analytics is optional and off by default. Starting with iOS build 14, Hanni uses PostHog US Cloud in the United States. Existing users are asked again before any data is shared with PostHog. A neutral age-group choice stays on the device; analytics remains off for under-18s and unspecified ages. Adults can choose to share without changing their learning access.
With permission, Hanni sends a random installation reference, foreground app time, screen and feature use, lesson and practice identifiers, lesson starts, completions and exits, daily unique lesson and repeat-attempt counts, checkpoint scores, mission identifiers, last step reached, app version and event times. TOPIK feature use is included, but selected vocabulary, confidence ratings and recordings remain local. We exclude names, emails, recordings, drawings, typed answers, search text, video history and purchase identifiers. We do not enable session replay, automatic capture, person profiles, advertising identifiers or advertising tracking. These records are pseudonymous, not anonymous, because events share an installation reference.
Requests use HTTPS. PostHog receives network addresses while delivering its service; Hanni disables location enrichment and replaces the IP property attached to analytics events. Unsent events are stored on the device, capped at 500, and expire after seven days when next checked. Failed requests retry during active use. Turning sharing off cancels pending reporting where possible and removes unsent events and the local reference. Requests already received may remain. Server records are kept until deleted by the operator; no automatic server deletion schedule is configured.
Earlier iOS builds used optional Supabase learning analytics in Singapore, including lesson and practice identifiers, completion or exit, checkpoint scores, active lesson time, last step and version. Supabase also processes operational/security logs under its policy. Earlier builds continue to use that service when opted in; historical records can be deleted on request. Build 14 does not send new learning events to Supabase. Supabase still supports the separate website waitlist and video rate limiting.
Access, deletion and withdrawing consent
You can turn learning analytics off in Settings. You can request access, correction or deletion by emailing jmj070806@gmail.com. Include the analytics reference shown in More → Settings → Learning analytics (or the Privacy policy screen in older versions) while sharing is enabled. Save this reference before turning sharing off. It is not your Apple Account or purchase identifier. Without it, we may be unable to identify your pseudonymous records. Requests do not require paid access.
Reset learning progress and your wordbook in Settings to remove local learning records. Deleting the app removes its local app data; device backups may retain earlier copies according to your backup settings. There is no learner account to delete.
Optional online videos: Shorts and K-pop
Online videos are separate from Hanni’s paid course and are free to watch. Continuing to Videos enables online search and thumbnails. In versions with autoplay, the visible video starts automatically using YouTube’s official privacy-enhanced player, so playback data is shared when the player starts. Earlier versions start playback when you tap play. Search terms, chosen category and region are sent through Hanni’s Vercel server to the YouTube Data API. Do not enter personal or sensitive information in video search. We do not save searches to learner records, send them to learning analytics, or join them to waitlist addresses. Public video metadata is cached for up to ten minutes.
Vercel processes your network address and technical request information to deliver and protect search. Short-lived, keyed network hashes are stored in private Supabase infrastructure for rate limiting and deleted after 48 hours. These are not original IP addresses. Provider operational logs are subject to the providers’ retention policies. When thumbnails or videos load, Google/YouTube receives your network address and technical information. Google’s published policy also describes browser or device identifiers, video interactions, diagnostic information and ad impressions. These can be linked to a browser or device even without a Google account. The privacy-enhanced player uses non-personalized ads; contextual information such as the video and approximate location may affect which ads appear. Google may use identifiers for security, service operation, measurement and ad frequency limits. Hanni does not receive those player identifiers or ad records. YouTube may serve advertisements and process data under its Privacy Policy and Terms of Service. Hanni uses a nonpersistent player store, does not request Google sign-in, and does not provide advertising identifiers, downloads or background playback. Availability and captions are controlled by YouTube and creators. Searches use SafeSearch; this is not a guarantee that all content is appropriate for every viewer.
Hanni word lookup searches the bundled collection and saves chosen words only on this device. Optional online dictionary searches open the National Institute of Korean Language’s Korean–English dictionary in an in-app browser. Selecting a title word or searching online sends that word and normal browser information to the dictionary website under its own policies. Hanni does not read, copy or translate video transcripts or lyrics. In versions with shuffled Shorts, up to 80 recent Shorts IDs and the last discovery topic stay only on your device to reduce repeats. Reset them in Videos → About online videos → Reset Shorts suggestions; turning off online videos also clears this history. Hidden video IDs and blocked channel IDs stay on your device and can be reset in Videos → About online videos. Reporting opens your email app with the public video link; send only details you want to share with Hanni support. Video likes are stored only on your device, do not change YouTube likes, and can be cleared in Videos → About online videos. Online videos can be turned off using Videos → About online videos → Turn off online videos. Doing so stops future video requests and removes the current in-app search results; it does not delete provider logs already received. Contact us for questions or requests concerning data controlled by Hanni.
Payments
Apple processes purchases, payment details and Apple Account information. Hanni checks Apple-signed StoreKit purchase records on the device to determine subscription or lifetime access, including widget access. Purchase identifiers and history are not sent to Supabase or a third-party purchase SDK. Apple’s own privacy policy applies to its payment services.
Notifications
The onboarding reminder screen asks for iOS notification permission if you have not decided already. Reminders are local, optional and can be changed or disabled in Settings. Refusing them does not prevent learning. No remote push notification service is used.
Children and families
Hanni is a general-audience learning app. From iOS build 14, a local age-group choice controls eligibility for optional learning analytics; we do not ask for a date of birth or transmit that age choice. Learning analytics stays off for under-18s and unspecified ages. This is not verified age or parental consent. There are no public posts, messaging or learner accounts. Optional YouTube videos may show advertisements controlled by YouTube. A parent or guardian can manage permissions and local data in iOS Settings and contact us about privacy or deletion. Optional analytics remains off unless enabled.
Hanni launch waitlist
Joining the website waitlist is optional and separate from the iOS app. When you select “Join the waitlist”, you agree to receive an email when Hanni launches. We collect the email address you enter, the sign-up date, and a record of the consent wording. Gmail and other email providers are supported; we do not ask for a Google password, access your Gmail account, or create a learner account.
Waitlist records are stored privately in the Hanni Supabase database in Singapore and are accessible only to the operator and authorized infrastructure. The website runs on Vercel; its server validates sign-ups before saving them to Supabase. Public visitors cannot read or directly write the database. Waitlist addresses are kept in a separate table and are not joined to the app’s pseudonymous learning analytics. We use your address for the launch notification, not advertising or unrelated marketing, and do not publish or sell it. To limit spam, the site also keeps short-lived, keyed hashes of network addresses and request times. These hashes are not the original IP addresses. Daily cleanup removes these limit records once they are more than 48 hours old and waitlist records once they are more than 180 days old. We will remove launch-list addresses after sending the launch notification, subject to handling any outstanding support request.
You may withdraw consent or request access, correction or removal at any time by emailing jmj070806@gmail.com from the address you registered. Put “Hanni waitlist” in the subject. There is no fee and no purchase is required. We may confirm your control of the address before acting on a request.
This website and support emails
This support website is hosted on Vercel. Like other hosting services, Vercel processes technical request information such as IP addresses, requested URLs and browser information to deliver and protect the site. We have not added analytics scripts, advertising, tracking cookies. The waitlist form is described above. If you email us, we receive your email address and the information you choose to send through Gmail. We use it to answer and resolve your request, and retain correspondence as needed for support, security or legal obligations. Avoid sending sensitive information that is not needed for your request.
Service providers and changes
We require service providers processing data on our behalf to provide the same or equal protection described in this policy and required by Apple’s App Review Guidelines, using applicable data-processing agreements and security controls. Optional independently operated services, including Apple payments and Google/YouTube, also have the provider policies linked below.
Service providers may process technical or support information outside Singapore according to their policies: PostHog, Supabase, Vercel, Google and Apple. We will update this page when our data practices change and request consent before enabling new optional collection that needs it.