CT-PO

Privacy Policy

Nothing you translate leaves your phone.

CT-PO is a translator that runs on your phone. It has no server, no account, and no telemetry of its own. This document explains that in full, including every place it needs qualifying.

Effective September 23, 2026 Policy version 3 Applies to com.ctpo.translate 1.0

Start here

CT-PO is a translator that runs on your phone. It has no server. There is no account to make, no email address to hand over, no password, and no profile sitting in a database somewhere with your name on it. Nobody who works on this app can read your translations, because there is nowhere for them to go and read them.

That is the honest summary, and most of this document exists to explain the places where it needs qualifying. There are several. They are written out in full below rather than buried, including the three that most policies for an app like this would quietly leave out:

  1. CT-PO is built on Google's ML Kit, and ML Kit reports usage and diagnostic information to Google. See What actually leaves your phone.
  2. Copies of the app built for testing write what you said out loud into the Android system log. See Logging, and the difference between builds. If you received this app as a file rather than from an app store, read that section.
  3. Your voice and your translated text are handed to other software on your phone in order to be understood and spoken. See Other software your words pass through.

Everything in this document was written by reading the app's source code. The file paths, the numbers, and the lists are all checkable. If something here does not match what the app does, that is a bug worth reporting.

Definitions, so nothing here is slippery

Personal information means information that identifies you or could reasonably be linked to you. In this app that mostly means the content of what you translate, because a sentence you typed can say a great deal about you even though it carries no name.

Collect means the developer receives it. Throughout this document, when it says CT-PO does not collect something, that means the information stays on your phone and never reaches the developer, because there is no mechanism by which it could.

On the device means the processing happens using your phone's own processor, with no network request made and no data sent anywhere.

The developer means the individual who writes and maintains CT-PO. Not a company, not a team.

Who is responsible

CT-PO is made and maintained by an independent individual developer. There is no company, no staff, no contractors, no analytics vendor, and no advertising partner.

For the purposes of the UK and European General Data Protection Regulation, the developer would be the data controller for any personal data the app handled. The position taken throughout this document is that no personal data reaches the developer at all, which is set out in detail below so you can judge it yourself.

Contact for anything in this document, including privacy questions, requests, or complaints:

alwaller228@gmail.com

The developer has not appointed a Data Protection Officer and has not appointed a representative in the European Union or the United Kingdom. That is a statement of fact about one person writing an app that keeps your data on your own phone. It is not a legal opinion about what the regulations require of anybody. If you think either appointment is required here, write to the address above and say so.

What this policy covers, and what it does not

This policy covers the CT-PO Android application.

It does not cover other software on your phone that CT-PO passes information to in order to do its job. Those are separate programs written by other people, with their own privacy policies. They are named individually in this document so you can go and read them.

It does not cover Dropbox, Google Drive, email, or whatever else was used to get the app file onto your phone.

It does not cover your phone's manufacturer, your mobile network, or Android itself.

It covers privacy and nothing else. It says nothing about whether a translation is correct, and it is not a warranty, a guarantee, or a contract. Machine translation gets things wrong, sometimes badly, and usually without any sign on screen that it has. Do not rely on CT-PO on its own for anything medical, legal, financial, or otherwise serious. Use a human translator when the answer matters.

It describes the version named at the top of this document. A later version may behave differently, and the policy that applies to your copy is the one that came with it.

Everything the app touches

This is a complete inventory. If something is not in this list, the app does not touch it.

Text you type or paste

Whatever you put into the input box. It is held in the app's private storage area on your phone and translated there by a model already installed on the device.

Text sent over from another app

If you select text elsewhere in Android and choose CT-PO from the menu that appears, Android hands that selected text to CT-PO. This is Android's standard text selection feature, which the app supports through the PROCESS_TEXT action.

CT-PO receives only what you highlighted. It cannot see the rest of the page, which app you were in, or anything you did not select.

Your voice

When you press the microphone, or when the bar opens after you double tap the back of your phone, CT-PO listens.

CT-PO never saves the audio. It is not written to a file, not stored in the history, and not uploaded anywhere by CT-PO. In the version named at the top of this document there is no code in this app that writes audio to disk, which you can confirm by searching the source for MediaRecorder, AudioRecord, or FileOutputStream and finding nothing.

