Privacy Policy

Your Privacy.
Our Promise.

FocusScore was built because we hated surveillance-based productivity tools. This policy explains exactly what we collect, why, and the rights you have — in plain English first, full legal detail below.

See Your Rights →support@focusscore.ai

Last updated: July 2026 · Applies to the FocusScore Chrome extension, Android app, and web dashboard

0
Data ever sold
Local
Content processing
AES-256
Encryption at rest
GDPR
Fully compliant
Plain English First

What We Do — and Don't — Collect

FocusScore measures attention patterns from coarse behavioural signals. It never touches your content, your identity, or your history.

✓ What we collect
Event type — watch, scroll, tab-switch, idle
Event duration and timestamps
A coarse content category (e.g. news, gaming) — a label only, never the page itself
The website name of pages you visit (e.g. github.com) and how long you spent there — never the full address, the page you were on, or what you searched for
Aggregated metrics (Shorts ratio, Focus Score)
Email address if you choose to sign in
Anonymous UUID — not linked to your identity
✗ What we never collect
⌨️Keystrokes or passwords
📄Page content or text
🌐Full URLs or browsing history
📷Screen recordings or screenshots
💬Personal messages or communications
🔍Device identifiers or fingerprints
How it works in practice: Content classification (what topics you're watching or reading) happens entirely inside your browser using the extension. Raw page content and full web addresses never leave your device — an address is reduced to just the website name (github.com) before anything is sent, and the rest is discarded on your device. What reaches our servers is coarse behavioural metrics — event type, duration, counts — plus that website name and how long you spent there, attached to a random UUID, not your name or email.
Android app only: FocusScore for Android includes an optional Accessibility Service that powers Shorts/Reels auto-exit, focus-session app blocking, and feed-element hiding inside a fixed list of supported apps. It is off by default, processes everything on-device, and never transmits what it sees to our servers. Full disclosure below →

1Overview

FocusScore is a Chrome extension and web service that turns your on-page behaviour into a daily Focus Score and behavioural insights. This policy explains what we collect, why, how long we keep it, and the controls you have. It is written to meet UK GDPR expectations.

We believe attention measurement and privacy are not in conflict. We built FocusScore precisely because we were frustrated with surveillance-based productivity tools. This policy reflects that philosophy.

2What we collect

We collect coarse behavioural event data — event type (e.g. watch, scroll, tab-switch, idle), duration, and timestamps — the website names of pages you visit with the time spent on each, and the aggregated metrics derived from them (e.g. Shorts ratio, Focus Score).

If you choose to sign in, we store an email address to sync your settings and send weekly reports.

Optional health and wellbeing data. Two features collect data that UK GDPR treats as a special category (Art. 9), and both are off until you switch them on: the daily mood check-in, which records a 1–5 rating and an optional free-text note (the note is encrypted at rest), and connected wearables — Health Connect, Apple Health, Oura or Fitbit — which supply sleep and heart-rate summaries used to relate rest to focus. Each sits behind its own explicit opt-in, separate from both your account terms and your behavioural-tracking consent, and each can be withdrawn on its own. Disconnecting a wearable deletes the data it supplied, and we never sell or share any of it. See how consent works.

We do not collect:

  • Page content or text you type
  • Keystrokes or passwords
  • Full URLs or browsing history
  • Screen recordings or screenshots
  • Personal messages or communications
  • Device identifiers beyond a session token

3Legal basis

We process data under your consent (UK GDPR Art. 6(1)(a)) when you install and use the extension, and our legitimate interest in providing core product functionality. You can withdraw consent at any time by deleting your data or removing the extension.

Behavioural-tracking consent is asked as a separate, unticked question, never bundled with acceptance of these terms — bundled consent is not valid consent. An unanswered question is treated as a refusal: a new install transmits nothing at all before you have seen and answered the question. Declining leaves every on-device feature (blocking, filtering, budgets, the focus timer) fully operational; only the Focus Score and its history require the data.

The optional mood check-in and connected-wearable data described in section 2 are special-category data, processed only on your explicit consent under Art. 9(2)(a) — a separate opt-in from the behavioural-tracking consent above, and separately withdrawable. We do not process special-category data on any other basis.

Withdrawal is as easy as granting (Art. 7(3)) and lives in the same settings panel. Withdrawing also discards events queued on your device but not yet transmitted. We retain the dates on which consent was granted and withdrawn — not the behavioural data — as the accountability record required by Art. 7(1); both dates are included in your data export. See our consent page for the full explanation.

4Anonymisation & data minimisation

Each user is identified by a random pseudonymous UUID — not by name, email, IP address, or device fingerprint. Content classification (topic categories, keyword tags) is performed locally inside the extension; raw page content, titles and full URLs never leave your device. What is transmitted is coarse behavioural metrics (event type, duration, counts), a short category label (e.g. "news", "gaming"), and — if you use the time-by-category breakdown — the registrable domain of sites you visit ("github.com"), never the path, query string or page title. We want to be straightforward that a domain says more about you than a category label does, which is why it is reduced on your device before sending and why the path is discarded rather than trimmed later. Our API additionally strips any field that is not on a small allow-list, so identifying data cannot be stored even if a modified client tried to send it.

We practise data minimisation: we collect the least amount of data needed to compute your Focus Score and deliver insights. If a signal is not needed for the score, we do not collect it.

5Storage & security

Data is encrypted in transit (TLS 1.3) and at rest using AES-256. Access is restricted to team members who need it for product operations. We do not sell your data or share it with third parties for advertising purposes.

6Data retention

Raw events are retained for 30–90 days. Aggregated metrics (your Focus Score history and platform breakdowns) are retained for 12–24 months. Any data used to improve our scoring model is anonymised and cannot be traced back to individual users. You can request earlier deletion at any time.

7Your rights

You have the following rights regarding your data:

Access:Request a copy of everything we hold for your account.
Export:Download your data in JSON or CSV from the dashboard Settings tab.
Deletion:Permanently delete all your data from the dashboard or by emailing support@focusscore.ai. Fulfilled within 30 days.
Rectification:Correct any inaccurate data we hold.
Portability:Receive your data in a machine-readable format.
Objection:Object to processing on legitimate interest grounds.

8Data sharing

We do not sell, rent, or trade your personal data. We do not share data with advertising networks. A small number of service providers act as data processors under contract and cannot use your data for their own purposes: hosting, email delivery, and a third-party AI provider (Groq) that generates your personalised insights, coaching tips and reports. Only aggregated, non-identifying numbers (e.g. your Focus Score, Shorts percentage, tab-switch counts) are sent to the AI provider — never your name, email, page content, or URLs.

9Cookies & local storage

The web dashboard uses browser local storage to keep you signed in and remember preferences. It does not use advertising cookies or third-party tracking pixels. The Chrome extension uses chrome.storage.local to store your settings and recent session data locally.

10Contact & DPO

For privacy questions, data requests, or to contact our Data Protection Officer: support@focusscore.ai

We aim to respond to all requests within 72 hours.

11Android app: Accessibility Service

This section is the prominent disclosure required by Google Play's Accessibility API policy. It applies only to the FocusScore Android app, and only if you choose to turn this feature on.

The FocusScore Android app includes an optional, off-by-default Accessibility Service (ai.focusscore.contentguard.ContentGuardService). It only ever activates inside a fixed list of supported apps — YouTube, Instagram, Facebook, Facebook Lite, Reddit, X (Twitter), LinkedIn, and TikTok — and does nothing anywhere else on your device, including inside other apps, your keyboard, or system UI. That is eight apps; because TikTok ships under two different package names depending on your region, the technical allow-list built into the app names nine packages.

What it's used for. A set of focus features, each individually opt-in with its own control in the app's Settings tab, and every one of them off until you turn it on:

  • Auto-exit Shorts/Reels — recognises when a short-form video player has opened and simulates the Back gesture to leave it. Applies to YouTube, Instagram, Facebook and Facebook Lite. It deliberately does not apply to TikTok, where short-form video is the entire app rather than a mode inside it, so backing out would close the app instead of nudging you.
  • Block distracting apps during a Focus Timer session — if you start a Focus session and switch to an app you chose to block, simulates the Home gesture to return you to your home screen.
  • Daily time limit — for YouTube and TikTok you can set a daily cap in minutes. Once you pass it, the app is returned to your home screen for the rest of the day, with a short on-screen message saying why. TikTok's two regional builds share one counter.
  • "Still watching?" mindful pause — after a number of minutes you choose of continuous use of YouTube or TikTok, pauses playback and shows a full-screen prompt offering to keep going or leave.
  • Hide specific feed elements you choose — e.g. Sponsored posts, Suggested for You, the Reels tray, a sidebar — by drawing an opaque visual mask over just those elements, mirroring the equivalent per-platform filters in our Chrome extension. On TikTok this covers only the chrome around the video (a Sponsored label, the LIVE shelf, the comment sheet, the "For You" tab label); there is no option to mask the feed itself, because on TikTok that is the whole app.
  • Hide posts matching your own blocklist — if, and only if, you add keywords or channel names to the blocklist, cards whose visible title or label contains one of your terms are masked in the feed. Available on the seven card-based apps; not on TikTok, which has no feed cards to mask. See the note below on what this one reads.
  • App-switching nudge — if you bounce between the supported apps five or more times within 60 seconds, shows a local notification suggesting you refocus.
  • YouTube-specific extras — a scheduled block window, a daily cap on how many distinct videos you open, auto-tapping "Skip ad", and switching Autoplay off. These rely on a discrete video with a title, which TikTok's continuous feed does not present, so they are YouTube-only.

What data it reads, and why. To do the above, the service inspects the package name of whichever app is in the foreground, and — only while that app is one of the eight listed above — the resource-IDs of on-screen UI elements. For a small number of feed elements in apps that obfuscate their resource-IDs (mainly Meta apps, and TikTok, which obfuscates all of them), it additionally reads the visible label text rendered by the app's own interface chrome, such as the word "Sponsored", "Reels" or "LIVE". This is used solely to recognise which UI element is which.

The one exception, and it is yours to switch on.The "hide posts matching your own blocklist" feature above is the only part of the service that looks at text you did not write as a setting. If you have added blocklist terms, it compares the visible title or label of each on-screen feed card against your terms so it can mask the ones that match. That means card titles — which are written by other people — are examined in memory, on your device, for the length of that comparison. Nothing about them is kept: no match is logged, no text is stored, and nothing is transmitted. If your blocklist is empty, which is the default, this comparison never runs at all.

Beyond that comparison, the service never reads direct messages, comment threads, captions, or the body of any post, and it never retains or transmits any of it. It does not perform OCR, screen recording, or screenshots, and it does not operate outside the eight listed apps.

What happens to that data. Nothing leaves your device. All detection and matching happens locally and in real time; none of it is logged, stored, or transmitted to FocusScore's servers or any third party. FocusScore has no visibility into what you see inside YouTube, Instagram, Facebook, Reddit, X, LinkedIn, or TikTok. This data is never used for advertising, never sold, and never used for any purpose beyond the features described above.

Your control. This permission is entirely optional. You choose to enable it from the app's Settings tab, which links directly to Android's system permission screen. You can review, pause, or fully revoke it at any time via Android Settings → Accessibility → FocusScore, or the equivalent toggle inside the app. Revoking it only disables the features above — it does not affect your account, your Focus Score, or any other part of the app.

Questions?

Your Data, Your Control.
Always.

Exercising your rights, requesting deletion, or just have a question? Our privacy team replies within 72 hours.

Email the Privacy Team →Use the Contact Form