← Intention Overview & Support

Privacy Policy — Intention

Last updated: 2026-09-14

Published at https://maybeitssoftware.co.uk/intention/privacy — that URL is what the App Store and Google Play listings point at, so this file is the source of it and any change here is a change to the published policy.

Intention is available as a browser extension (Chrome, Firefox, Safari) and as native Android and iOS apps. This policy covers all of them.

There are two ways the coach can run, and they have different data flows:

There is one deliberate exception to that second path, described under "Reporting a coach message" below: if you choose to report something the coach said, that report is sent to Intention no matter which path you are on. It only ever happens because you asked for it.

What the developer collects

On the Custom API key path: nothing, unless you report a message. No server is contacted for your conversations, and there are no analytics and no crash reports on any path.

On the coaching-credit path, the backend receives, for the duration of each request:

Requests are processed and returned; conversations are not stored, not logged, and not used to train anything. A running coaching-credit balance (how much of your top-up is left) is stored against that same hashed identifier and decreases as the coach is used; it holds no message content, and it persists so that credit you have paid for survives a server restart.

Like almost any web server, the backend also writes an access log of the requests it receives: a request id, the method, the path (never the query string), the response status, how long it took, and the client IP address. Alongside it the backend logs the few events it has to be able to account for — a coach request's token counts and what it cost, a change to a balance, and the fact that a device asked for a balance it had lost — each against the same one-way hashed identifier described above. None of it contains message content or an entitlement token. It exists to debug outages, to reconcile spend, and to spot abuse.

What Intention stores locally

On your device only — chrome.storage.local (or the equivalent Firefox/Safari API) for the browser extensions, Android SharedPreferences for the Android app, and UserDefaults/App Group storage for the iOS app:

This data is never synced to a developer-controlled server. Each device keeps its own settings; nothing is copied between your devices by Intention.

If your browser or OS has its own sync feature enabled (browser profile sync, iCloud, etc.), that sync is between your own devices/profiles via your own account with that vendor (Google, Mozilla, Apple), not something Intention initiates.

On Apple platforms, the native app and its Safari Web Extension share this data (including the coaching-credit entitlement and any API key) with each other on-device via an App Group — this is local interprocess storage between the developer's own app and its own extension, not a network transfer.

App-detection permissions (Android and iOS)

To detect when you open a blocked app, the native apps need OS-level visibility into what's running, in addition to the local storage above:

What is sent, and where

When you open a blocked site or app and talk to your coach, Intention sends an HTTPS request containing:

Where that request goes depends on which path you're on:

Either way, handling by the LLM provider is governed by that provider's privacy policy.

To fill in that description of what you were opening, your device may also make one request to the site itself — YouTube's, TikTok's or Reddit's public preview endpoint, or, for anything else, a plain cookie-less fetch of the page's <head> to read its title. It carries no cookies, so it always sees the logged-out version of the page, and it goes to that site, not to Intention. The result is cached only for the current browsing session and is never written to disk.

If you have told Intention to always allow particular YouTube channels, opening a YouTube video on a blocked YouTube also sends that video's address to YouTube's same public preview endpoint, so Intention can tell whose video it is before deciding whether to stop you. It goes only to YouTube, carries no cookies, happens only when you have such a list, and the answer (the channel's handle) is kept in memory only, never on disk.

The store's own purchase receipt is also sent to Intention's backend each time you buy coaching credit, so it can be verified with Apple or Google. Apple and Google receive your payment details; Intention never does.

Requests about your coaching credit

Coaching credit involves several further requests to Intention's backend. None of them carries any part of a conversation. The one described in detail below is the one worth spelling out, because of what it could otherwise be mistaken for; the rest are the ordinary machinery of a purchase and are listed after it.

The page your browser opens after you remove the extension

When you remove Intention from Chrome or Firefox, the browser opens a public page on GitHub explaining what was lost (docs/LEAVING.md). This happens through chrome.runtime.setUninstallURL, entirely inside the browser and after Intention is already gone: no code of ours runs, there is no callback, and the address carries no identifier of any kind. That request goes to GitHub, not to Intention — Intention is not told that you uninstalled it, and has no way to be.

It deliberately does not point at Intention's backend, which writes the access log described above for every request it receives. Pointing it there would have turned every removal into a logged event — an uninstall ping — which is precisely the thing this policy says Intention does not do.

The remaining coaching-credit requests, for completeness, all to the same backend and none carrying any part of a conversation:

Apart from all of the above, from the requests to the site itself described earlier, and from a report you choose to send, Intention makes no network requests on any platform.

Where "not on the custom-API-key path" is claimed above, it means the request is not made because of coaching: the recovery requests check the route and ask nothing on it. It does not mean the requests in this list are unreachable — if you bought coaching credit and later switched to your own key, pressing a button that is about that credit still sends the request that button is for. Nothing about your conversations goes with it, on any path.

Reporting a coach message

The coach is a language model, and a language model can say something wrong, cruel, or worse. Press and hold any message the coach wrote and you can report it.

Sending a report transmits, to Intention's backend:

Nothing else from the conversation is included. This is the only case in which anything from a Custom API key user's conversation reaches Intention, it only happens on that explicit action, and the app states what it is about to send before you confirm.

Reports are kept for up to 180 days and are used for one thing: working out what the coach is getting wrong and fixing it.

Data collection categories (store disclosures)

For app-store data-safety disclosures (Firefox Add-ons, Google Play, Apple App Store), Intention declares:

On the coaching-credit path these are sent to Intention's backend and on to its LLM provider; on the Custom API key path they are sent only to the provider you chose, using your own key, and never to the developer. The list of apps installed on your Android device (used only for the block-list picker, see above) is not included in any of these categories because it is never transmitted anywhere.

Your controls

Changes to this policy

If Intention's data flows change (e.g. a new provider integration), this file will be updated and the version history is visible in the project's git log.

Contact

Intention is published by MaybeItsSoftware Ltd, a company registered in the United Kingdom, which is the data controller for the limited processing described above.

Questions about this policy: open an issue on the project's GitHub repository, or email privacy@maybeitssoftware.co.uk.