What the Android speech service does with the audio after CT-PO hands it over is that service's business and is covered further down.

The audio is handed to the speech recognition service built into Android, because that service is what turns sound into words. CT-PO asks Android specifically for the recognizer that runs on the device, using createOnDeviceSpeechRecognizer, and additionally marks every request with a flag saying it prefers offline handling. It does not ask for the network recognizer, and as written there is no path by which it would quietly fall back to one. If your phone has no offline recognizer for a language, the microphone is switched off for that language with a message saying so, rather than your voice being sent somewhere instead.

The translations themselves

Produced on your phone and shown to you. If you have turned on speaking results out loud, the translated text is also handed to your phone's text to speech engine, which is separate software. See below.

The clipboard

There is a copy button. Pressing it puts the translated text on the Android system clipboard, labelled "CT-PO translation".

This is worth knowing about because the clipboard is shared across your whole phone. Android may show a preview of what was copied, the text remains on the clipboard until something replaces it, and on some Android versions an app you then switch to can read it. This is normal clipboard behaviour and applies to anything you copy anywhere, but it is the one action in CT-PO that deliberately moves your translated text outside the app, so it is listed here rather than assumed.

The app only ever writes to the clipboard when you press the button. It never reads your clipboard.

Your translation history

The most personal thing the app stores, so here it is exactly.

Each entry holds five fields:

  • the text you put in
  • the translated text that came out
  • the language translated from
  • the language translated into
  • the time it happened

The history is capped at 60 entries. A new one pushes the oldest off the end. Translating the same thing again moves that entry back to the top rather than adding a duplicate.

History is written only by the main app screen. The bar that opens from the double tap gesture translates without recording anything, so nothing said through the bar is kept.

You can erase the whole history at any time from Settings. It is deleted immediately and completely, and there is no copy anywhere else.

Your settings

Seven values:

  • the language you translate from
  • the language you translate into
  • whether language detection is on
  • whether translation happens as you type
  • whether pack downloads are limited to a wireless network
  • whether results are read out loud
  • whether you have completed the first run screens

None of these identify you.

What the app notices about your phone

Two parts of the app look at the hardware. Neither result is stored or transmitted. Both are read into memory and used to make a decision.

The tuning profiler reads:

  • total memory
  • whether Android flags the phone as a low memory device
  • the number of processor cores
  • the chipset model string Android reports

It uses these to decide how many translation models to keep loaded at once, how many results to cache, and how long to wait before translating while you type. A phone with more memory keeps more loaded and is therefore faster.

The compatibility check reads:

  • the phone's model name
  • the manufacturer name
  • the Android version
  • whether Google Play services is present
  • whether an offline speech recognizer exists on the phone
  • whether Android flags the phone as a low memory device

It uses these to decide whether the app can run at all, and whether to enable the microphone. The model and manufacturer are shown back to you on screen when the app cannot run, so you can see why.

Language packs

Each language you add downloads a translation model of roughly 30 megabytes, stored in the app's private storage. Removing a language in Settings deletes its pack and frees the space.

What the app does not touch, at all

Verified by searching the source code. CT-PO does not read or request:

  • your location, by any method, at any accuracy
  • your contacts
  • your calendar
  • your photos, media, or files
  • your call log or phone number
  • your messages
  • your camera
  • the list of apps installed on your phone
  • your accounts on the device
  • your browsing history
  • your clipboard contents

CT-PO also generates and reads no identifier of any kind. There is no advertising identifier, no Android ID, no device serial, no hardware identifier, no installation identifier, and no randomly generated identifier that would let one session be connected to another. The app has no concept of "a user". It never assigns you a number, because it never needed one.

Where things are stored, and for how long

Settings and history live in a single file in the app's private storage, at files/datastore/ctpo.preferences_pb. Android walls that area off from other apps, so in ordinary use no other app can read it. That protection belongs to Android rather than to this app, and it can be undone by rooting the phone, by a flaw in the operating system, or by software with privileged access.

Language packs live in the app's own storage as well.

How long each thing lasts:

  • Translation history: until it falls off the end at sixty entries, or you clear it, or you uninstall. Whichever happens first.
  • Settings: until you change them or uninstall.
  • Language packs: until you remove them in Settings or uninstall.
  • Audio: never stored by CT-PO, not even briefly on disk. What the Android speech service keeps is governed by that service, not by this app.
  • Device characteristics: read at startup, used, and discarded. Never written down.
  • Clipboard contents: governed by Android, not by this app. Replaced when you copy something else.

