πŸ—£οΈ

Privacy Policy

SpeakMate: AI English Speaking β€” Voice Practice, Lessons & AI Tutor

πŸ“± Android App πŸ”’ GDPR Aware 🚫 No Data Selling ☁️ Cloud Sync (Firestore) πŸ—‘οΈ Self-Service Account Deletion πŸ“’ Ad-Supported (Banner, Interstitial & Rewarded) βœ… Version 1.2.5
Effective Date: April 6, 2026  |  Last Updated: September 7, 2026  |  App Version: 1.2.5  |  App ID: com.speakmate.english
What's new in this version: SpeakMate now includes a structured Lessons feature, asks for your first name during onboarding to personalise your experience, and syncs your name, learning progress, streak and XP to Cloud Firestore so they are tied to your in-app profile. This version also introduces rewarded ads: a time-based "watch ad to continue" gate in Practice mode (roughly every 2 minutes of conversation) and a similar gate before the first Speaking activity of a Lesson. You can now also permanently delete your account and all associated data directly from Settings β€” this is the only in-app data-reset control; there is no separate "Reset Progress" option. Previous versions kept your profile information only on your device β€” this version stores a subset of it on our servers as well. Also new: requests to our AI providers (OpenAI and Google Cloud Text-to-Speech) are now routed through a secure relay running on Cloudflare Workers, rather than being sent directly from the app β€” see Section 4 for details. This is an infrastructure and security improvement; it does not change what data is collected or why. See Sections 1, 4, 5, 9 and 10 for full details.
Plain English Summary: SpeakMate processes your voice and text through secure AI APIs β€” routed via a Cloudflare Workers relay that we control β€” to coach your English. We do not sell your data. Your full conversation history, voice cache, and detailed message-level scores stay on your device. Your first name, chosen learning level/goal, and summary progress (streak, XP, sessions) are now also stored in Google Cloud Firestore under a random, anonymous account identifier β€” never linked to your real identity, email, or phone number β€” so your progress can be reliably restored. AI voice is generated via Google Cloud Text-to-Speech. The app is free and supported by Google AdMob banner, interstitial, and rewarded ads. AdMob may use your Advertising ID (GAID) to serve relevant personalised ads β€” you can opt out at any time via Google Settings β†’ Ads. A shared Cloud Firestore config document and the Google Play In-App Updates API are used to deliver mandatory app updates.

Contents

  1. Information We Collect
  2. How We Use Your Information
  3. App Permissions
  4. Third-Party Services
  5. Lessons, Firestore & Your Progress
  6. Data Storage & Retention
  7. Security
  8. Children's Privacy
  9. Your Rights
  10. Pricing & Ads
  11. Forced Updates
  12. Policy Changes
  13. Contact Us

πŸ“‹ 1. Information We Collect

We collect only the information required to deliver SpeakMate's coaching, Lessons, role-play features, forced-update mechanism, and ad-supported free experience. Here is a complete breakdown:

Data TypeWhat It IsStorage
First Name / Nickname The name you enter during onboarding, used to greet you (e.g. "Hi, Alex πŸ‘‹") on the Home screen. We do not verify this is your legal or real name β€” you may enter any name you're comfortable with. This step is required to complete onboarding. On-Device + Firestore
Anonymous Account ID A random identifier automatically created by Firebase Authentication (anonymous sign-in) the first time you use the app. It is not linked to your email, phone number, or any other real-world identity, and is used only as a key to store your account stats (Section 1 above) in Firestore. On-Device + Firestore
Voice Input Audio recorded when you tap the microphone. Converted to text on-device via Android's Speech Recognition API. Raw audio is never transmitted to our servers. On-Device Only
Conversation Text Your typed or transcribed messages and AI responses, stored locally in an encrypted Room database on your device. On-Device Only
AI Feedback & Scores Grammar, Vocabulary, Fluency, Spelling, and Pronunciation scores generated per message and stored locally for progress tracking. On-Device Only
Session Records Metadata per practice session: date, duration, topic or mission title, and aggregate scores. On-Device Only
Account Stats (Level, Goal, Streak, XP, Sessions) Your selected level and goal, your daily streak count, total XP, total completed sessions, total minutes practiced, and your lesson-completed counter. Synced to Cloud Firestore under your anonymous account so these summary numbers survive if local app data is cleared. On-Device + Firestore
Lesson & Unit Progress (Detail) Exactly which lessons and units you've completed, and which lesson/unit you're currently on within each learning path. Tracked entirely on-device in an encrypted Room database β€” this level of detail is not sent to or stored in Cloud Firestore. On-Device Only
Lesson & Curriculum Content The Lessons themselves (units, exercises, prompts) are general educational content β€” not personal data β€” fetched from a shared Cloud Firestore library and cached on your device so lessons load quickly and can work offline once downloaded. Firestore (Shared Content)
Role-Play Mission Data Which missions you have completed and your XP earned. Stored locally. On-Device Only
User Preferences & App State Settings such as your selected AI avatar, TTS voice, reminder time, and onboarding draft answers, plus small local state like your current lesson/unit/level/goal position cache. Stored locally via Android SharedPreferences (most settings and cached position) and Android DataStore (avatar selection). On-Device Only
Ad Frequency Counters Non-personal counters (timestamps and completion counts) stored locally via SharedPreferences, used only to space out interstitial ads sensibly β€” e.g. never twice within 3 minutes. On-Device Only
Conversation Context (OpenAI API) A trimmed window of your recent messages (first message + last 2 turns) and the AI coach's system prompt are sent through our Cloudflare Workers relay to OpenAI's API to generate contextual responses. The relay forwards this content and attaches our API credential server-side; it does not store or independently use the content. Transient β€” we do not maintain a permanent server-side copy. Sent via Cloudflare Relay β†’ OpenAI API
TTS Audio β€” Google Cloud The AI coach's reply text is sent through our Cloudflare Workers relay to Google Cloud Text-to-Speech to generate natural-sounding speech. The relay forwards the text and attaches our API credential server-side; it does not store the text or the resulting audio. The audio is streamed back and cached locally. Not stored on our servers. Cloudflare Relay β†’ Google TTS β†’ Local Cache
Advertising ID (AdMob) Google AdMob may collect your device's Advertising ID (GAID) to serve personalised or contextual banner, interstitial, and rewarded ads. The AD_ID permission is automatically injected by the AdMob SDK (play-services-ads) via manifest merging at build time. You can reset or opt out of personalised ads at any time via your device's Google Settings β†’ Ads. Google AdMob
App Update Config (Cloud Firestore) A single shared, non-personal config document (appConfig/android) storing the current minimum required app version number. The app reads this document β€” never anything about you β€” to decide whether to prompt a mandatory update. No personal or account data is transmitted or read as part of this check. Firestore (Shared Config)
Crash Reports Anonymous technical crash logs (stack traces, device model, OS version) sent to Firebase Crashlytics. No conversation content included. Firebase (Anon.)
Analytics & Performance Events Anonymous usage events (e.g., "session started", "lesson selected") and app responsiveness metrics sent to Firebase Analytics and Firebase Performance. No personally identifiable information. Firebase (Anon.)
Home screen visuals: The icons and illustrations shown on the Home screen (streak flame, topic emojis, play/clock icons, etc.) are static images bundled inside the app itself. They are not downloaded from the internet, are not personalised, and do not involve any user data.
SpeakMate is free and ad-supported. The app displays Google AdMob banner ads, interstitial ads (shown between sessions), and rewarded ads (a "watch to continue" gate at a few points, so continued AI usage stays funded β€” see Section 2 and Section 10) to support ongoing development. There are no in-app purchases or subscriptions in this version.
We do NOT collect: your email address, phone number, precise location data, contacts, photos, payment details, biometric data, or a verified real-world identity. The name you enter is self-reported and used only for greeting/personalisation purposes.

🎯 2. How We Use Your Information

Your data is used exclusively to power the SpeakMate experience:

We do not use your data for advertising profiling, data brokering, or any purpose beyond what is listed above.

πŸ” 3. App Permissions

SpeakMate requests the following Android permissions. Each is strictly necessary. Adding Lessons, Firestore sync, and the Cloudflare Workers relay did not require any new permission beyond the existing INTERNET permission:

πŸ”— 4. Third-Party Services

SpeakMate integrates with the following third-party services. Each processes data under their own privacy policies:

Cloudflare Workers (Secure Relay)

New. Your app never contacts OpenAI or Google Cloud TTS directly. Instead, requests are sent to a small relay service we operate on Cloudflare Workers, which attaches our API credentials server-side and forwards the request. Cloudflare processes this data only to relay it in transit and does not store it or use it for its own purposes.

Cloudflare Privacy Policy β†’

OpenAI API (gpt-4o-mini)

Powers all AI conversation, real-time feedback, post-session reviews, and role-play missions. A trimmed window of your conversation (first message + last 2 turns) is transmitted per request, via our Cloudflare Workers relay. No audio is ever sent to OpenAI.

openai.com/privacy β†’

Google Cloud Firestore

New in 1.2.3. Stores your first name, chosen level/goal, streak, XP, session and minute totals β€” keyed to a random anonymous account ID. Also hosts the shared library of Lesson content that every user reads from.

Firebase Privacy β†’

Firebase Authentication (Anonymous)

New in 1.2.3. Silently creates a random, anonymous user ID the first time you open the app β€” no email, phone number, or password is collected. This ID is only used to key your Firestore data.

Firebase Privacy β†’

Google AdMob

