Privacy policy
Effective date: 2026-10-29. This policy covers the Capline Android app and this website.
Who we are
Controller: Enrique Rubio. Contact: support@erslabs.net. Capline has no accounts and no sign-in: there is nothing to log in to.
What we do not do
- We do not add our own analytics, advertising or crash-reporting SDK to the app.
- We do not upload your videos, audio, captions or translations. The app's only first-party network connection is the one-time speech model download described below.
- There are no ads in Capline, ever, and no advertising SDK in the build.
Permissions the app declares
From the merged release manifest of app.capline (version 0.1.0):
- INTERNET
- Downloads the speech model once and lets ML Kit fetch translation models and report its metrics.
- ACCESS_NETWORK_STATE
- Checks network connectivity around those downloads; added by the bundled ML Kit components.
- WAKE_LOCK
- Declared by the bundled Media3 ExoPlayer player (video preview), not by our code; we do not use it.
- WRITE_EXTERNAL_STORAGE (maxSdkVersion="28")
- Only Android 8–9 (API 26–28), where saving into shared storage needed it. The app does not request this permission at runtime, so on those versions a gallery export can fail; Android 10 and newer need no storage permission at all.
The manifest also declares app.capline.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION,
an internal signature-level permission that only this app can hold. It gives nobody any access
and is not a capability you can notice. This build requests no camera, microphone, location or
contacts permission.
Network activity
Speech model download (first-party). The only connection the app itself opens
is a one-time download of ggml-tiny.bin (77,691,713 bytes, SHA-256 checked before
the file is used) from
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin,
stored inside the app's private storage (filesDir/models/). No other code in the
app opens a network connection.
ML Kit Translate 17.0.3. Bilingual subtitles download the translation model
for your language pair to the device. Per Google's ML Kit terms
(https://developers.google.com/ml-kit/terms): "When you use ML Kit APIs,
processing of the input data (e.g. images, video, text) fully happens on-device, and ML Kit
does not send that data and the resultant outputs to Google servers." The same terms state:
"The ML Kit APIs also send metrics about the performance and utilization of the APIs in your
app to Google." Google's Android data disclosure
(https://developers.google.com/ml-kit/android-data-disclosure) adds that ML Kit
Android SDKs collect device information, app information, performance metrics and other data —
for example event types such as model downloads, and error codes — for diagnostics and usage
analytics, encrypted in transit with HTTPS and not transferred to third parties.
What that means in short. Your videos, audio, captions and translations are never sent anywhere by our code. ML Kit reports its own usage metrics to Google; that is Google's practice as documented in the links above, not something we add.
Where your files are
- The video you select stays with its provider: the system photo picker returns a reference (URI) and Capline reads the file from the gallery or service you picked it in.
- App-private storage holds the downloaded speech model
(
filesDir/models/), your onboarding settings (filesDir/settings/) and finished exports staged in the app cache (cacheDir/exports/) until you save or share them. - Your gallery: a finished export is copied to
Movies/best-app/on Android 10 and newer without any storage permission. On Android 8–9 the legacy MediaStore insert is used and, because the app does not hold the storage permission there, saving to the gallery can fail on those versions. - Sharing: the Share action hands the file to the app you choose through the system share sheet. From that moment the copy belongs to that app, under its own terms.
Speech recognition and translation run on your device
Speech recognition runs on your device: the captions are produced by whisper.cpp inside the app, offline once the model has been downloaded. Caption translation runs on your device with ML Kit's on-device models after their download. Your audio and text are processed locally.
Voiceover (planned, not in this build). The planned voiceover feature records through your device's microphone and the take stays on your device; it will ask for microphone permission before recording.
Purchases (Pro)
Capline Pro is bought through Google Play Billing. Google Play processes the payment — in
Google's words, "Google may give refunds for some purchases made through Google Play's billing
system" (Google Play refund policies:
https://support.google.com/googleplay/answer/2479637). The app stores only your
entitlement on your device — whether Pro is active, cached so the app can start offline.
Payment details never reach the app.
Backups
The release manifest does not disable Android backup, so the platform default applies:
backup enabled. When it is on, Android can copy app-private data — not your gallery videos —
to a private folder in your Google Drive, limited to 25 MB per app, restored when you reinstall
the app; on Android 9 and newer, if your device has a screen lock (PIN, pattern or password),
Android encrypts the backup on the device with it before upload. Capline does not require that
encryption: without a screen lock the backup can still be made, unencrypted on the device side. Whether any of this happens follows your Android backup settings
(source: https://developer.android.com/guide/topics/data/autobackup).
Deleting your data
- Uninstalling Capline removes the app's private data: the downloaded model, your settings and any staged drafts.
- Exports already in your gallery, and copies you shared to other apps, are yours to delete with your gallery or with that app.
- Anything Android backed up follows your Android backup settings — remove it from Android's backup settings or turn off backup for the app.
This website
This site is a static set of pages hosted on Cloudflare Pages. We put no cookies, no scripts
and no analytics of our own on it. Cloudflare processes the requests that reach it; its
privacy policy (https://www.cloudflare.com/privacypolicy/) states: "The
information processed may include but is not limited to IP addresses, traffic routing data,
system configuration information, and other information about traffic to and from Customers'
websites, devices, applications, and/or networks."
Audience
Capline is a general-audience app and is not directed at children under 13.
Changes and contact
We update this policy when the app changes; the effective date at the top tells you which version applies. Controller: Enrique Rubio — support@erslabs.net.