Uninstalling CT-PO deletes all of it.

There is no retention schedule for data held by the developer, because the developer holds none.

What actually leaves your phone

Four things. Two are substantial, two are minor, and all four are listed.

1. Downloading a language pack

The first time you use a language, its translation model has to be fetched. Roughly 30 megabytes, from Google's servers, because ML Kit is Google's software and these are Google's models.

To download a file you have to connect to a server, so during that download Google can see what any web server sees: your IP address, the rough time, and which model was requested. Your translations are not involved. Your voice is not involved. The request says "send me the Spanish model" and nothing about what you intend to do with it.

A setting, on by default, restricts these downloads to a wireless network so they do not consume mobile data.

After a pack is downloaded it is used from your phone. Translation then needs no network at all. You can switch the phone to airplane mode and CT-PO keeps translating in every language already downloaded.

2. ML Kit's usage and diagnostic reporting

This is the part most policies for an app like this skip, so it is spelled out.

CT-PO includes Google's ML Kit libraries for translation and language identification. Those libraries bring Google's data transport component with them, which reports usage and diagnostic information to Google. You can verify this: com.google.android.datatransport appears in the app's merged manifest, along with a backend factory named CctBackendFactory, and both are there because ML Kit put them there rather than because CT-PO asked.

Google describes this as usage and diagnostics data, covering which features were used, how they performed, and errors encountered. Google governs it under Google's privacy policy, not this one.

To be plain about the limit of what can be promised: this reporting belongs to Google's library, it is not something CT-PO sends, and the app does not currently switch it off. If that matters to you, that is a reasonable thing to care about, and the honest answer is that the only complete way to avoid it is not to install software built on ML Kit.

What is not in that reporting is the content of your translations. ML Kit translation runs on your phone. Your text is not sent to Google to be translated.

3. The emoji font

The app is built with Android's Compose interface toolkit, which includes AndroidX emoji support. On phones with Google Play services, that component asks the system font provider for a current emoji font so that newer emoji render correctly rather than as empty boxes.

This is a standard part of almost every modern Android app and involves a request for a font file. It carries nothing about you and nothing about your translations. It is listed here because this document claims to be complete, and a font request is still a request.

4. Google Play services

CT-PO requires Google Play services to be present, because that is what ML Kit uses to fetch and run a language pack. Play services is Google software that was already on your phone before you installed CT-PO, and it communicates with Google independently of anything this app does. Its behaviour is governed by Google's privacy policy.

That is the complete list

Nothing else goes out. Specifically, CT-PO contains:

  • no analytics software of any kind
  • no crash reporting service, so a crash sends nobody anything
  • no advertising libraries and no advertising identifier
  • no Firebase Analytics, no Google Analytics, no Crashlytics
  • no social media software development kits
  • no tracking pixels and no web content at all
  • no accounts, logins, or sign in of any kind
  • no server belonging to this app, anywhere in the world

The whole dependency list is in app/build.gradle.kts and takes under a minute to read.

Other software your words pass through

CT-PO does not perform speech recognition or speech synthesis itself. Android provides both and CT-PO asks Android to do the work. That means your words pass through software that is not CT-PO, and you should know which.

The speech recognition service

Your microphone audio goes to whichever recognition service your phone uses. On most phones that is Android System Intelligence, made by Google, which performs recognition on the device.

CT-PO asks for the on device recognizer explicitly and marks every request as preferring offline. What that service does with the audio afterwards is governed by its own privacy policy and by your phone's settings, not by this policy.

The text to speech engine

If reading results out loud is turned on, the translated text goes to your phone's text to speech engine, usually Google's Speech Services but sometimes one supplied by your phone's manufacturer.

When choosing a voice, CT-PO filters out every voice that reports needing a network connection, so it prefers voices that work entirely on the device. If the engine cannot identify a specific voice, CT-PO leaves whichever voice the engine picked for that language, because refusing to speak would be the worse failure. In that fallback case it is possible for an engine to use a network voice, which would mean the translated sentence reaching that engine's servers. Whether this can happen depends entirely on which engine your phone uses and how it is set up.

