privacy

⚠ Work in Progress — This document is a draft and is not yet legally binding. It is provided for informational purposes only and is subject to change without notice.

Privacy Policy

This Privacy Policy applies exclusively to the instance of SourceQuote operated at sourcequote.org, owned and operated by the license holder, Benjamin Leavitt. SourceQuote is open-source software; this policy is not valid for any other deployment of this codebase. Third-party deployments are solely responsible for their own privacy practices.

This Privacy Policy describes how SourceQuote ("we", "us", "our") collects, uses, and safeguards information when you use the Service. By using the Service you agree to the practices described here.

Last updated: June 3, 2026

Data We Collect

We collect only what is necessary to provide the Service.

Account data

When you create an account, we collect your email address and a display name via Firebase Authentication. This is used solely for login, account identification, and service-related communication.

Project data

Audio files, transcripts, and project metadata you upload are stored in Google Cloud Storage and our database. This data is associated with your account and is not accessed by us except for the purpose of delivering the Service or diagnosing faults.

Usage data

We log page views, API request counts, and IP addresses server-side for operational monitoring and abuse prevention. These logs are not sold or shared with third parties. No third-party analytics scripts (e.g. Google Analytics, Mixpanel) are present on the Service.

Local preferences

UI preferences such as theme, colour schemes, panel layout, and workspace state may be stored in your browser's localStorage, in your account on our servers, or both. Preferences stored server-side are associated with your account and are subject to the same retention and deletion policies as other account data.

Cookies

SourceQuote uses strictly necessary cookies only. No tracking, advertising, or analytics cookies are set. Because we use only essential cookies, no consent banner is displayed — this is in compliance with GDPR Article 6(1)(f) and the ePrivacy Directive exemption for technically necessary cookies.

Session cookie (session)

Purpose: Maintains your authenticated session between page requests. This cookie is set by the Flask web framework on the server side and is required for the application to function. Without it, you would be logged out on every page navigation.

Type: HTTP-only, server-set session cookie
Duration: Session (expires when the browser is closed, or on logout)
Sent to: SourceQuote servers only
Third-party access: None
Set by: Flask (SESSION_COOKIE_SAMESITE=Lax, SESSION_COOKIE_SECURE=True in production)

Authentication tokens

Firebase authentication tokens (JWTs) are not stored in cookies. They are held in JavaScript memory and transmitted via the X-Auth-Token HTTP header on API requests. They are not persisted to localStorage or any cookie, and are discarded when the page session ends.

Local storage (not cookies)

Some UI preferences are stored in browser localStorage. This is distinct from cookies — localStorage data is never transmitted automatically and exists only on your device. You can clear it at any time via your browser's developer tools or site settings. See Data We Collect for details on which preferences may also be stored server-side.

Data Storage and Retention

Your data is stored on infrastructure provided by Google Cloud Platform (GCP), including Cloud Storage (files) and Cloud SQL (structured data). Data is stored in the region configured for the deployment.

Account and project data is retained for as long as your account is active.

Account deactivation (self-service)

You can deactivate your account at any time from your account settings. Deactivation sets your account to inactive and revokes login access immediately. Your data — including projects, folders, files, and account record — is retained on our servers and is not deleted. To reactivate your account, contact us at vtleavs@gmail.com.

Account deletion (permanent)

Permanent deletion is performed by a server administrator. When an account is permanently deleted:

  • Your user record and authentication data are removed immediately.
  • Embed records you own are deleted immediately.
  • Projects and folders you own are disassociated from your account but are not automatically deleted — they remain on the server in an unowned state. You should delete your projects before requesting deletion if you wish them to be removed.
  • Audio and transcript files stored in Cloud Storage are not automatically removed at the time of deletion.

To request permanent deletion, contact us at vtleavs@gmail.com.

Data Sharing

We do not sell, rent, or trade your personal data. We share data only with:

  • Google Cloud Platform — infrastructure provider for storage, database, and compute services.
  • Firebase (Google) — authentication provider. Your email is stored with Firebase for the purpose of login.
  • Stripe, Inc. — payment processor. See Payments and Stripe for full details.
  • Modal Labs — GPU compute provider used to run transcription jobs. When you request a transcription, your audio file is transmitted to Modal's infrastructure for processing. No account information, personal data, or metadata beyond the audio content is sent. The audio is processed transiently and is not stored by Modal beyond the duration of the job.
  • Law enforcement — if required by law or valid legal process.

No other third parties receive your data.

Payments and Stripe

Subscription billing and one-time donations are processed by Stripe, Inc. ("Stripe"), a third-party payment processor. Stripe is PCI-DSS compliant. SourceQuote never receives, stores, or processes raw payment card data — all payment information is entered directly into Stripe-hosted interfaces.

By initiating a payment you also agree to Stripe's Privacy Policy.

What we share with Stripe

When you subscribe or donate, we create a Stripe Customer record containing:

  • Your email address
  • Your display name
  • An internal user ID (used to link your SourceQuote account to your Stripe record)

This information is sent to Stripe at the point of first payment and is used solely for billing, invoicing, and subscription management.

What we store from Stripe

We store your Stripe Customer ID (cus_…) in our database. This identifier links your account to your Stripe billing record and is used to open the billing portal, issue refunds, and manage subscription status. No card numbers, bank details, or other payment credentials are stored by us.

Subscription status

Stripe sends webhook events to our servers when your subscription changes (e.g. payment succeeded, payment failed, subscription cancelled). We use these events to update your subscription tier in our database. The raw webhook payloads are not stored beyond what is needed to process the event.

Billing portal

The "Manage billing" option in your account redirects you to a Stripe-hosted billing portal. Any payment method changes, cancellations, or invoice downloads take place on Stripe's infrastructure and are governed by Stripe's Privacy Policy.

Donations

One-time donations are processed via Stripe as anonymous payment intents. Donations are not linked to a SourceQuote account unless you are signed in at the time of donation.

Your Rights

Depending on your jurisdiction, you may have the right to:

  • Access the personal data we hold about you
  • Request correction of inaccurate data
  • Request deletion of your account and associated data
  • Object to or restrict certain processing
  • Data portability (receive your data in a machine-readable format)

To exercise any of these rights, contact us at the address below. We will respond within 30 days.

Contact

Questions about this Privacy Policy or your data should be directed to:

Benjamin Leavitt
vtleavs@gmail.com