Privacy policy
Last updated: October 27, 2026
didao is made and operated by Dao Labs, Inc. This policy explains how Dao Labs, Inc. ("didao", "we", "us", or "our") handles information when you use the didao Android or iOS app, visit didao.app, join our waitlist, or contact us. For privacy questions or requests, email [email protected].
- AI assistance sends the text needed for your request to our AI provider when you invoke assistance. We do not send your writing on every keystroke.
- Voice input starts only after you request it. Voice Rescue streams microphone audio while its listening session is active; recordings are not saved.
- Learning history and saved expressions are stored on your device. Relevant saved expressions and style preferences can also be included in a requested AI task.
- didao does not use an AccessibilityService to read other apps' screens.
- Shared images are recognized on-device. Explicit image-based reply requests can send the image and recognized text to our AI provider.
- Sanitized crash reporting is on by default in release builds; you can disable it in Settings → Data & privacy.
- Product analytics is optional on Android and iOS. After its disclosure, it defaults on in the United States and requires opt-in elsewhere; your explicit choice is preserved. You can turn it off in Settings. We do not sell personal information or use your writing for targeted advertising.
- You can request account deletion without the app, clear local learning data, and turn off optional collection.
1. Writing, AI assistance, and shared content
didao helps you complete, check, and understand language. When you invoke its keyboard or choose an AI action, the app may read the current selection, sentence, or bounded text around the cursor and send the information needed for that task to the configured AI service. Switching to didao can itself initiate assistance on Android and iOS; there is not necessarily a separate submit button for every keyboard request. Password, sensitive, and unsupported fields are excluded by the app's field checks.
A request may include your draft or selected text, relevant nearby context, learner level, style settings, a custom style instruction, a limited set of saved expressions that occur in the text, and the language variety, optional regional interest, age range and gender you chose during onboarding (each a short line that only nudges wording; age range and gender are optional). The AI service processes this input and produces suggestions or explanations. didao does not attach your entire learning database or all your conversations. Review suggestions before using them.
Content you choose to submit may contain personal or sensitive information about you or someone else. We process that content to provide the assistance you request; we do not require you to supply sensitive information. Avoid including information you do not want processed by an AI service.
You can share or select text using your operating system’s sharing and text-selection controls. In the app’s search input, clipboard text is read only when you choose Paste or a system paste control. didao does not monitor the clipboard. Typing or pasting in that input does not itself send an AI request.
For shared screenshots or photos, didao recognizes text on-device using Google’s bundled ML Kit on Android and Apple’s Vision framework on iOS. Requested explanations send selected recognized text and bounded nearby text. When you explicitly submit a reply request, your intent and corrected recognized text are sent, together with the image when the model supports vision. On iOS, contextual Explain in the photo reader sends selected recognized text and its source sentence, without attaching the image. Images and unsaved screenshot-session content are held temporarily; choosing Save stores the selected learning item locally, not the surrounding conversation.
Voice input: microphone access follows an explicit voice action and system permission. Voice Rescue streams audio to our AI provider while the session says Listening. Its temporary context can include the current request, an explicitly attached image or recognized text, your draft and up to four recent turns in that Rescue visit. Ending or cancelling the session stops recording. Recordings and the temporary conversation are not saved as conversation history; explicitly saving a selected expression retains that learning material locally. Voice features do not record ambient audio outside an active session.
Release text and image requests on iOS use our authenticated Supabase AI gateway; Android’s default text and image route connects directly to Alibaba Cloud Model Studio. Voice Rescue uses a direct provider connection after Supabase authorizes temporary voice credentials. Both apps normally connect directly to the provider for AI pronunciation using backend-authorized temporary credentials, with an authenticated gateway fallback. Direct connections also expose your IP address and ordinary connection metadata to the provider. The configured Qwen services process requests in Singapore. We do not store prompts, images, audio or model answers in the Supabase database or application logs. Content may remain temporarily in app memory and, where enabled, local learning history.
AI provider retention: Alibaba Cloud Model Studio’s standard policy retains inference prompts and responses for up to 30 days, with longer retention possible for legal or security reasons. Zero Data Retention requires an enabled workspace and supported models; we have not established that coverage for this release. Our lack of content storage in Supabase does not mean the AI provider retains nothing. See Alibaba’s data retention policy.
2. Conversation context and screen access
This release does not use an Android AccessibilityService to read other apps' screens or conversations. Received messages enter through your explicit share, selection or paste actions. The keyboard can receive bounded text from the active editor as described above. Normal screen-reader accessibility remains supported.
3. Local learning data and backups
Saved expressions, review progress, corrections, and learning history are stored in the app's local database. History entries can contain source text, answers, the sentence being worked on, alternatives, your chosen result, and, on Android, the package name of the app where assistance was invoked. On a later return to the same editor, didao can record a correction to the recently inserted text in that local entry.
Turn off Keep my history to stop new history entries. This does not delete existing entries or stop expressions you explicitly save from being saved. Use Clear learning data to delete local history, saved phrases, review progress, stored learning corrections, and saved style choices, and to turn off reminders. Personal notes stay.
Settings and style preferences are stored locally. Supabase sign-in does not synchronize your learning database. Local storage does not mean content can never leave the device: relevant expressions and preferences may be included in an AI request, and you may choose to export a backup.
Export creates a file in a location you select. It includes learning records and selected preferences, but excludes authentication sessions and model credentials. You control sharing and deletion of exported files; a storage service you choose may upload or back them up. didao's Android backup rules exclude its learning database, internal learning backups, dictionary files, authentication session, and model configuration from system backup and device transfer. Other app settings may be backed up according to Android and your device settings. On iOS, learning records are shared locally between didao and its extensions through an App Group. Account sessions use device-only Keychain storage; internal learning-backup snapshots are excluded from system backup. User-exported files remain under your control and the rules of the destination you choose.
4. Accounts, purchases, and support
Sign-in: Sign in with Apple on iOS, or Google sign-in where available, and Supabase Auth process your sign-in identity, email address and account identifiers. Apple may provide a private relay email address; Google may supply profile information such as your name or profile picture. didao does not request your name from Apple. Sessions use Android Keystore protection on Android and a shared, device-only Keychain access group on iOS, so the app and keyboard can use the signed-in session. didao does not receive your Apple or Google password or request your contacts or friends list.
Google sign-in SDK: didao requests only Google’s basic email and profile scopes, which can supply your name, email address and account identifier. didao does not request a phone-number scope or read your phone number. Google’s sign-in data-disclosure guidance also identifies account identifiers and IP addresses, which Google may use to estimate approximate location for fraud prevention; this does not require GPS permission. The bundled SDK privacy manifest is broader than didao’s requested profile fields: it also declares phone number, device identifiers, other usage data and analytics purposes. Those vendor declarations describe the SDK’s practices and do not mean that didao asks you for those fields or receives all of them. Google SDK processing is separate from didao’s optional product-analytics setting. The shipped SDK manifest declares no tracking. See Google’s sign-in data disclosure information and Google’s privacy policy.
Purchases: Apple’s App Store or Google Play handles payment collection. RevenueCat manages purchase validation, subscription status, and entitlements using purchase records and an app user identifier. didao does not collect your payment-card number or security code. This purchase flow does not send your drafts or learning history to RevenueCat.
Support: If you email us or submit feedback, we receive the contact details and content you provide and use them to respond. The app's feedback form sends the type you choose, your message and, only if you enter one, a reply email address; unless you switch it off, it also sends the app version, operating system version, device model, language setting and learning language. It is linked to your account when you are signed in. It does not attach your writing or learning history. The thumbs up and down on an AI answer (Ask DaoDao, Voice Rescue, Practice and Explain; never the keyboard) send your rating, which feature it was for, your platform, and the example you rated: your question, draft or what you said, and the answer shown. The app tells you this before your first rating. After a thumbs down you may add what you expected, which is sent only if you write it. A rating sends nothing else from your learning history. Feedback and ratings are kept for up to one year and deleted with your account. Please omit unnecessary private content.
5. Analytics, permissions, and technical data
Crash reporting and performance diagnostics: Release builds enable sanitized Sentry diagnostics by default, independently of product analytics. Reports contain error types, sanitized code locations, event identifier/time, release and SDK metadata, and predefined feature, operation, reason and build tags. We also sample the duration and outcome of predefined operations to diagnose slowness. Exception messages, account details, writing, request contents, breadcrumbs, arbitrary extras and attachments are excluded. Replay, screenshots, automatic tracing and profiling are disabled. Sentry receives the connection IP address. Turn off Settings → Data & privacy → Crash reporting to stop new reports and delete the local report queue; an in-flight transmission cannot be recalled.
Optional product analytics (Android and iOS): When Share product usage is enabled, PostHog receives an installation identifier, basic app/device metadata, and limited events such as opening a screen, requesting a feature, or saving a result. The setting defaults on in the United States only after the app presents its analytics disclosure; elsewhere it requires opt-in. Existing explicit choices are preserved. The app does not include drafts, prompts, answers, images, account details, or learning-history contents in those events. Session replay and automatic interaction recording are disabled. IP-based location enrichment is disabled, although the provider receives the connection IP address. Turn the setting off in Settings → Data & privacy to stop future product analytics and discard queued events; contact us about previously received data.
ML Kit technical metrics (Android): Google's ML Kit documentation states that input images and recognized text are processed on-device, while the SDK sends performance and usage metrics to Google and may contact Google for maintenance information. This SDK processing is separate from didao's optional PostHog analytics setting. See ML Kit terms and privacy.
Network services: Services used for AI, authentication, purchases, downloads, and hosting receive technical request information such as IP addresses, request times, and app or browser information needed to deliver and secure their services. didao does not intentionally include your writing, model responses, credentials, or clipboard contents in diagnostic logs.
Dictionary and audio: Dictionary searches run locally after the dictionary is available. English language packs are downloaded from Cloudflare R2 through cdn.didao.app; older app versions may use public Supabase Storage. The full Chinese CC-CEDICT dictionary is downloaded from MDBG, alongside core data already bundled in the app. These downloads send ordinary technical network information, such as your IP address, to the delivery provider, without sending searches or learning history. Pronunciation offers two voices. System uses voices installed on your phone and sends nothing. didao AI voice (a Plus feature) sends selected text, its language and the chosen voice to our AI provider. Both apps normally connect directly using backend-authorized temporary credentials, with an authenticated gateway fallback. Returned audio is cached privately on your phone. The gateway route records your account identifier, a keyed fingerprint of the text (not the text), its length and request timing for usage limits. Direct credentials use content-free issuance and usage metadata. Installing system voice data is handled by your speech engine.
Permissions: Internet access supports online features, and network-state access lets didao switch to offline dictionary mode; that state is not stored or sent. Microphone permission is requested only when you first use voice input, and recording happens only while you use it. Notification permission supports review reminders, which you can disable in your device settings. Local-network access is declared only for developer test configurations; release AI uses the production service routes described above. Keyboard access supports the functions described above. The iOS Take Photo action requests camera access only when you choose it. didao does not request screen-reading accessibility access, GPS location or contacts. The Android app does not request camera access. Selecting an image to share does not grant access to your entire photo library.
6. Website and waitlist email
The website is served through Cloudflare Pages. Cloudflare processes technical visitor information, including IP addresses, to serve and secure the site. See Cloudflare's privacy policy. Website fonts are hosted on our own domain and served by Cloudflare; loading them does not send font requests to Google. Apart from the website analytics described below and the waitlist form when you submit it, the site's own scripts run in your browser for page features and send nothing about you to us.
The website uses PostHog for analytics. After a page loads, PostHog receives the pages you view, the links and buttons you click, and technical information such as your browser, device type, referring page and an approximate location derived from your IP address. It stores a random identifier in your browser to recognise return visits. These events pass through our own address, e.didao.app. Website analytics does not collect what you type into forms; your waitlist email reaches us only through the signup service described below. See PostHog's privacy policy.
The website uses a light appearance and no longer reads or stores an appearance preference. We do not use Google Analytics, advertising pixels, targeted advertising, or offer walls on the current site.
If you join the waitlist, your email address is sent through our signup service, a Cloudflare Worker, to Resend to deliver a confirmation message. Until you confirm, the signup service keeps your address with a single-use confirmation link for up to 48 hours. Confirming adds you to the waitlist in Resend and keeps a consent record (a keyed fingerprint of your address, the confirmation time and the signup form version). Sending confirmation already involves provider processing; it is not a promise that nothing is stored before confirmation. This list is separate from app accounts and learning data. You can unsubscribe using the link in our list emails, by replying “unsubscribe”, or by emailing our privacy address, including if you receive an unwanted confirmation message.
The signup service processes network information, such as IP addresses, for security and rate limiting. Confirmation, beta invite and launch emails come from updates.didao.app. We use the list to invite you to the didao beta when it opens and to send launch news, not for unrelated advertising. We remove list membership when you unsubscribe and delete the list after its launch purpose is complete or on request, subject to necessary legal and abuse-prevention records.
7. Service providers and sharing
We use providers only for the functions described in this policy. Depending on the features you use, recipients include:
- Alibaba Cloud Model Studio (Qwen models): receives the text, context, and, for explicitly requested tasks, images, voice recordings and pronunciation text needed for language assistance, processed in Singapore. See Alibaba Cloud's privacy policy.
- Sentry: sanitized default-on crash diagnostics, controllable in Settings. See Sentry's privacy policy.
- Apple: iOS sign-in and App Store payments. See Apple’s privacy policy.
- Google and Supabase: authentication; Google also provides Play billing and ML Kit. See Google's privacy policy and Supabase's privacy policy.
- RevenueCat: purchase and entitlement management. See RevenueCat's privacy policy.
- PostHog: optional Android and iOS app analytics and separate website analytics. See PostHog's privacy policy.
- Cloudflare: Cloudflare hosts the website and delivers public English language packs through R2; website fonts are served from our own domain. Older app versions may download English packs from Supabase Storage. MDBG delivers the full Chinese CC-CEDICT dictionary.
- Formspree: delivers messages sent through the website support form (your email address and message) to our inbox. See Formspree's privacy policy.
- Resend and Cloudflare Workers: waitlist confirmation, beta invite and launch-news delivery when you subscribe; the signup service runs on Cloudflare. See Resend's privacy policy and Cloudflare's privacy policy.
AI requests are not used by didao for advertising. Provider processing and retention depend on the service and applicable terms; we do not make a blanket promise of zero provider retention or that no provider ever uses data to improve its services.
We may also disclose information when necessary to comply with law, protect rights and security, or carry out a business transfer with appropriate protections. We do not sell personal information or share it for cross-context behavioral advertising.
8. Retention and security
- Local learning records: kept until you delete them with Clear learning data, clear the app's storage, or uninstall. Exported copies remain wherever you placed them.
- Account records: kept while your account is active, then deleted in response to your request, except records we must retain for legal, security, or fraud-prevention purposes.
- Service usage: Supabase stores account/request identifiers, times, broad activity categories, workload amounts, completion state and commerce event identifiers/types for usage limits and subscription enforcement. Scheduled cleanup removes usage metadata after 31 days and commerce events after 90 days. Deleting your Supabase account cascades through these records. RevenueCat associates entitlements with your Supabase account identifier; store providers determine trial eligibility.
- AI processing: request/response content may be held temporarily in app memory and optionally in local history. Remote retention is governed by the inference service's terms and configuration.
- Purchase, analytics, support, and hosting records: retained for the relevant service, support, security, or legal purpose. Provider records and backups may follow separate retention periods. Contact us to request deletion of data we control; there is no universal three-month deletion guarantee.
We use app-private storage, protected authentication sessions, and secure network services to reduce unauthorized access. No system is completely secure. Service providers may process data in countries other than yours; for example, AI requests are processed in Singapore and other providers may process data in the United States. Where required, international transfers must use protections required by applicable law. Contact us for information about the safeguards applicable to your data.
9. Delete your didao account and data
Request deletion without the app
Email [email protected] with the subject Delete my didao account. Send the request from your sign-in email address if possible and identify the didao account you want deleted. You do not need to reinstall the app. Do not send passwords, sign-in tokens, payment-card details, or private conversations. We may ask for the minimum additional information needed to verify ownership.
You may also request deletion from Settings → Account & subscription → Delete account. If that action fails or is unavailable, use the email route above. Account deletion removes your didao authentication account and associated account data we control, subject to any legal or security retention we explain to you. It does not delete your Apple or Google account. For an Apple-linked didao account, the in-app deletion flow requests fresh Apple authorization and revokes didao’s Apple sign-in token before deleting the didao account; a failed authorization or revocation leaves the account available for retry.
Delete learning data on your phone
Account deletion and signing out do not erase local learning data. Use Settings → Data & privacy → Clear learning data to delete local history, saved phrases, review progress, stored learning corrections, and saved style choices, and turn off reminders. Personal notes stay. To remove remaining app settings as well, clear didao's storage in Android settings or uninstall it. Delete exported backup files separately from the locations where you saved them. We cannot remotely erase those local or exported copies.
Subscriptions and other records
Deleting an account does not automatically cancel an App Store or Google Play subscription. Cancel it in the subscription settings of the store you used. App stores and payment providers may retain transaction records for billing and legal obligations. To request deletion of support, analytics, or launch-list data we control, contact the privacy address and specify your request. We will explain any data that must be retained and the reason.
10. Your rights, legal grounds, and contact
Where applicable, we process information to provide the services you request, with your consent for optional features and communications, for legitimate interests such as service security and responding to support requests, and to meet legal obligations. We do not use language suggestions to make decisions producing legal or similarly significant effects about you.
Depending on where you live, you may have rights to access, correct, delete, or obtain a copy of your personal data, restrict or object to processing, withdraw consent, and appeal a decision about a privacy request. Exercising these rights will not result in unlawful discrimination. Withdrawing consent does not affect earlier lawful processing. You may complain to your local data-protection authority, including the UK Information Commissioner's Office where applicable.
We do not sell or share data for targeted advertising, so there is no advertising sale/sharing activity to opt out of. The current website does not change its behavior in response to browser Do Not Track signals. Optional app analytics is controlled by the in-app setting described above.
Children: didao is not directed to children under 13, and our Terms of Service require users to be at least 13 (or older where local law requires). If you believe a child under 13 has given us personal information, contact us and we will delete it.
Dao Labs, Inc. is responsible for the personal information described in this policy. Your use of didao is also governed by our Terms of Service. Send privacy requests or appeals to [email protected]. For other support, email [email protected]. We will consider requests under applicable law and may verify your identity before disclosing or deleting information.
We may update this policy when our practices change. The date at the top identifies the latest revision. Material changes will be communicated as required by applicable law.