You can see and change your engine in Android Settings, usually under Accessibility or under Language and input.

The system voice data installer

Settings has a row that installs voice data for speech. Android provides no silent way to do this, so that row hands you to the system installer, which is a separate screen belonging to Android. CT-PO passes it nothing except the request to open.

Anywhere you paste

Once you press copy, the translated text is on the system clipboard and its fate is up to you and to Android.

Why these are listed

None of these is CT-PO sending your data anywhere. They are Android features behaving the way Android features do. But your voice and your translated text do pass through them, and a privacy policy that failed to mention it would be leaving out something real.

Permissions, one at a time

CT-PO requests four. Here is what each does and what happens if you refuse.

Microphone, RECORD_AUDIO

For speaking instead of typing. Android asks you the first time. Refusing leaves everything else working and you type instead. You can withdraw it whenever you like in Android Settings, under Apps, then CT-PO, then Permissions.

Internet, INTERNET

Used for exactly one thing: downloading a language pack the first time you use that language. No other part of this app opens a network connection.

Network state, ACCESS_NETWORK_STATE

Used to tell whether you are on a wireless network, so the setting that restricts downloads can work.

Do Not Disturb access, ACCESS_NOTIFICATION_POLICY

Optional and off unless you deliberately grant it. Android plays a chime every time speech recognition starts, and the notification volume is the only way to silence it. If you grant this, CT-PO turns that stream down while the translation bar is open and restores it exactly as it was when the bar closes. It does not read your notifications and cannot: this permission governs volume and Do Not Disturb state, not notification content. Without it the app behaves identically except the chime remains.

The app declares the microphone as optional hardware, so it can still be installed on a device without one.

What other apps on your phone can do with CT-PO

Two of the app's screens are marked as reachable by other apps, which is a privacy question worth answering directly.

The launcher entry is reachable because that is what makes an app appear in your app list and lets the back tap gesture open it. Another app could ask Android to open CT-PO. Opening it is all that would achieve.

The main screen is reachable so that Android's text selection menu can send it text. Another app could use this to open CT-PO with text already filled in. It cannot use it to read anything: the connection is one way, nothing is returned, and no other app can retrieve your history, your settings, or any previous translation through it.

The translation bar is not reachable by other apps at all.

Nothing in CT-PO shares data outward to other apps except the clipboard, and only when you press copy.

Logging, and the difference between builds

Android apps can write diagnostic lines into the phone's system log. CT-PO contains seven such lines, and every one of them is wrapped in a check for whether this is a testing build.

In a release build, CT-PO writes nothing to the system log. Not what you said, not what you translated, not which languages you use.

In a debug build, which is the kind produced for testing, it writes seven kinds of line, and one of them includes the text the speech recognizer heard you say. The others record which languages your phone supports, how the app tuned itself, how quickly speech started, translation failures, and how the app was opened.

This matters if you received CT-PO as a file passed to you directly rather than from an app store, because a file shared that way is often a debug build. You can tell: if the word debug appears in the file name, it is a debug build and the logging described above is active.

The practical exposure is limited. Reading another app's system log requires a privileged permission that ordinary apps cannot obtain, so a random app on your phone cannot read these lines. Someone with physical access to the phone and developer tools connected to it could. The log is a rolling buffer that discards old entries and does not survive a restart.

If you want none of this, use a release build.

Backups and moving to a new phone

Worth being precise about, since this is where data quietly escapes to the cloud in a lot of apps.

Android can back app data up to your Google account and restore it onto a new phone. CT-PO's rules, in res/xml/backup_rules.xml and res/xml/data_extraction_rules.xml, include only the shared preferences folder.

Your settings and your translation history are not in that folder. They live in the DataStore file named earlier. So your translation history is not included in Google backups and does not transfer to a new phone. Moving to a new phone leaves your history behind on the old one and the new install starts empty.

The only thing backed up is a small ML Kit bookkeeping file recording which language packs have been set up. It contains no translations and nothing personal.

If you want your history gone from an old phone, clear it in Settings or uninstall. There is no cloud copy to chase.

Your voice, and biometric privacy law

