Plotvera by AnaphaseOpen the appVersionsValidationChangelog

Plotvera privacy notice and data flows

Plotvera. Notice version 0.3, effective 23 Oct 2026. Last code review of the data flows: 2026-09-29, with the hosted-AI section added on 22 Oct 2026, and the company details and contact address on 23 Oct 2026. Draft for a research beta; not reviewed by a lawyer. This describes the application's present behaviour, not a promise about a future release.

Who runs Plotvera

Plotvera is made by Anaphase Ltd (company number 17537023), 71-75 Shelton Street, London WC2H 9JQ, registered in England and Wales.

For this notice, Anaphase is the controller of the support, security and cloud-share information described below. For research content you put into a cloud share, you decide what to share; Anaphase stores and processes it only to provide the feature you asked for.

Contact for privacy questions and requests: contact@anaphasescience.com.

The short version

Core browser-only work

Entering or importing data, running the built-in analyses, editing graphs, and exporting figures run in the browser. The current project is autosaved in that browser’s localStorage; it is not encrypted. Anyone with access to the same browser profile, a sufficiently privileged extension, or the device may be able to read it. Clearing site data can remove it, so download project files regularly.

Plotvera stores a small local error log containing messages, stack traces, version/build, timestamp, and where an error occurred. It does not include table cells and is not sent automatically. The user may include it when they choose to copy a feedback report.

The app does not load a remote web font, analytics SDK, or advertising tracker.

Self-contained share links

The recommended share option compresses the entire project into the URL fragment after #p=. Browsers do not normally send fragments in HTTP requests, so creating this link does not upload the project to Plotvera. However:

Do not use a self-contained link for confidential, personal health, controlled, or otherwise sensitive data unless your organisation has approved this handling.

Opening a share creates an editable copy only after a confirmation that it will replace the current local project. Save the current project first.

Optional cloud sharing

Cloud short links are a separate, explicit option. Before upload, the dialog says that the complete project will be sent to Plotvera’s share service and requires a consent checkbox. Anyone with the short URL can retrieve the project.

Cloud shares expire 30 days after creation. The API stops returning them at expiry, and an hourly database job deletes expired live rows; the service does not yet offer self-service deletion before that time. Database-provider backups may follow the provider/account retention schedule rather than disappearing at the instant the live row is deleted. Do not use cloud sharing for sensitive data. If the browser loses the database acknowledgement after an upload attempt, the UI reports the outcome as indeterminate rather than claiming no copy exists; an unconfirmed copy can remain until the configured expiry.

Share creation is limited by an atomic database quota. The edge function reads Vercel's platform-supplied client-IP header, converts it to a daily-scoped HMAC-SHA-256 pseudonym with a server-only secret, and sends only that pseudonym to the private quota table. The quota row is deleted after two days; Plotvera does not store the raw IP in that table. Vercel and Supabase may still process network metadata in their infrastructure logs under the operator's configured retention. Origin checks are a browser boundary, not authentication.

PowerPoint export is separate from sharing, and by default a presentation contains only the visible graph and its bounded preview table: no share URL, no project data beyond what is on the slides.

The Export panel offers one opt-in checkbox, off every time, that carries the editable project inside the .pptx so the deck can be reopened in Plotvera. When it is ticked, and only then, the exported file contains a complete copy of every sheet, result and graph in the project, stored as a custom XML part in the PowerPoint package, plus a link on the graph that carries the same project in the URL fragment. None of that is uploaded anywhere - it travels inside the file you save - but it does travel with the file, including to anyone the deck is forwarded to. Tick it only when the recipients may have all of the project data. Use Share separately when you want to send an editable copy without the slides.

Optional online AI

The assistant starts offline. Offline guidance makes no AI network request.

Hosted assistant states (added 22 Oct 2026)

Plotvera's code contains a hosted assistant route, in which a request would go from the browser to Plotvera's server and then to Anthropic as Anaphase's processor, paid for by Anaphase. It has three states, and the AI settings panel shows which one applies:

StateWhat it meansWhat is sent where
Not yet funded (today)The hosted assistant is switched off. The app says: "The hosted assistant is not yet funded. Use your own key."Nothing is sent by the hosted route. A hosted request is refused by the server with hosted-unfunded.
LimitedNot used by Plotvera.Not applicable.
AvailableOnly once Anaphase deliberately turns the hosted assistant on, after durable usage metering and billing exist.The prompt and the bounded context you confirm go to Plotvera's server and then to Anthropic. Anaphase would keep a usage record (time, model, token counts, outcome), never the prompt or the answer.

The hosted assistant is off unless two separate server settings are both present, so a key added by mistake does not switch it on. This notice will be updated, with a new version and date, before it is switched on. The provider list, the models and what each state sends are described in docs/AI.md (served as /ai).

Your own key

Online AI with your own key works as follows. After the user adds their own API key for Anthropic (Claude), OpenAI (ChatGPT models), Google Gemini, xAI (Grok), Mistral, DeepSeek, Groq or OpenRouter and explicitly enables online AI, requests go through Plotvera’s AI edge function to that provider.

Two further choices never involve Plotvera's server at all:

A user's own endpoint at a public https:// address (eg Together, Fireworks, Azure OpenAI) goes through the relay like the cloud providers. The relay only forwards to public https hosts on the standard port: it refuses private and link-local addresses, bare host names, .local/.internal names and URLs with embedded credentials, and only ever calls <address>/chat/completions and <address>/models with a request body Plotvera builds.

Smart import. When the user asks the assistant to read a spreadsheet, the data sent is a description of the file that the user can read word for word first: sheet names, table cell ranges, column labels with types, ranges and a few example values, and either the first 20 rows of each table (the default) or the whole sheet up to about 19,000 characters, plus Plotvera's own proposed plan. While the Smart import window is open, a connected Claude or ChatGPT can read the same description through the connector. With your own key, Plotvera does not spend a deployment-owned or shared provider key. A ChatGPT or Claude chat subscription is not an API key and cannot be used as one here; subscriptions can be used through the connector described below instead. Data sent can include:

This may reveal information derived from the raw cells even when the raw table is not copied verbatim. Do not enable online AI for data that is not approved for external processing. Turning online AI off stops later AI requests.

The user's key is kept in browser sessionStorage for the current tab’s page session. It can survive a reload, but is not written to persistent localStorage and is cleared when that tab/window session ends; current builds also remove the legacy persistent key left by earlier releases. A sufficiently privileged extension or script running in the same origin can still read page session storage. When online AI is used, the key is transmitted through Plotvera’s proxy to the chosen provider for that request; it is not intended to be logged or stored server-side by Plotvera. Removing the key also disables online AI, and the deterministic offline advisor continues to work without a network request.

For Anthropic, OpenAI and OpenRouter the user picks a specific model from a fixed list (the relay rejects anything else). For the other providers the user may also pick any model id from the provider's own model list ("Test connection and load models"); Plotvera shows a price only where the provider publishes one. OpenAI requests are sent with store: false. OpenRouter's free router is still offered, clearly labelled, and lets OpenRouter pick a different model each time. Provider availability, rate limits, logging, retention and training-use terms are external to Plotvera and must be reviewed by the user or organisation before enabling online AI.

Optional Claude and ChatGPT connector

The connector is separate from online AI and needs no API key. It lets the user add a personal link to their own Claude (claude.ai, Claude Desktop, Claude Code) or ChatGPT (Developer mode) as a custom connector, so that chat app can look at and change the Plotvera project open in their browser tab. Nothing connects until the user presses Connect Claude / ChatGPT in the assistant.

How the data flows:

Feedback and support

The feedback dialog builds a report locally. It contains user-entered text, app/engine/build identifiers, report type, and recent local error messages. It does not include table cells. Nothing is transmitted by the app automatically; the user must copy or email the report. Reports reach contact@anaphasescience.com, the support address, only if the user chooses to send them.

Who receives information

RecipientWhat forWhat it can receiveLocationStatus
Vercel Inc.Hosting the app and its API routes (/api/share, /api/ai)Request logs (network address, time, path); share and AI request bodies in transitUnited States and edge locations worldwideIn use
Supabase Inc.Database for cloud share linksThe project you choose to share, and a daily pseudonym of your network address for the quotaRegion to be confirmedIn use, only when you create a cloud share
Hetzner Online GmbHServer that runs the Claude and ChatGPT connector relay (mcp.plotvera.app)Tool calls and results in transit; no project data is storedNuremberg, GermanyIn use, only while the connector is switched on
Anthropic PBCHosted assistantThe prompt and the bounded context you confirmUnited StatesPlanned; not in use while the hosted assistant is not yet funded

With your own AI key, the provider you choose is your provider, not Anaphase's sub-processor, and your agreement with that provider applies. The company-wide sub-processor list will be published on the Anaphase website.

Some providers are in the United States. Transfers rely on the UK Extension to the EU-US Data Privacy Framework where the provider is certified, or on the UK International Data Transfer Addendum otherwise.

How long information is kept

"In force" means a job or provider setting enforces the period today. "Proposed" means the period is the target but no automatic deletion job enforces it yet.

InformationWhereKept forStatus
Projects, settings, recent files and the local error logYour browserUntil you clear themYou control it
Cloud share links and the project in themSupabase30 days from creation; an hourly job deletes expired rowsIn force
Cloud-share quota pseudonymsSupabase2 daysIn force
Database provider backupsSupabaseThe provider's backup schedule for the projectProvider setting
Hosting request logsVercel, Hetzner30 daysProposed
AI usage records (time, model, token counts, outcome; no prompts or answers)Anaphase server90 daysNot yet applicable (hosted assistant off)
Support emailEmail provider2 years from the last messageProposed

Deleting cloud data does not recall copies you or recipients already downloaded.

Lawful bases (UK GDPR)

PurposeBasis
Providing a cloud share you asked forContract
Security logs, abuse prevention, rate limits and the share quotaLegitimate interests (keeping the service available and safe)
Optional AI requestsYour choice to send each request; the request is processed to perform the action you asked for (contract)
Answering support emailLegitimate interests

Your rights

You can ask for a copy of your personal information, ask us to correct or delete it, object to or restrict some processing, and ask for portability where it applies. Email contact@anaphasescience.com. We will check identity before acting and reply within one month. Anaphase cannot see or recover projects held only in your browser.

If you are unhappy with our answer you can complain to the Information Commissioner's Office: https://ico.org.uk/make-a-complaint/ or 0303 123 1113.

Legal status

Plotvera is a research beta. This notice is a draft by a non-lawyer and is not a claim of compliance with any law or standard. Until counsel has reviewed it, avoid sensitive data in cloud sharing or online AI. Related documents: terms of use (docs/TERMS.md, /terms), storage notice (docs/STORAGE_NOTICE.md, /storage), AI disclosure (docs/AI_DISCLOSURE.md, /ai), accessibility statement (docs/ACCESSIBILITY.md, /accessibility) and security policy (SECURITY.md).

Rendered from docs/PRIVACY.md in this release's source.