EngKrub Privacy Policy

Last updated: July 21, 2026

This Privacy Policy explains how English TestLab processes information when you use EngKrub, including its host app, Keyboard Extension, Cloud AI features, subscriptions, and local privacy controls.

1. Privacy summary

  • Basic keyboard typing controls work without Full Access.
  • Cloud AI runs only after you tap EngKrub in the host app or AI Rewrite in the keyboard and grant the required consent.
  • EngKrub does not stream keystrokes or send text while you are merely typing.
  • Analytics and operational logs must not contain a raw message, raw AI output, clipboard text, or Protected Terms.
  • Local AI History is stored on your device and can be cleared or disabled in Settings.

2. Keyboard Full Access

Thai and English typing, Delete, Space, Return, and Next Keyboard controls work locally without Full Access. Apple requires Full Access for the Keyboard Extension to use network services. EngKrub uses it for keyboard Cloud AI only after you grant third-party AI consent, enable keyboard AI, and tap AI Rewrite.

The keyboard reads only the bounded current text segment made available by iOS for the explicit rewrite. It does not stream every keystroke, continuously monitor conversations, or send surrounding context while you type.

3. Explicit Cloud AI requests

Before the first Cloud AI request, EngKrub asks for consent to send the selected or current message text through Firebase Cloud Functions to OpenAI. A request is created only after an explicit tap in the host app or Keyboard Extension. You can review or revoke this consent later in Settings; local typing remains available when consent is off.

The submitted text, any Protected Terms needed for that rewrite, and the generated output pass through Firebase and OpenAI to complete the request. Firestore does not store raw input, raw output, Protected Terms, message hashes, or Local AI History content.

When short-lived OpenAI response recovery is enabled, an opaque provider response identifier may be retained so the same request can recover an exact answer after an interruption. EngKrub requests provider deletion after delivery and uses bounded cleanup for undelivered or deletion-pending responses. Firestore recovery records contain operational identifiers and lifecycle metadata, not the raw prompt or answer.

4. Firebase and analytics

EngKrub uses Firebase Authentication to create an anonymous user identifier shared by the host app and keyboard for quota and entitlement checks. Firebase Cloud Functions processes explicit AI requests, and Firebase Analytics receives privacy-safe event metadata from the host app.

Allowed analytics may include feature or mode selection, source, character-count and latency buckets, quota tier, bounded retry counts, outcome, copy actions, and error categories. EngKrub does not include raw message text, raw output, names, email addresses, phone numbers, clipboard content, exact message hashes, Firebase user identifiers, request identifiers, provider response identifiers, or Firestore paths in analytics events or application logs.

Keyboard-safe metadata is queued locally and sent by the host app; the Keyboard Extension does not directly link Firebase Analytics.

5. RevenueCat and Apple purchases

The host app uses RevenueCat to load subscription products, process purchase and restore results from Apple, and verify the EngKrub Pro entitlement. RevenueCat is identified with the same Firebase Authentication user identifier so the server can apply the correct Cloud AI quota. The Keyboard Extension does not link RevenueCat.

Apple processes billing and payment information under Apple's own policies. EngKrub receives subscription and entitlement status, not your full payment-card details.

6. Local AI History

Local AI History is enabled by default. It stores successful explicit prompts and generated answers from the host app and keyboard in a shared on-device file. History is local-only, is not cloud-synced, is excluded from device backup, and uses iOS Data Protection.

History retains the latest 200 generated-answer entries and removes the oldest complete thread when the cap is exceeded. It may include the submitted prompt, generated answers, source, visible style label, user-facing notes, quota snapshot, and local timestamps. It does not store passive typing, surrounding keyboard context, Protected Terms snapshots, analytics payloads, account or backend identifiers, request identifiers, hashes, or raw server metadata.

You can clear History while keeping future capture enabled, or turn History off and clear it from Settings. After disable completes, in-flight host or keyboard work cannot save a later entry.

7. Protected Terms

Protected Terms are names, product names, acronyms, or Thai-English terms that you want preserved in a rewrite. They are stored locally, sent to Firebase and OpenAI only with the explicit Cloud AI request that needs them, never used for analytics, and not synced to a server dictionary. You can clear them in Settings.

8. Local quality feedback

Good or Bad feedback is stored locally and may contain rating, selected mode, issue identifiers, input and output character counts, a changed-output flag, timestamp, and a local identifier. It does not contain raw input, raw output, account identifiers, backend identifiers, or analytics payloads. You can clear it in Settings.

9. Retention and your choices

  • Revoke third-party AI consent in Settings.
  • Disable and clear Local AI History in Settings.
  • Clear Protected Terms and local quality feedback in Settings.
  • Remove other local app data by using available controls or uninstalling the app.
  • Contact us for privacy questions about information controlled by English TestLab.

Firebase, OpenAI, RevenueCat, and Apple may retain technical, transaction, security, or diagnostic records according to their own policies and legal obligations.

10. Changes to this policy

We may update this Privacy Policy as EngKrub changes. We will update the Last updated date and publish the current version at this URL.

11. Contact us

For privacy questions or requests, contact englishtestlab.app@gmail.com. For general product help, visit our Support page.