Some laws, including the Illinois Biometric Information Privacy Act, the Texas Capture or Use of Biometric Identifier Act, and Washington's biometric statute, treat a voiceprint as a biometric identifier and place strict obligations on anyone who collects one.

CT-PO does not create, extract, store, compare, or transmit a voiceprint. It does not attempt to identify who is speaking, distinguish one speaker from another, verify anyone's identity, or estimate anything about a speaker such as age, sex, or emotional state.

What happens is speech recognition: sound becomes words, the words are translated, and the sound is gone. No biometric template is produced at any point, by CT-PO or for CT-PO. No audio is retained, so there is nothing from which a voiceprint could later be derived.

Sensitive information inside what you translate

People translate medical appointments, legal problems, immigration paperwork, religious text, and conversations they would not want repeated. Some of that falls into categories that data protection law treats as special, including health, religious belief, ethnic origin, and sexual orientation.

CT-PO does not inspect, classify, or flag any of this. It cannot tell a prescription from a poem. Whatever category it falls into, the text is translated on your phone, optionally written into your local history, and goes nowhere else.

The one thing to know: if you use a sensitive translation and then hand your unlocked phone to someone, they can open CT-PO and read the last sixty entries. Clear the history when that matters.

Automated decisions and profiling

CT-PO makes no decision about you that produces a legal or similarly significant effect, so Article 22 of the GDPR does not apply to anything it does.

It builds no profile of you. The word "profile" appears in the source code describing the hardware tuning check, which examines memory and processor cores in order to pick cache sizes. That is a profile of the phone, not of the person holding it, and it is discarded as soon as it is used.

Children

CT-PO is not directed at children and does not knowingly collect information from anyone of any age, because it does not collect information from anyone.

There is no account system, no way for a child to submit anything to anybody, no messaging, no social feature, no advertising, and no purchase of any kind. The app does not ask for age and has no reason to.

The United States Children's Online Privacy Protection Act requires an operator to obtain parental consent before collecting personal information from a child under 13. No personal information is collected here from anyone of any age, so there is nothing that such consent would cover. A child can use this app and nothing they type reaches the developer.

A parent who wants everything a child typed removed can clear the history in Settings or uninstall the app, and it is gone.

Your controls

  • Clear your history. Settings, then the clear history button. Immediate and complete.
  • Delete language packs. Settings, per language. Recovers the storage too.
  • Withdraw the microphone. Android Settings, Apps, CT-PO, Permissions.
  • Withdraw Do Not Disturb access. Android Settings, under Do Not Disturb access or Modes access depending on your Android version.
  • Stop translating out loud. Turn the setting off and nothing goes to the speech engine.
  • Stop all network use. Once your packs are downloaded, turn the phone's network off. The app keeps working.
  • Remove everything. Uninstall. It takes settings, history, and language packs with it. The only thing that can outlive the app is the small ML Kit bookkeeping file described under backups, which holds no translations and nothing personal.

Security

Your data sits in Android's private storage area for this app, which the operating system isolates from other apps. On a phone with a screen lock, Android also encrypts that storage at rest. Both of those protections are Android's rather than this app's, and they are only ever as good as your phone's operating system and your screen lock.

What this app does contribute is structural rather than technical. There is no server holding your translations, so there is no server to break into. There is no user database, so there is no database to leak. The kind of breach that exposes thousands of people at once cannot happen here, because there is no central store to expose.

That is a genuine advantage and also a narrow one. It says nothing about the security of your own phone, and no claim is made anywhere in this document that this app is free of flaws. No software is.

What this does not protect against: anyone holding your unlocked phone can open CT-PO and read your history, exactly as they could read your messages. Lock your phone.

If there were ever a breach

Data breach notification laws require an operator to tell affected people, and often a regulator, when personal data is exposed. The developer holds no personal data, so there is no store of it that could be breached.

If a flaw were found in the app itself that exposed data held on your phone, the intention is to fix it, to describe it plainly in the release notes for the version that fixes it, and to update this document. Because the app has no way of contacting you, those are the only two channels available, and a copy installed from a file will not learn of either on its own.

Security problems can be reported to the address in the contact section.

Legal basis for processing, for readers in the UK and Europe

Data protection law requires a lawful basis for processing personal data. Since no personal data reaches the developer, the developer performs no processing requiring a basis.

