Privacy & security

Your charts are analyzed, then discarded

Most chart tools quietly keep your uploads. ChartSage does not. This page is the plain description of the architecture — what leaves your phone, what a server holds, and what simply does not exist in this system.

What leaves your device

Exactly two things: the compressed bytes of the chart image you chose, and the analysis preferences you set in the app. They travel over TLS to a single Firebase callable Function. That is the whole outbound payload.

  • The image is compressed on-device before it is sent, so the upload is small.
  • There is one endpoint. No third-party analytics receives your chart, and no ad network is involved in an analysis.
  • No contacts, no location, no photo library scan — the app receives only the single image you pick.

What is kept: nothing

The Function holds your image in memory long enough to run the analysis, then drops it. There is no Cloud Storage bucket in this project — not a private one, not a short-retention one. The image has nowhere to be written to, which is a stronger guarantee than a deletion policy, because there is no deletion step to forget.

The result travels back to your device and is written to the app's local database on your phone. That local copy is the only copy of your analysis history that exists anywhere. Uninstall the app and it goes with it.

What the server does keep

One record per device: a credit balance and entitlement status, keyed to your Android device identifier (ANDROID_ID). That is the complete list. It exists so free credits can be metered and purchases honoured, and it is written only by the server — the app has no direct read or write access to it.

It holds no chart, no analysis, no name, no email, and nothing that describes what you trade or when. The device identifier is disclosed as a device identifier in the Privacy Policy, where its purpose — metering and abuse prevention — is spelled out.

No account, no sign-in, no email

There is no registration screen, because there is no account system. You are never asked for an email address, a phone number, a password, or a social login. Nothing is harvested, because nothing is collected in the first place — there is no mailing list you could end up on.

The trade-off is honest and worth stating: with no account, there is nothing to sync. Your history lives on one device by design.

How requests are authorized

Firebase App Check is the only authorization gate. Each call carries an attestation token proving the request came from a genuine, unmodified install of the app, and calls without one are rejected. This protects the service from abuse without ever needing to know who you are — the app proves it is the app, not that you are you.

Model provider keys never ship in the app

The AI model SDK is not bundled in the Android app and provider API keys are never present on your device. They are held server-side in Google Secret Manager and used only by the Function. Nothing sensitive can be extracted from the installed app, and the model behind the analysis can be changed server-side without shipping a new release.

What this means in practice

  • A breach of the analysis service could not leak your charts, because your charts are not there.
  • There is no profile of your trading to sell, share, or subpoena.
  • The strongest privacy control stays with you: uninstalling removes your history completely.

Removing what little exists

If you want the per-device credit record cleared as well, the process is documented on the Delete your data page. The full detail on identifiers, third parties, and retention is in the Privacy Policy. Questions that neither answers can go to privacy@apperssystems.com.


ChartSage is built by Appers Systems. It is an educational technical-analysis tool, it is not financial advice, and it is not affiliated with any broker, exchange, or trading platform.

Get ChartSage on Google Play How it works