Privacy

What we do and don't send.

Promote is local-first. Your games, analyses, and coach conversations live on your machine. We collect a small amount of anonymous, aggregated usage data to understand how players use Promote and where to focus. This page lists exactly what's in it.

What's in the ping (anonymized)

Sent at most once every 24 hours from installs that have the toggle on. Default is on; you can switch it off at any time in Settings.

What the ping never contains

One honest caveat: the list above covers the automatic usage ping. If you voluntarily submit a bug report via the Report Issue button, the attached screenshot and the note you type may contain any of these things, because you chose to send them. See the Report Issue section below.

How we use it

Everything published on promotechess.com is an aggregate across all opted-in installs. We never publish per-user numbers. Examples of what the data supports:

How to turn it off

Open Settings → Usage stats and flip the toggle. Future pings stop immediately. Past anonymous pings remain in aggregate numbers since there's no way to link them back to you.

See the exact payload

From within the app, Settings → Usage stats → See exactly what's shared shows the actual JSON that would be sent next, built from your live local data. No hand-waving.

Other cloud calls the app makes

These are separate from telemetry. Each is triggered by you, not by background code:

Report Issue (the button in the corner)

Promote has a Report Issue button in every view so you can send us a bug or a gripe with one click. Because it's a deliberate user action and not background telemetry, we're honest about what it contains, which is more than anything else the app sends:

When it fires: only when you click Report Issue, review the attached screenshot in the modal, and press Send. It never fires in the background.

Where it goes: our Cloudflare feedback worker at feedback.dweisman81.workers.dev. The screenshot is stored in a private Cloudflare R2 bucket; the metadata in a private Cloudflare D1 database. Only Daniel can access either.

How to turn it off: don't click it. If you'd like a bug report you already sent deleted, email the address below with the report ID (shown in the confirmation toast) or enough detail for us to find it, and we'll remove the screenshot from R2 and the row from D1.

Retention

Anonymous ping rows are retained for up to 180 days. After that they're deleted from the aggregation database. Coach conversations sent to OpenRouter are subject to that provider's retention policy; see openrouter.ai/privacy.

Who's responsible for your data

The data controller for Promote is Daniel Weisman, an independent developer based in the United States. Reachable at dweisman81@gmail.com for any privacy question, request, or concern.

Why we're allowed to process it

For readers in jurisdictions that require us to name a legal basis (the EU and UK, under GDPR):

Your rights

Whatever data-protection regime you live under (GDPR, UK GDPR, CCPA, or others), these are yours:

If you believe your rights have been violated and we haven't resolved it, you can lodge a complaint with your local data-protection authority.

International transfers

Promote's telemetry, key provisioning, and update hosting are on Cloudflare (United States). The Coach feature routes through OpenRouter (United States) to whatever LLM you've selected. The underlying model provider may be anywhere. If you're outside the US, the data relevant to a given feature call may be processed in the US.

Children

Promote is not directed at children under 13, and we do not knowingly collect personal information from them. If you believe a child has submitted personal information, email us and we'll delete it.

Changes to this policy

Substantive changes are announced at the top of this page and, for paying users, by email before they take effect. The date below reflects the last meaningful change.

Questions

Email Daniel at dweisman81@gmail.com.

Last updated: April 24, 2026 (rev 1 — added Report Issue disclosure)