For completeness about processing that happens on your own device at your instruction: you enter text or speak, and the app translates it because that is what you asked it to do. Were a basis required, it would be performance of what you requested. Your history exists because the feature exists and you used it, and you can erase it in one tap.

The developer does not process your personal data for legitimate interests, marketing, research, product improvement, model training, or any secondary purpose. There is no secondary purpose. Nothing you type is ever used to improve this app or any other software.

Your rights in the UK and Europe

Under the UK GDPR and the EU GDPR you have rights of access, rectification, erasure, restriction, portability, and objection, and the right not to be subject to automated decisions.

The honest position: these rights are exercised against an organisation holding your data, and this app's developer holds none. There is no file with your name on it to send you, nothing to correct, and nothing for anyone to delete on your behalf. Everything described in this policy is on your own phone and under your own control, and the controls section explains how to view or destroy any of it in a few taps.

You also have the right to complain to a data protection supervisory authority. In the United Kingdom that is the Information Commissioner's Office. In the European Union it is the authority for the country you live in. You can complain to them whether or not you contact the developer first.

For data Google receives through ML Kit, Play services, or your phone's speech software, those rights are exercised against Google under Google's privacy policy.

Your rights in the United States

Several states now give residents rights over personal information, including California, Virginia, Colorado, Connecticut, Utah, Texas, Oregon, Montana, and others, with more arriving each year.

These laws generally give you the right to know what is collected, to access it, to delete it, to correct it, to obtain a copy, and to opt out of sale, targeted advertising, and profiling. Several also require honouring an opt out preference signal sent by your browser.

The same answer applies to all of them. The developer collects nothing, so there is nothing to disclose, access, correct, port, or delete on request. Everything is on your phone, and you can delete it yourself without asking anyone.

Specifically, and applying the definitions in the California Consumer Privacy Act as amended:

  • CT-PO does not sell personal information and never has.
  • CT-PO does not share personal information for cross context behavioural advertising.
  • CT-PO does not use or disclose sensitive personal information for any purpose beyond performing the translation you asked for on your own device.
  • CT-PO does not offer financial incentives in exchange for personal information.
  • There is no "Do Not Sell or Share My Personal Information" link, because there is nothing to sell or share.
  • CT-PO does not discriminate against anyone for exercising privacy rights, which would be difficult given it cannot tell one person from another.

Nevada law allows residents to opt out of the sale of certain information. No such sale occurs.

Do Not Track and Global Privacy Control

These are signals a web browser sends to websites. CT-PO is not a website, does not contain a browser or any web content, and receives no such signal.

The behaviour those signals ask for, which is not being tracked, is what this app does by default and has no way of doing otherwise.

Sending data across borders

The developer transfers nothing anywhere, across borders or otherwise, because the developer receives nothing in the first place.

Two things do cross a network when you use the app. Language pack downloads connect to Google's servers, which may sit in another country, in the same way that loading a web page may reach a server abroad. And ML Kit reports usage and diagnostics to Google, described earlier.

One honest qualification, because a careful reader would spot it otherwise. Under European and United Kingdom law an IP address can itself count as personal data, and your IP address is visible to Google's servers during a pack download exactly as it is visible to any server you connect to. So the claim that no personal data leaves your phone is fully true of what you translate, and fully true of everything the developer receives, and it is not quite true of the bare fact of a connection to Google. That connection is what makes the download possible, it happens once per language rather than continuously, and it carries nothing about what you type or say. It is written down here rather than glossed over.

Where Google receives usage and diagnostics data through ML Kit, any international transfer is Google's, governed by Google's privacy policy and its own transfer safeguards.

Legal and government requests

If a court or law enforcement agency asked the developer to produce your translations, the answer would be that there is nothing to produce.

This is not a policy that could be reversed under pressure, and it is not a promise to resist a valid order. It is a description of the architecture. The data is on your phone and was never anywhere else, so a demand made to the developer would return nothing regardless of how it was answered.

A demand made to you, or to your phone, is a different matter and outside what this app can affect.

Getting the app outside an app store

CT-PO may reach you as a file rather than through an app store. That has privacy consequences worth stating.

An app store performs some review and delivers a build the developer signed and published. A file passed around by other means has had none of that, and you are trusting whoever gave it to you. Install files only from someone you trust.

A sideloaded app also receives no automatic updates. If a privacy problem in this app were fixed, your copy would not update itself, and you would keep running the version you have until you were given a new file.

As noted above, files shared this way are frequently debug builds, which log more than release builds do.

A note for whoever fills in an app store data safety form

This section is guidance for the person publishing the app rather than a declaration to you as a user. Anyone actually filing a form should check it against the store's rules on the day, because those rules change.

The important trap: Google Play's Data Safety form asks about data collected or shared by the app including by any third party library inside it. It is not limited to code the developer wrote. That distinction decides the answer here.

  • Data the app's own code collects or sends: none.
  • Data a library inside the app sends: ML Kit reports usage and diagnostic information to Google, described earlier in this document. On Google's own definitions that is likely to belong under app information and performance, in the diagnostics category, and to count as both collected and shared. Answering "none" on the grounds that the developer's own code sends nothing would be the wrong answer, because the question covers the library too. Getting this wrong is a store policy violation, not a technicality.
  • Processed on the device only: text you enter, audio you speak, and the translations produced. The local history never leaves the phone.
  • Encrypted in transit: language pack downloads use secure connections to Google's servers.
  • Deletion: everything can be deleted by the user from inside the app. There is nothing held elsewhere to request the deletion of.
  • Independent security review: none has been performed.

The precise category ML Kit's diagnostics belongs in is a question for Google's current documentation at the time of filing, not for this document.

Third party privacy policies

The software your information may reach, and where to read about it:

  • Google, for ML Kit language packs, ML Kit usage and diagnostics data, Google Play services, the emoji font provider, and in most cases the speech recognition and text to speech engines. See Google's privacy policy at policies.google.com/privacy.
  • Your phone's manufacturer, if your phone ships its own speech recognition or text to speech engine instead of Google's. Their policy would be on their website.

The developer has no commercial relationship with either and receives nothing from them.

Changes to this policy

If the app changes in a way that affects any of this, this document is updated and the effective date and version number at the top change with it. The intention is that material changes are called out in the app's release notes rather than made quietly.

Because CT-PO has no way of contacting you, which is deliberate, there is no notification email. The current version is the one shipped with the app and the one in the source code repository.

Version history

  • Version 3, September 23, 2026. A pass for accuracy rather than coverage. Softened claims that were stated as absolutes and could not be guaranteed, including the security and storage claims, which now say plainly that the protections belong to Android and that no software is free of flaws. Removed conclusions about what data protection law requires, since those are opinions and not facts about the app. Added the qualification that an IP address can count as personal data in Europe and the United Kingdom, so the claim that nothing personal leaves the phone needed narrowing. Rewrote the data safety guidance, which previously said to declare nothing collected and was wrong, because that form covers third party libraries and ML Kit's diagnostics reporting falls inside it. Added a note that this document covers privacy only, is not a warranty, and says nothing about whether a translation is correct.
  • Version 2, September 23, 2026. Added the clipboard, the emoji font provider, Google Play services, the system voice installer, the full list of hardware values read, the section on debug build logging, the section on what other apps can reach, biometric and voiceprint law, sensitive content, automated decisions, legal bases, supervisory authority complaints, United States state laws beyond California, browser opt out signals, breach notification, sideloading, the data safety summary, and third party policy references. Filled in the contact address.
  • Version 1, September 23, 2026. First version.

How to check any of this

CT-PO's source code is available to the person who gave you the app. Everything asserted here can be verified in it:

  • the seven settings and the sixty entry history cap are in data/Prefs.kt
  • the four hardware values used for tuning are in core/DeviceProfile.kt
  • the compatibility check is in core/DeviceGate.kt
  • the request for the offline speech recognizer is in engine/VoiceInput.kt
  • the filtering of voices that need a network is in engine/Speaker.kt
  • the download conditions are in engine/LanguagePackManager.kt and engine/TranslationEngine.kt
  • the backup rules are in res/xml/backup_rules.xml and res/xml/data_extraction_rules.xml
  • the four permissions are in AndroidManifest.xml
  • the complete dependency list is in app/build.gradle.kts

If anything in this document turns out not to match the code, the document is wrong and should be reported.

Contact

Privacy questions, requests, complaints, and security reports all go to the same address.

alwaller228@gmail.com