# Privacy (/en/docs/ai/privacy)



The analysis runs on your child's phone. This page lists exactly what is read, what is sent and what is stored, based on how the apps and the backend are built.

## What is analysed [#what-is-analysed]

* **Text visible on screen** in a small set of messaging apps, read through Android's Accessibility Service: WhatsApp, Instagram, Telegram, Snapchat and TikTok.
* The most recent snippets for each app (the last ten), kept **in memory** as a rolling buffer. Each new screen update replaces the buffer.
* Only text. Images, voice messages, video and other apps are not read.

The child app must be granted the Accessibility permission during setup. See [Set up the child app](/en/docs/platform/android/setup).

## What never leaves the device [#what-never-leaves-the-device]

* The text of messages and the recent-messages buffer.
* The model's input and its raw output.
* The model file. It is downloaded once and used locally.

Inference does not need a network connection. If the phone loses connectivity, analysis continues, but alerts cannot be delivered until it is back online.

## What is sent to SafeCircle [#what-is-sent-to-safecircle]

When a result is `medium` or `high`, the child app sends an alert with:

| Field      | Example              | Notes                                               |
| ---------- | -------------------- | --------------------------------------------------- |
| Risk level | `high`               | Only `medium` and `high` are accepted by the server |
| Categories | `grooming`           | One or more of the seven categories                 |
| Confidence | `0.9`                | A number from 0 to 1                                |
| Reasoning  | `Detected: grooming` | A short summary of the categories, not message text |
| Source app | An app package name  | Which app the signal came from                      |

The alert is stored against the paired device and child, with a timestamp and a read/unread state. Your parent push notification contains your child's name, the risk level and the category names, and no message content.

Other things the child app sends or fetches:

* **Pairing**: a one-time token and the device name when you pair the phone.
* **Model files**: downloads from SafeCircle's model host, and a daily check for a newer model version.
* **Bug reports**: only if your child (or you) submits one. It contains the title and description typed in, plus the screen name, app version and Android version.

## What the server does not receive [#what-the-server-does-not-receive]

* Message text, in any form.
* Screenshots or screen recordings.
* The conversation buffer or the model's free-text output.

## Training data [#training-data]

The Horizon models are trained on synthetic conversations generated by AI. No real children's messages were used at any stage, according to the dataset documentation. See [Horizon models](/en/docs/ai/horizon).

The model improves only through a new model release that is downloaded to the phone. Because message text is never uploaded, it is not available for training.

## Playgrounds [#playgrounds]

The Android and web playgrounds run models locally as well. One exception is the web playground's optional rating feature, which sends the text you tested along with the result. See [AI playground](/en/docs/ai/ai-playground).

<Callout type="warn" title="Be open with your child">
  Reading on-screen text is a powerful capability. Talk with your child about what SafeCircle monitors before you turn it on.
</Callout>

<Cards>
  <Card title="On-device runtime" href="/en/docs/ai/on-device" description="How the model is downloaded, loaded and run." />

  <Card title="Understanding alerts" href="/en/docs/platform/dashboard/alerts" description="What you see as a parent." />

  <Card title="FAQ" href="/en/docs/support/faq" description="Common questions and troubleshooting." />
</Cards>