Displays banner, interstitial, and rewarded (watch-to-continue) ads to support SpeakMate's free experience. AdMob may collect your device's Advertising ID (GAID) and general device information to serve personalised or contextual ads.

Google Privacy Policy β†’

Google Cloud Text-to-Speech

The AI coach's reply text is sent, via our Cloudflare Workers relay, to Google Cloud TTS (Chirp3-HD voices) to generate natural-sounding speech, cached locally. No conversation history is sent β€” only the reply text.

Google Cloud Privacy β†’

Android Speech Recognition

On-device or Google-powered voice-to-text conversion. We only receive the resulting text transcript; raw audio stays on-device.

Google Privacy β†’

Cloud Firestore (App Update Config)

Used to enforce mandatory app version requirements. On each app launch, the app reads a single shared config document (not tied to your account) containing the current minimum required version. No personal data is transmitted or read.

Firebase Privacy β†’

Google Play In-App Updates API

Delivers mandatory app updates seamlessly inside the app via an IMMEDIATE update flow, governed by Google Play's terms and Google's Privacy Policy.

Google Privacy Policy β†’

Firebase Crashlytics

Anonymous crash reporting. Collects stack traces, device model, Android version. No conversation content included. Disabled in debug builds.

Firebase Privacy β†’

Firebase Analytics

Anonymous event tracking (feature usage, session counts, topic/lesson/mission selections). No personally identifiable information collected.

Firebase Privacy β†’

Firebase Performance

Monitors app responsiveness and network request latency anonymously. Helps detect and resolve performance bottlenecks.

Firebase Privacy β†’
Data transfers: OpenAI, Firebase (including Firestore and Authentication), Google AdMob, and Cloudflare are global service providers that may process data in the United States and other countries. Google Cloud TTS uses regional endpoints. When your data is processed by these services, it may be transferred internationally under their respective data processing agreements.

πŸ“š 5. Lessons, Firestore & Your Progress

Version 1.2.3 introduced structured Lessons and moved part of your profile and progress from purely on-device storage into Google Cloud Firestore. This section explains exactly what changed.

How your anonymous account is created: The first time you complete onboarding, SpeakMate silently signs you in to Firebase Authentication using anonymous sign-in β€” no email, phone number, or password is ever asked for or collected. This creates a random ID (e.g. a1B2c3D4...) that lives in the app's private storage on your device.

What's saved under your anonymous account (users/{"{"}your-anonymous-id{"}"}) in Firestore:

What is not sent to Firestore: your raw voice recordings, full chat transcripts, per-message AI feedback/scores, or device advertising identifier β€” as before. In addition, the detailed record of exactly which lessons and units you've completed and which one you're currently on is tracked entirely on-device in Room, not in Firestore; only the summary counters above (e.g. your total lesson-completed count) are synced. Note that your OpenAI/TTS API credentials are not something you hold or transmit at all β€” those are held solely server-side in our Cloudflare Workers relay (see Section 4 and Section 7).

Lesson content itself (the units, prompts, and exercises you complete) lives in a separate, shared part of Firestore that is the same for every user β€” it is general educational content, not your personal data, and is simply downloaded to your device so lessons load quickly.

Important β€” this was a change introduced in 1.2.3: Prior to 1.2.3, SpeakMate stated that "there is no server-side database containing your profile." That is no longer accurate as of 1.2.3 onward, including this version. The fields listed above are stored on our servers (via Google Cloud Firestore) so that your name, level, goal, and progress can be reliably kept in sync. See Section 6 for retention, and Section 9 for the self-service Delete Account & Data option that removes this record entirely.

πŸ’Ύ 6. Data Storage & Retention

On-Device Storage: Your full conversation history, session records, per-message scores, mission completion status, and the detailed record of exactly which lessons/units you've completed are stored in an encrypted SQLite database (Room). Your app settings, onboarding draft, and cached lesson position are stored via Android SharedPreferences, and your avatar selection via Android DataStore. None of this local-only data is synced to Firestore.

Cloud Firestore Storage: Your name, selected level/goal, streak, XP, session totals, minute totals, and lesson-completed counter are stored on Google Cloud Firestore servers, keyed to your random anonymous account ID (see Section 5). This lets your summary stats be restored reliably even if local app data is cleared while your anonymous session is still active. The detailed, lesson-by-lesson completion record stays in Room only (see above) and is not part of this Firestore sync.

Audio Cache: TTS-generated audio files are cached on your device's internal storage. Clearable at any time via Settings β†’ Clear Voice Cache or via Android's app storage management.

Retention Period β€” On-Device Data: Session records, XP, streaks, and lesson-by-lesson progress are retained until you use Delete Account & Data in Settings, or until you uninstall the app. Cached conversation transcripts are managed separately β€” each new Practice or Lesson session automatically clears the previous one β€” and, along with cached TTS audio, are fully removed by uninstalling the app or clearing its storage via Android's App Info settings.

