Plain English Summary: SpeakMate processes your voice and text through secure AI APIs to coach your English. We do not sell your data. We do not permanently store your conversations on our servers. Your conversation history, scores, and progress stay on your device. AI voice is generated via Google Cloud Text-to-Speech. The app is free and supported by Google AdMob banner and interstitial ads. AdMob may use your Advertising ID (GAID) to serve relevant personalised ads โ you can opt out at any time via Google Settings โ Ads on your device. Firebase Remote Config and the Google Play In-App Updates API are used to deliver mandatory app updates to ensure you always have a secure, up-to-date experience.
๐ 1. Information We Collect
We collect only the information required to deliver SpeakMate's coaching, role-play features, forced-update mechanism, and ad-supported free experience. Here is a complete breakdown:
| Data Type | What It Is | Storage |
| 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 |
| Role-Play Mission Data |
Which missions you have completed and your XP earned. Stored locally. |
On-Device Only |
| User Preferences |
Settings such as your selected AI avatar/voice, notification preferences, and default topic. Stored locally via Android DataStore. |
On-Device Only |
| XP, Achievements & Streak |
Gamification data including experience points, level, badges earned, and daily streak count. Stored locally only. |
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 to OpenAI's API to generate contextual responses. Transient โ we do not maintain a permanent server-side copy. |
Sent to OpenAI API |
| TTS Audio โ Google Cloud |
The AI coach's reply text is sent to Google Cloud Text-to-Speech to generate natural-sounding speech. The audio is streamed back and cached locally. Not stored on our servers. |
Google TTS โ Local Cache |
| Advertising ID (AdMob) |
Google AdMob may collect your device's Advertising ID (GAID) to serve personalised or contextual banner and interstitial ads. The AD_ID permission is automatically injected by the AdMob SDK (play-services-ads) via manifest merging at build time โ it does not need to be manually declared. Managed entirely by Google's AdMob SDK. You can reset or opt out of personalised ads at any time via your device's Google Settings โ Ads. |
Google AdMob |
| Remote Config Parameters (Firebase) |
Firebase Remote Config fetches configuration flags used to enforce mandatory app updates. This includes the current minimum required app version number. No personal data is transmitted โ only the app fetches remote flags from Firebase servers. |
Firebase Remote Config |
| Crash Reports |
Anonymous technical crash logs (stack traces, device model, OS version) sent to Firebase Crashlytics. No conversation content included. |
Firebase (Anon.) |
| Analytics Events |
Anonymous usage events (e.g., "session started", "mission selected") sent to Firebase Analytics. No personally identifiable information. |
Firebase (Anon.) |
SpeakMate is free and ad-supported. The app displays Google AdMob banner ads and interstitial ads (shown between sessions) to support ongoing development. There are no in-app purchases or subscriptions in this version.
We do NOT collect: your real name, email address, phone number, location data, contacts, photos, payment details, biometric data, or any personally identifiable information beyond what is described above.
๐ฏ 2. How We Use Your Information
Your data is used exclusively to power the SpeakMate experience:
- Real-Time AI Coaching: Your conversation messages are sent to OpenAI (gpt-4o-mini) to generate grammar corrections, vocabulary suggestions, fluency tips, pronunciation notes, and scores in real time.
- Role-Play Missions: Your messages are sent to OpenAI with a custom role-play system prompt so the AI stays in character as the specified scenario partner.
- Progress Tracking: Scores and session records stored on-device power your Progress dashboard, skill bars, and weekly streak calendar.
- AI Voice Responses: The AI coach's text reply is sent to Google Cloud TTS to synthesise natural-sounding speech, cached locally for instant replay.
- Banner & Interstitial Ads (AdMob): Google AdMob banner ads and interstitial ads are displayed to support the free experience. Banner ads appear within content areas; interstitial ads are shown at natural transition points (e.g., after a practice session ends, before the review screen). Ad content is determined by Google based on contextual signals and, where personalisation is enabled, your Advertising ID (GAID).
- Forced / Mandatory App Updates: Firebase Remote Config is used to check whether the version of the app you are running meets the minimum required version. If your version is below the minimum, you will be shown a mandatory update prompt directing you to the Google Play Store. This ensures all users benefit from the latest security fixes and features.
- Daily & Mission Reminders: Android WorkManager schedules local device notifications โ no data leaves your device for this feature.
- Crash & Stability Improvements: Anonymous crash reports help us identify and fix technical issues.
- Usage Analytics: Anonymous event counts help us understand which features are most used so we can improve the app.
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:
- ๐ค RECORD_AUDIO โ Required for voice-to-text input. Audio is processed on-device โ raw audio is never uploaded to our servers.
- ๐ Speech Recognition Query โ SpeakMate declares a
<queries> intent for android.speech.RecognitionService so Android 11+ can discover the Google Speech Recognition service. No data is collected by this declaration โ it is purely a visibility requirement introduced in Android 11.
- ๐ INTERNET โ Required to communicate with OpenAI, Google Cloud TTS, Google AdMob, Firebase Remote Config, and Firebase services.
- ๐ก ACCESS_NETWORK_STATE โ Allows the app to check connectivity before API calls and before fetching remote config.
- ๐ POST_NOTIFICATIONS โ Required on Android 13+ to send daily practice and mission reminders. You explicitly opt in via the Settings screen.
- ๐ณ VIBRATE โ Used for haptic feedback when the microphone starts recording.
- ๐ RECEIVE_BOOT_COMPLETED โ Required to reschedule reminder notifications after device restarts. The app also listens for
QUICKBOOT_POWERON (used on certain Android devices for fast-boot events) for the same purpose.
- ๐ข AD_ID โ Automatically added to the app by the Google AdMob SDK (
play-services-ads) via manifest merging. Not manually declared โ the SDK injects it at build time. Used to access your device's Advertising ID (GAID) to serve relevant personalised or contextual banner and interstitial ads. You can opt out of ad personalisation at any time via Google Settings โ Ads on your device.
๐ 4. Third-Party Services
SpeakMate integrates with the following third-party services. Each processes data under their own privacy policies:
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. No audio is ever sent to OpenAI.
openai.com/privacy โ
Google AdMob
Displays banner ads (within content areas) and interstitial ads (at natural session transition points) 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. The AD_ID permission is automatically added by the AdMob SDK via manifest merging. Ad placements comply with Google Play Ad Policy โ never interfering with core coaching functionality.
Google Privacy Policy โ
Google Cloud Text-to-Speech
The AI coach's reply text is sent 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 โ
Firebase Remote Config
Used to enforce mandatory app version requirements. Fetches a minimum version flag on each app launch. If your version is outdated, triggers the Google Play In-App Update flow or a fallback dialog. No personal data is transmitted.
Firebase Privacy โ
Google Play In-App Updates API
Used to deliver mandatory app updates seamlessly inside the app via an IMMEDIATE update flow. If a forced update is required, Google Play downloads and installs the latest version without you needing to visit the Play Store manually. 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/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, and Google AdMob are based in the United States. 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. Data Storage & Retention
On-Device Storage: Your conversation history, session records, progress scores, mission completion status, XP, achievements, streak data, and preferences are stored in an encrypted SQLite database (Room) and Android DataStore on your device. Not synced to any cloud service operated by us.
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 is retained until you:
- Use the "Reset Progress" option in Settings.
- Uninstall the SpeakMate app from your device.
- Clear the app's data via Android's App Info settings.
OpenAI API (Transient): Messages sent to OpenAI are subject to OpenAI's own data retention policies. We do not store copies on our servers.
Firebase Remote Config (Transient): Remote Config fetches configuration flags (minimum app version) from Firebase. No personal data is retained โ only anonymous fetch counts are logged by Firebase.
AdMob Data: Data collected by Google AdMob (Advertising ID, ad interaction events) is retained and managed by Google in accordance with Google's Privacy Policy.
Firebase Data: Anonymous crash and analytics data is retained by Google Firebase for up to 90 days.
No Server-Side User Database: SpeakMate does not operate a user account system. There is no server-side database containing your profile or conversation history maintained by us.
๐ก๏ธ 6. Security
- Encrypted Local Storage: All on-device data is stored in an encrypted Room database protected by Android's built-in encryption.
- HTTPS Only: All network communications use TLS/HTTPS. Cleartext traffic is explicitly disabled in the app manifest.
- API Key Security: Third-party API keys are injected at build time via BuildConfig and obfuscated via ProGuard/R8 in release builds.
- Signed APK: The app is signed with v1, v2, and v3 APK signing schemes to ensure integrity.
- Forced Updates: Firebase Remote Config enforces a minimum app version so users always run a version with the latest security patches. Outdated versions are blocked with a non-dismissible update prompt.
- Minimal Data Collection: We follow the principle of data minimisation โ collecting only what is strictly necessary.
- Local Audio Cache Isolation: TTS audio files are cached in the app's private internal cache directory, inaccessible to other apps.
- Ad Placement Policy: AdMob banner and interstitial ads comply with Google Play Ad Policy โ banners are not overlapping interactive elements, interstitials are shown only at natural session transition points, never during active coaching.
While we take reasonable precautions, no method of transmission over the internet is 100% secure. We encourage you to keep your device updated and secured with a screen lock.
๐ถ 7. Children's Privacy
SpeakMate is designed for users aged 13 years and older. We do not knowingly collect personal information from children under 13.
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 12. We will take prompt steps to address any concerns.
Users between 13โ17 should have a parent or guardian review this Privacy Policy before use.
โ๏ธ 8. Your Rights
- Access: All your data is visible directly inside the app in the Sessions, Progress, and Missions screens.
- Deletion: Use Settings โ Reset Progress to delete all locally stored data. Uninstalling the app removes all remaining local data.
- Opt-Out of Ad Personalisation: Go to Google Settings โ Ads on your device to reset your Advertising ID or opt out of personalised ads. Non-personalised contextual banner and interstitial ads will still be shown.
- Opt-Out of Analytics: You can disable Firebase Analytics via Google's device-level settings.
- Notification Control: Disable reminders at any time via Settings โ Notifications or your device's notification settings.
- Microphone Access: Revoke microphone permission at any time in Android Settings โ Apps โ SpeakMate โ Permissions. The app will still function in text-only mode.
- GDPR / CCPA: If you are in the European Economic Area or California, you have additional rights including data portability and the right to lodge a complaint with your local supervisory authority.
๐ฐ 9. 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 (e.g., the review screen), never overlapping interactive elements or core coaching 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. Users can dismiss them after a short delay as required by Google Play Policy.
- The app is completely free โ all coaching, missions, progress tracking, and features are available at no cost.
- Ad revenue helps cover API costs (OpenAI, Google Cloud TTS) and supports continued development.
- You can opt out of personalised ads at any time via Google Settings โ Ads on your device. Non-personalised contextual ads will still be shown if you opt out.
- There are no in-app purchases or subscriptions in this version.
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.
๐ 10. Forced / Mandatory App Updates
SpeakMate uses Firebase Remote Config combined with the Google Play In-App Updates API to deliver a two-layer forced update mechanism. This feature is in place to protect users by ensuring outdated or insecure versions of the app cannot be used indefinitely.
How it works โ step by step:
- Step 1 โ Version check via Firebase Remote Config: Each time you open SpeakMate, the app silently fetches a
min_version_code flag from Firebase Remote Config. This is compared against your currently installed app version entirely on-device.
- Step 2 โ Google Play In-App Updates (primary): If your version is below the minimum, SpeakMate first attempts to trigger an IMMEDIATE update flow using the official Google Play In-App Updates API. This shows Google's own native update UI directly inside the app, downloading and installing the update seamlessly without leaving the app.
- Step 3 โ Fallback dialog (if Play update unavailable): If the Play Core update is not available or not yet rolled out to your device, a non-dismissible dialog is shown instead, directing you to open the Google Play Store manually to download the latest version. The app closes after you tap "Update Now" so you cannot bypass the requirement.
- You cannot use the app until the update is installed. This is intentional and ensures all users benefit from critical bug fixes and security patches.
Privacy note: The forced update check does not transmit any personal data. Firebase Remote Config only delivers a version number flag from our servers to your device โ your installed version is compared locally, not sent to our servers. The Google Play In-App Updates API communicates only with Google Play servers using your existing Google Play account, which is governed by Google's Privacy Policy.
We aim to minimise the frequency of forced updates and only trigger them when strictly necessary for security, stability, or compatibility reasons.
๐ 11. 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:
- Update the "Last Updated" date at the top of this page.
- Display an in-app notice the next time you open SpeakMate after a material change.
Your continued use of SpeakMate after any changes constitutes your acceptance of the revised policy.
โ๏ธ 12. Contact Us
If you have questions, concerns, or requests regarding this Privacy Policy or how we handle your data, please reach out: