Legal

Privacy.

Which data we process, for what purpose, and on which legal basis, derived from what the code actually does.

Draft. The list of processing activities below is derived from the source code of this site and is reliable to that extent. Everything marked TODO has not been decided yet: retention periods, server regions, data processing agreements. This page is not legal advice and has to be reviewed by a lawyer before launch.

1 · Controller

Harwin Singh Malhi & Philip Degenhardt GbR
Bodenseestraße 302D
81249 Munich, Germany
Email: hello@trialone.info
Phone: +49 163 3799189

Data protection officer: TODO: check whether one is required under Art. 37 GDPR / § 38 BDSG; with two people, usually not.

2 · Visiting this website

Delivering the pages (hosting, Vercel)
Data
IP address, time, requested URL, user agent, referrer, in server logs
Legal basis
Art. 6 (1) (f) GDPR: operation and security of the website
Retention
TODO: enter the retention period of the Vercel logs
Audience measurement (Vercel Analytics)
Data
Page views, referrer, approximate origin, device type
Legal basis
TODO: clarify the legal basis. Vercel Analytics sets no cookies; whether that satisfies § 25 TDDDG is an assessment, not a question the code answers.
Retention
TODO
Error reports
Data
When a page or request fails: the error message and the address of the page without its query, cleaned of keys and email addresses, a reference number, and whether it happened on the server or in the browser. No IP address is stored with it.
Legal basis
Art. 6 (1) (f) GDPR: finding and fixing faults in the service
Retention
30 days, then deleted by a daily cleanup
Chat with us (Crisp)
Data
Nothing is loaded from Crisp until you click the chat button or Get help. Then: IP address, browser and device details, and an identifier that Crisp stores in your browser so the conversation can continue. If you write to us: your messages, the page you wrote from, and the email address of your account if you are signed in. Recordings and diagnoses are never passed to Crisp.
Legal basis
Art. 6 (1) (b) GDPR: answering the request you start by opening the chat. The identifier is stored only after that click, because the chat you asked for needs it (§ 25 (2) no. 2 TDDDG).
Retention
TODO: set how long conversations are kept in Crisp and name it here

Hosting and measurement run at Vercel Inc. TODO: conclude a data processing agreement with Vercel and reference it here; state the project's server region.

3 · Account and access

Account: email with password, GitHub or Google (Supabase Auth)
Data
Email address, password (only as a hash at Supabase), with GitHub/Google also the provider's display name and profile picture address, account ID, timestamps
Legal basis
Art. 6 (1) (b) GDPR: providing the access you requested
Retention
TODO: until the account is deleted; define the deletion path and name it here
Requesting access (/request-access)
Data
First and last name, email address, company, team size, what you are building, and your account ID if you are already signed in; the time of the request, our decision, and whether our notification and your confirmation email were delivered
Legal basis
Art. 6 (1) (b) GDPR: steps prior to entering into a contract, taken at your request
Retention
TODO: decide how long requests are kept, in particular declined ones
Access check by the command-line tool
Data
Your CLI key, checked against its stored hash, at most once a day; the answer (approved or not, and when) is kept on your own machine
Legal basis
Art. 6 (1) (b) GDPR: the tool runs for approved accounts
Retention
Only the time of last use is kept with the key, see the next entry
CLI keys for the terminal
Data
SHA-256 hash of the key, a label you choose, creation, last use, revocation
Legal basis
Art. 6 (1) (b) GDPR
Retention
TODO: until revoked; decide how long revoked keys are kept

The key itself is never stored, only its hash: whoever reads the database cannot sign in with it. The label you choose (“Anna's laptop”) is a free text field, and whatever you write there is stored.

4 · Uploaded diagnoses

You set per machine what is uploaded (Settings, Robots, “History that leaves this robot”). The default is “full”: the result of the diagnosis, key figures per channel, a history of every channel as sample points (min, mean, max per section; 120 per run for recordings, one per minute in the watcher) and the minute around each finding at 10 Hz. “incident” leaves out the history, “off” also the minute around the finding. The recording itself (bag, MCAP, CSV) is only uploaded if you switch that on for the machine; it is off by default.

A run you send with `trialone … --push`
Data
The recipe: symptom, causal chain, measured values, channel names, file and parameter names from your project, file and line references; plus a hashed machine ID, the program version and the time
Legal basis
Art. 6 (1) (b) GDPR: the function you called the push for
Retention
TODO: decide on retention. Proposal from TERMINAL-ZU-WEB.md §13.1: unlimited, with deletion per run and “delete everything” in the account.

A run can only be read by its own account; the database enforces this itself (row level security), not only the application. A recipe can reveal the structure and naming of your project: paths, parameter names, channel names, measured values. That is usually not personal data, but it is your know-how, and it is named here instead of left unsaid.

5 · Interpretation by a language model

Explaining a finding with a language model (Anthropic or OpenRouter)
Data
The content of the recipe: channel names, measured values, file and line references from your source tree, your description of the machine, your own observations, and your question in the chat. NOT the recording itself.
Legal basis
Art. 6 (1) (b) GDPR: the explanation is the service you commissioned
Retention
TODO: check retention at the model provider and name it here (Anthropic and OpenRouter each have their own periods; at OpenRouter it also depends on the provider it routes to).

You choose which model is used under Settings → Model. If the interpretation runs with your own key on your robot, nothing leaves our servers for it: the connection then goes directly from your machine to the provider, and we see neither the request nor the answer.

TODO TODO: conclude a data processing agreement with the chosen model provider; secure the transfer to a third country (USA) with standard contractual clauses and name it here. As long as this is open, every customer conversation has to mention that this transfer takes place.

Observations a person enters (“checked the connector, it was fine”) are free text and go into the same request to the model, see Settings. Whatever you write there is transmitted.

6 · Payment and billing (Stripe)

Subscription, credit, invoices (Stripe)
Data
Email address, billing address, payment method metadata (brand, last four digits, expiry), amounts, invoice numbers, Stripe customer and subscription ID
Legal basis
Art. 6 (1) (b) GDPR: performance of the contract; Art. 6 (1) (c) GDPR for retention under commercial and tax law
Retention
TODO: enter the statutory retention period for invoices (usually 10 years, § 147 AO) and separate it from account deletion

The card number never reaches us: it is entered at Stripe, and we only get back what is listed above. That is also why we cannot lose it.

Usage metering
Data
Time, model name, token count, number of explained incidents, credit used
Legal basis
Art. 6 (1) (b) GDPR: billing the agreed service
Retention
TODO: decide how long usage lines are kept

7 · Connected services (only if you connect them)

Slack, Discord, GitHub
Data
For Slack/Discord: the webhook address of the channel you chose, and the names of the channel and workspace; the finding text is transmitted. For GitHub: installation ID, names of the repositories you released; the content of the issue is transmitted.
Legal basis
Art. 6 (1) (b) GDPR: forwarding is the function you set up
Retention
Until you disconnect (Settings → Integrations)

Without a connection you set up, nothing flows to these services. The GitHub app has no permission for contents: it cannot read a file, a branch or a secret.

8 · Contact, replies, booking a call

Contact form and email to us
Data
Your name if you give it, email address, your message, the page you wrote from, and your account ID if you are signed in; the time, and whether the message was delivered to us
Legal basis
Art. 6 (1) (b) or (f) GDPR
Retention
TODO
Our replies
Data
When we answer a message or an access request from our admin console: recipient, subject, text, which of us replied, and when
Legal basis
Art. 6 (1) (b) or (f) GDPR
Retention
TODO
Protecting the open forms against abuse
Data
The IP address of whoever submits the contact or access form, held only in the working memory of the server to count submissions over ten minutes; it is not written to a database
Legal basis
Art. 6 (1) (f) GDPR: keeping the forms usable and preventing our address from being used to send mass email
Retention
Ten minutes of counting; after that it is removed from memory within a minute
Booking a call (Cal.com, only where a booking link is shown)
Data
What you enter in the embedded calendar; loading it transmits your IP address to Cal.com
Legal basis
Art. 6 (1) (b) GDPR
Retention
TODO

Email to hello@trialone.info arrives in a mailbox at IONOS (Germany). Our notifications, your confirmation emails and our replies are sent through Resend, with the sending region set to the EU. Sign-in emails (confirming your address, setting a password) are sent by Supabase through the same service. TODO: conclude data processing agreements with Supabase, Resend, IONOS, Crisp and Cal.com and reference them here.

9 · Recipients and transfers to third countries

We pass data to the service providers named above as far as they need it for operation: Vercel (hosting, audience measurement), Supabase (account, database, sign-in emails), Resend (sending email), IONOS (our mailbox), Crisp (chat), Stripe (payment), Anthropic or OpenRouter (interpretation), Cal.com (booking a call, where offered), and Slack, Discord or GitHub only if you connect them.

TODO: for each service, state its seat, server region and the basis for any transfer to the USA (EU-U.S. Data Privacy Framework or standard contractual clauses). This cannot be read from the code.

10 · Your rights

You have the right of access (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18), data portability (Art. 20) and to object to processing based on legitimate interests (Art. 21). You can withdraw consent you have given at any time with effect for the future.

You can exercise the most common of these yourself, without writing to us: under Settings, Profile, “Your data” you download everything your workspace has with us as one file and delete your account; a single run is deleted from its own page, together with its stored files.

For anything else, write to hello@trialone.info. Independently of this, you can lodge a complaint with a data protection supervisory authority (Art. 77 GDPR); the authority responsible for us is the Bavarian State Office for Data Protection Supervision (BayLDA).

11 · Last updated

This policy describes the state of 15 September 2026. If what is processed changes, this page changes with it.