Privacy Policy
Last updated: 2026-09-02
1. Scope and who we are
Betterflo (“the App”) is published by MOBILEBYTESENSEI PVT LTD (“we”, “us”, “our”), a company incorporated in India. This policy explains what personal data the App processes, on what basis, and what you can do about it.
This policy covers the betterflo Android application in its currently published version, across both of the ways it lets you dictate:
- the floating mic, a bubble that sits over the app you are using and inserts text through an Android Accessibility Service; and
- the betterflo keyboard, an Android input method you can type on as well as dictate from, and a complete alternative for anyone who prefers not to enable that service. Because it is a keyboard, it receives what you type; section 4.1 says what it does with that.
Section 9 covers the betterflo website separately, because it behaves differently from the App and is governed by different practices.
The App has no user accounts. We do not ask for your name, email address, phone number or any other identifier in order for you to use it.
2. Summary of what the App processes
| Category | Processed on your device | Transmitted to us or a processor |
|---|---|---|
| Microphone audio | Yes — converted to text locally | No |
| Dictated and inserted text | Yes | No |
| Contents of the field you dictate into | Yes — read to place text, then discarded | No |
| Dictation history, personal dictionary, snippets | Yes — stored locally | No |
| Diagnostic and usage analytics | Yes | Yes — on by default, can be switched off |
| Crash reports, including native crashes | Yes | Yes — on by default, can be switched off |
| Advertising identifier | Not collected | No |
| Location | Not collected | No |
| Contacts, photos, files, calendar | Not accessed | No |
The single material transmission is described in section 6.
3. Dictation: processed on your device
Speech recognition, voice-activity detection, text cleanup and the optional English-output translation all run on your device, using models installed on it.
- Microphone audio is converted to text locally. It is not uploaded, and the App contains no code path that would transmit it.
- The resulting text is inserted into the field you are dictating into, by the floating mic’s Accessibility Service or by the betterflo keyboard, depending on which surface you are using.
- Password and other secure fields are excluded. Neither surface writes into a field that reports itself as a password or one-time-code field, and neither reads or retains the surrounding text of such a field.
This is a property of how the App is built rather than a setting: there is no server component that dictation could be routed to in this version.
4. Permissions
We request only the permissions dictation requires. Each is used for the stated purpose and no other.
- Microphone (
RECORD_AUDIO) — captures your voice for on-device dictation. - Display over other apps (
SYSTEM_ALERT_WINDOW) — draws the floating mic over the app you are using. Required only for the floating-mic surface. - Foreground service — keeps the dictation pipeline running while you are dictating inside another app. While it runs it is visible as an ongoing notification, which you can use to stop it.
- Notifications — displays that notification. Declining it does not disable dictation, but it removes the off-switch the notification provides.
- Accessibility Service — described in full below.
- Network access — downloads language and model bundles, and reports whether your connection is metered so we can warn you before a large download.
- Vibration — brief haptic feedback when dictation starts and when text is inserted.
The App also declares a fixed list of approximately twenty-eight named applications so that dictation history can display the correct name and icon of the app a dictation was written into. This resolution happens entirely on your device. We do not use Android’s broad package-visibility permission, and we cannot enumerate the apps installed on your device.
4.1 The Accessibility Service
The floating mic inserts text using an Android Accessibility Service. This is a broad permission by design, so we state its use precisely:
- What it accesses. The text field you are currently dictating into: its existing contents and your cursor position within it.
- Why. So your dictated words are placed at the cursor rather than replacing what you had already typed.
- What happens to that content. It is used to position the text and then discarded. It is not stored, written to logs, or transmitted. The service contains no networking code.
- When it acts. Only when you tap the microphone. It does not respond to screen content at any other time.
- What it refuses. It does not write into password or one-time-code fields.
Before the App asks Android for this permission, it shows an in-app disclosure stating the above, which you can decline. You can withdraw the permission at any time, either from that same screen or from Android Settings. The Accessibility Service Statement is the standalone version of this section.
If you prefer not to grant it, the betterflo keyboard provides the same dictation with no accessibility permission involved — and, being a keyboard, typing too.
4.1 What the keyboard does with what you type
An Android input method necessarily receives the text you enter through it; Android warns you of this before you enable any keyboard, including ours. In this build:
- Word suggestions are matched against a word list that ships inside the app. Nothing you type is sent anywhere to produce them.
- The action bar — Fix, Tone, Rewrite and Translate — reads the text you point it at, because that is what rewriting a sentence requires. The work runs on your device. The result is offered beside your own text and replaces nothing until you choose it.
- Nothing typed is stored as a record of your typing, and nothing is uploaded. On-device dictation history (section 5) stores dictations you made, not your keystrokes.
5. Data stored on your device
The following are stored locally, in the App’s private storage. They are not transmitted to us.
- Dictation history — past dictations, so you can review or reuse them. Storing history is on by default and retained until you delete it. In Settings → Privacy you can turn storage off, change retention to a rolling 24 hours, choose never to store (which also deletes existing entries), or clear the whole history immediately.
- Personal dictionary — words and names you have taught the recognizer.
- Snippets — trigger phrases and the text they expand to.
- Settings and model files — your preferences and the downloaded model bundles.
Uninstalling the App removes all of it.
6. Diagnostics and usage analytics
This is the one category of data the App transmits, and it is enabled by default.
The App uses Google Firebase Analytics and Firebase Crashlytics (including its native-crash component) to tell us how the App performs in real use and how it fails. When enabled, these collect:
- Product usage events — which screens are opened, which settings are changed, whether a dictation succeeded or failed, and timing and outcome measurements. Values are fixed labels, category names and numbers.
- Crash reports — stack traces, application-not-responding reports and native crashes, with the device state at the time of the crash.
- Technical and device data — app version, Android version, device model and manufacturer, and a pseudonymous per-installation identifier generated by Firebase. Firebase also derives an approximate region from the network address the report arrives from.
What is excluded, by design and by automated test. No audio, no transcript, no partial recognition result, no contents of the field you dictated into, no dictionary entry, no snippet text, no search query, and no identifier of the app you dictated into are included in any event. Our test suite fails the build if an analytics field is shaped like message content.
No advertising identifier is collected. The advertising-ID permissions that the Firebase libraries would otherwise add are removed from the App before it is built, and analytics advertising-ID collection is disabled.
6.1 Switching it off, and deletion
Open Settings → Privacy → Usage analytics and turn it off. Doing so:
- stops the next event from being sent — the setting is checked on every individual event rather than once per session;
- disables collection inside the Firebase libraries themselves, so they stop gathering data on their own account; and
- deletes what was already collected — the App instructs Firebase to reset the installation’s analytics state, including its per-installation identifier, and to discard crash reports still queued on the device.
Turning it off is therefore both an objection to further processing and a deletion request, exercisable without contacting us. You may turn it back on at any time.
6.2 Legal basis
Under India’s Digital Personal Data Protection Act, 2023, we process this data for the legitimate purpose of maintaining and improving the App’s technical performance and security, with notice given by this policy and by the in-app setting, and with a withdrawal mechanism available at all times. Where the EU GDPR applies, our basis is legitimate interests in the security, stability and improvement of the App, balanced against the limited and pseudonymous nature of the data, and subject to the same in-app objection mechanism.
7. Network activity that is not data collection
The App downloads speech-recognition, voice-activity-detection and translation model bundles from a third-party model host at fixed, immutable revisions, and verifies each against a published checksum before installing it.
These requests carry no personal data beyond what any HTTP request necessarily reveals. They are the App retrieving software components it needs in order to run, in the same sense that an application update is, and they are not a collection of information about you.
8. Features that are not active in this release
Some settings and documentation refer to capabilities that are not operative in the published version: an optional cloud processing tier, an optional accuracy-improvement programme that would upload correction pairs, and user accounts. No code path in this release transmits data for any of them.
If any of them ships, this policy will be amended before that version is released, the feature will be off until you choose to enable it, and the change will be described explicitly rather than by silent revision.
9. The betterflo website
This section applies to the pages at this domain, not to the App.
- Analytics. The site uses Google Analytics 4 and Microsoft Clarity, which begin on page load rather than after a consent prompt. Google Analytics records the page viewed, the referring page, approximate location, browser and device type, and which links are used; the network address is truncated before storage. Clarity records cursor movement, clicks and scrolling to build heatmaps and session replays, with page text masked so the words you type into a form are not captured. Both set first-party cookies. Blocking cookies, using private browsing, or a content blocker prevents them, and the site functions normally without them. Google’s opt-out extension is at https://tools.google.com/dlpage/gaoptout.
- Feedback form. If you send a report at
/feedback, we collect what you type into it: your email address, and the description of what happened — which will usually include a sentence you dictated and the text the App produced from it, because that pairing is what makes a report usable. The optional fields (the app and language you were using, your phone and Android version, how often it happens) are collected only if you fill them in. If you tick the tester-perk box, we also record that you want the perk sent to that address. All of it is received and stored by Netlify Forms. We use it to answer you, to fix what you reported, and — if you asked for it — to send the tester perk described at/beta. To have it removed, write to mobilebytesensei@gmail.com.
The words in a feedback report reach us only because you typed them into that form yourself. Nothing the App transcribes is sent to the website, the site’s analytics receive no form content, and the App and the site are not connected.
10. Processors and recipients
For the App:
- Google LLC, as the operator of Firebase Analytics and Firebase Crashlytics, processes the diagnostic and usage data described in section 6 on our instructions and on our behalf.
We do not sell personal data, and we do not disclose it to third parties for their own purposes.
For the website: Netlify (hosting and form storage), Google (Google Analytics), and Microsoft (Clarity), as described in section 9.
We may disclose data where we are legally required to do so, and will resist requests that exceed what the law requires.
11. Retention
Analytics and crash data are retained according to Firebase’s configured retention period and are deleted earlier if you switch the setting off, as described in section 6.1. Data held on your device is retained until you delete it or uninstall the App. Website feedback reports are kept while the issue they describe is open, and for as long as a tester perk claimed against one is outstanding; they are deleted on request at any time.
12. Your rights
India’s Digital Personal Data Protection Act, 2023 is the primary framework for this policy. Where the App is offered outside India, the EU GDPR and the California Consumer Privacy Act apply as relevant.
You have the right to:
- be informed about the processing described here;
- access the personal data we hold about you;
- correct it where it is inaccurate;
- erase it — for analytics and crash data, exercisable directly in the App under Settings → Privacy, as described in section 6.1;
- withdraw consent or object to processing, by the same mechanism;
- nominate another person to exercise these rights on your behalf in the event of your death or incapacity, as provided by the DPDP Act; and
- complain, to us at the address in section 14 and, if unsatisfied, to the Data Protection Board of India.
Where the GDPR applies, you additionally have rights of restriction and data portability, and may complain to your local supervisory authority.
Because the App has no accounts, we cannot connect a request to a particular installation without information you supply. If you ask us to erase analytics data and cannot identify the installation, switching the setting off in the App achieves the deletion directly.
Where any data is collected in future for the features named in section 8, it will be stored in-region.
13. Children
The App is intended for adults and is not directed at children. We do not knowingly collect personal data from children. If you believe a child has provided personal data to us, write to mobilebytesensei@gmail.com and we will delete it.
14. Contact, grievances and security reports
For any question about this policy, or to exercise a right under section 12:
mobilebytesensei@gmail.com
Grievance Officer. The DPDP Act requires us to publish a contact for complaints about how personal data is handled. For betterflo that is MOBILEBYTESENSEI PVT LTD at mobilebytesensei@gmail.com. Mark your message “Grievance”. We will acknowledge it and respond within 30 days.
Security researchers. Please report security or privacy vulnerabilities to mobilebytesensei@gmail.com and allow a reasonable remediation window before public disclosure. Our Security page sets out the full coordinated disclosure policy.
15. Changes to this policy
We will amend this policy before any new processing begins, not afterwards, and will update the date at the top of the page. Material changes will be signalled in the App.