Retention Period β€” Firestore Data: Retained on our servers for as long as your anonymous account is active, and afterward for backup/operational purposes, or until you delete your account (Section 9). Because sign-in is anonymous, note the following:

OpenAI API & Google Cloud TTS (Transient, via Cloudflare Relay): Messages and reply text passed through our Cloudflare Workers relay to OpenAI and Google Cloud TTS are subject to those providers' own data retention policies. The relay itself does not log, store, or retain the content of these requests β€” it exists solely to attach our API credentials server-side and forward the request. We do not store copies of this content on our own servers.

App Update Config (Transient): No personal data is retained β€” the config document is a single shared value (minimum version number), not tied to any user or device.

AdMob Data: Data collected by Google AdMob is retained and managed by Google in accordance with Google's Privacy Policy.

Firebase Crash/Analytics Data: Anonymous crash and analytics data is retained by Google Firebase for up to 90 days.

πŸ›‘οΈ 7. Security

While we take reasonable precautions, no method of transmission or storage is 100% secure. We encourage you to keep your device updated and secured with a screen lock.

πŸ‘Ά 8. Children's Privacy

SpeakMate is designed for users aged 13 years and older. We do not knowingly collect personal information from children under 13. The name field during onboarding must be filled in to continue, but is unverified β€” you may enter any name or nickname, real or not.

Regarding Ads and Children: SpeakMate is not directed at children under 13. Google AdMob is configured to serve general audience ads in compliance with applicable laws including COPPA.

If you are a parent or guardian and believe your child under 13 has used the app, please contact us using the details in Section 13. We will take prompt steps to address any concerns, including deleting any associated Firestore record.

Users between 13–17 should have a parent or guardian review this Privacy Policy before use.

βš–οΈ 9. Your Rights

πŸ’° 10. Pricing & Ads

SpeakMate is free to download and use, supported by Google AdMob advertisements.

How ads work in SpeakMate:

Banner Ads β€” Displayed at carefully chosen positions within the app, never overlapping interactive elements or core coaching/lesson features.

Interstitial Ads β€” Full-screen ads shown at natural session transition points, specifically after a practice session ends and before the review screen appears. They are never shown during active coaching conversations or mid-lesson. Users can dismiss them after a short delay as required by Google Play Policy.

Rewarded Ads β€” In Practice mode, roughly every 2 minutes of live conversation, the mic gates behind "Watch Ad to Continue" right after the AI finishes speaking (never during your own recording). Watching or closing the ad unlocks it again; if no ad is available, the mic stays gated while a new one loads in the background rather than unlocking for free, and "End Session" is always available if you'd rather stop. In Lessons, a similar gate appears before the first Speaking activity, with a visible "Not Now" option to exit instead. This exists because continuing to chat with the AI coach costs us real OpenAI and Google Cloud TTS usage fees per turn. No bonus XP or in-app currency is awarded for watching.
Future Changes: Features and pricing are subject to change in future versions. A future update may introduce paid features, subscriptions, or a premium ad-free tier. You will always be notified before any charges apply, and payment always requires your explicit action through Google Play.

πŸ”„ 11. Forced / Mandatory App Updates

SpeakMate uses a shared Cloud Firestore config document combined with the Google Play In-App Updates API to deliver a version-gated update mechanism, protecting users from running outdated or insecure app versions.

Privacy note: The forced update check does not transmit or read any personal data. The Firestore document it reads is a single shared value (the minimum version number) β€” not tied to your anonymous account, name, or any other field described in Section 1.

We aim to minimise the frequency of forced updates and only trigger them when strictly necessary for security, stability, or compatibility reasons.

πŸ“ 12. Changes to This Policy

We may update this Privacy Policy from time to time to reflect changes in our practices, app features, or legal requirements. When we make significant changes, we will:

Your continued use of SpeakMate after any changes constitutes your acceptance of the revised policy.

βœ‰οΈ 13. Contact Us

If you have questions, concerns, or requests regarding this Privacy Policy or how we handle your data, please reach out:

SpeakMate Privacy Team

We aim to respond to all privacy-related enquiries within 5 business days.

developerashraf13@gmail.com
Requesting account deletion by email: We always recommend using Settings β†’ Delete Account & Data in the app itself (Section 9) β€” it's instant and guaranteed to work. If you can't access the app (e.g. it's been uninstalled) and need to request deletion by email instead, please write to us at the address above and include:
  • The name shown in your app profile (the one used to greet you)
  • Your lessons completed count, as shown on your Home or Progress screen
  • Your total XP, as shown on your Home or Progress screen
Because SpeakMate uses anonymous sign-in, we have no email, phone number, or username to look you up by β€” these three details are the only way we can attempt to locate and confirm the correct record before deleting it. We'll use them solely for that purpose and will not retain them afterward.