App Store Review Notes
This page is provided to assist Apple App Store reviewers in evaluating the IELTS Masterflow app. It covers every compliance checkpoint, exact navigation flows, demo credentials, and evidence for each privacy/consent requirement.
App: IELTS Masterflow · Developer: DLR Coaching · Built: May 2026
Quick Compliance Checklist
| App Store Connect privacy labels updated | Confirmed |
| Privacy Policy link reachable in-app & in metadata | Confirmed |
| ATT prompt — not shown (no cross-app tracking) | N/A |
| No tracking before consent (GA4 blocked by default) | Confirmed |
| Microphone usage string present & localised | Confirmed |
| AI consent UI gates all outgoing AI calls | Confirmed |
| IAPs present and content unlocks on purchase | Confirmed |
| Clear review notes with demo credentials | Confirmed |
Privacy Policy URL
Declared in App Store Connect: ieltsmasterflow.com/PrivacyPolicy (reachable without login, no redirect, loads correctly on iOS Safari).
In-App link
The Privacy Policy is linked in three places inside the app: (a) the footer of every page, (b) the AI Consent modal ("learn more" text), and (c) the Settings / account section in the mobile nav.
Data Types Declared in App Store Connect
| Data Type | Collected? | Linked to User? | Used for Tracking? |
|---|---|---|---|
| Contact Info — Email | Yes | Yes | No |
| Contact Info — Name | Yes | Yes | No |
| User Content — Written text | Yes (essays) | Yes | No |
| User Content — Audio (transient) | Yes — deleted after transcription | No | No |
| Identifiers — User ID | Yes | Yes | No |
| Usage Data | Yes (anonymised) | No | No |
| Diagnostics / Crash data | Yes (via platform) | No | No |
| Financial — Purchase history | Yes (Apple IAP, via StoreKit) | Yes | No |
| Device ID / IDFA | No | — | — |
| Location | No | — | — |
| Contacts / Calendar / Health | No | — | — |
| Browsing history | No | — | — |
All analytics are first-party and anonymised (Google Analytics 4 with analytics_storage denied by default until the user explicitly accepts analytics cookies). GA4 is isolated to the app's WKWebView and cannot be read by Safari or other apps.
This is explicitly documented in the Privacy Policy §6. If the app's tracking practices change in a future update, an ATT prompt will be implemented before release.
GA4 analytics storage is permanently denied via the Consent API on module load — no analytics cookies are written at any point:
// components/CookieConsent.jsx — applied on module load
if (typeof window !== 'undefined' && window.gtag) {
window.gtag('consent', 'default', {
analytics_storage: 'denied',
ad_storage: 'denied',
});
}
// No UI rendered — component returns nullOnly strictly necessary cookies are used (auth session, Stripe fraud-prevention). These do not require user consent under GDPR or Apple's guidelines as they are essential for the service to function.
No tracking occurs. No cookie banner appears. No ATT prompt is needed.
NSMicrophoneUsageDescription value:
"This app requires microphone access to record your voice notes and audio memos, which are saved directly inside your app history for playback."
Localised strings (Info.plist / Localizable.strings)
| Locale | String |
|---|---|
| en (default) | This app requires microphone access to record your voice notes and audio memos, which are saved directly inside your app history for playback. |
| en-GB | This app requires microphone access to record your voice notes and audio memos, which are saved directly inside your app history for playback. |
| ar | يستخدم IELTS Masterflow الميكروفون لتسجيل إجاباتك الشفهية أثناء جلسات تدريب المهارة الشفهية. على سبيل المثال، عند الإجابة على سؤال 'صف رحلة لا تُنسى'، يتم تسجيل صوتك وتحليله بالذكاء الاصطناعي لمنحك تقييماً ونصائح للتحسين. يُحذف الصوت فور النسخ. |
| zh-Hans | IELTS Masterflow 使用麦克风在口语练习环节录制您的口头回答。例如,当您回答『描述一次难忘的旅行』之类的提示卡问题时,您的声音将被录制、转录并由 AI 分析,以提供评分和详细的流利度反馈。录音在转录后立即删除。 |
| hi | IELTS Masterflow माइक्रोफोन का उपयोग स्पीकिंग अभ्यास सत्रों के दौरान आपके बोले गए उत्तरों को रिकॉर्ड करने के लिए करता है। उदाहरण के लिए, जब आप 'एक यादगार यात्रा का वर्णन करें' जैसे प्रश्न का उत्तर देते हैं, तो आपकी आवाज़ रिकॉर्ड की जाती है और AI द्वारा विश्लेषण किया जाता है। ट्रांसक्रिप्शन के तुरंत बाद ऑडियो हटा दिया जाता है। |
When the permission prompt appears:
NSMicrophoneUsageDescription prompt on first use.The microphone is only accessed when the user actively taps Record. It is never accessed in the background and is not used for any purpose other than recording the spoken IELTS response.
How it works (code summary):
// hooks/useAIConsent.js
const CONSENT_KEY = "ielts_ai_consent";
export function hasAIConsent() {
const record = JSON.parse(localStorage.getItem(CONSENT_KEY) || "null");
return record?.granted === true;
}
// In Writing / Speaking / DailyQuestion pages:
// Before calling InvokeLLM → check hasAIConsent().
// If false → show <AIConsentModal>.
// Modal "I Agree" button → setAIConsent(true) → resumes submission.
// Modal "Decline" → clears form, nothing is sent.What the modal shows:
- Exact fields that will be sent (response text, question prompt, task metadata) with real examples.
- Prominent green box listing what is never sent (name, email, device ID, IP, audio).
- Named third parties (Anthropic, Base44) with links to their privacy policies.
- Link to revoke consent at any time from the Privacy Policy.
Features gated by AI consent:
- Writing — Submit for Grading (Task 1 & Task 2)
- Speaking — AI feedback on recorded/typed responses
- Daily Question — AI coaching feedback on Home dashboard
To test the AI consent flow:
To revoke consent:
Available Plans:
| Plan | iOS (IAP Product ID) | Content Unlocked |
|---|---|---|
| Free (default) | N/A | Basic practice questions, 1 mock test/month, basic band estimate |
| Basic | com.dlrcoaching.ieltsmasterflow.basic_monthly | Unlimited tests, detailed AI feedback, full 4-criteria band breakdown, progress analytics, timed simulation |
| Pro | com.dlrcoaching.ieltsmasterflow.pro_monthly | Everything in Basic + model answer comparisons, weakness analysis reports, Band 9 samples, priority AI grading |
How IAP works (iOS):
- On the Pricing screen, iOS users see "Subscribe with Apple" buttons that invoke StoreKit via a JavaScript → WKWebView message bridge (
window.webkit.messageHandlers.iap). - On successful purchase, the native layer posts a
iap_resultmessage back to the WebView, which updates the user'ssubscription_tierin the database. - Users who subscribed on the web can tap "Restore previous purchases" at the bottom of the Pricing screen to restore access.
- All gated features unlock immediately after purchase confirmation without requiring re-login.
Cross-platform access (guideline 3.1.3(b)):
Users who subscribed via the web (Stripe) can access their content in the iOS app by logging in. Their subscription_tier is read from the server on every session — no iOS purchase is required for existing web subscribers.
iOS pricing flow for review:
The demo account is on the Free tier. The paywall overlay on the Writing feedback panel (criteria breakdown blurred) is visible after grading. This verifies the purchase gate is active.
DEMO ACCOUNT (Free Tier — all features accessible)
Email: reviewer@dlrcoaching.com
Password: IELTSReview2026!
All features are accessible. AI features require completing the in-app consent flow on first use. Subscription paywall overlays are visible as a Free-tier user.
Complete Review Walkthrough (in order):
Flow A — Cookie / Analytics Consent
Flow B — AI Consent (Writing)
Flow C — Microphone (Speaking)
NSMicrophoneUsageDescription prompt (first time only).Flow D — Daily Question (AI Consent, Home)
Flow E — In-App Purchase (iOS)
Flow F — Consent Revocation
Flow G — Account Deletion
Additional Notes for Reviewers
- The app requires an account to access practice features. Login is via email/password or social login — there is no guest mode for graded features.
- The Listening and Reading modules currently use a pattern-matching scoring approach (no AI call required). They do not trigger the AI consent modal.
- Stripe web checkout has been removed from in-app flows. All purchases on iOS are handled exclusively via Apple IAP (StoreKit). No external payment links or Stripe redirects exist in the app.
- All API calls are made over HTTPS. No plain-text transmission occurs.
- The app does not use background location, background refresh, push notifications, or any capabilities requiring additional entitlements beyond Microphone access.
- Audio files are uploaded to a private storage bucket, transcribed, and then immediately deleted. They are never stored persistently and are never forwarded to Anthropic.
- The app does not contain any user-generated content visible to other users (all practice attempts are private to the individual user).
Questions? Contact: privacy@ieltsmasterflow.com