Legal
Data Processing Addendum
Effective 2026-04-19. This Addendum (the “DPA”) supplements the Terms of Serviceand governs RubyCrawl’s processing of personal data on behalf of customers under GDPR Art. 28 and comparable laws.
1. Roles
Customer is the controller of personal data processed through RubyCrawl. RubyCrawl is the processor. Each authorised sub-processor in Section 4 processes data only under RubyCrawl’s instructions.
2. Scope of processing
RubyCrawl processes personal data to: operate authentication, crawl and index the customer’s own website, answer the customer’s visitors via the chat widget, store leads the visitor chooses to submit, meter usage, send service emails, and diagnose outages.
3. Security measures
- Row-level security enforced on every user-scoped Postgres table; service-role key used only at four server-only boundaries (chat/session, leads, crawl webhook, file processing).
- Customer data is logically isolated by user_id and, for public endpoints, by site_key validated against the owning site.
- Encryption in transit (TLS) and at rest (Supabase, Stripe).
- Least-privilege access: dashboard users see only their own rows via RLS; RubyCrawl operators use break-glass service-role access logged in audit logs.
- Rate limits backed by Upstash prevent abuse of the public widget, crawl, and file-upload endpoints.
4. Authorised sub-processors
The following sub-processors are engaged as of the effective date:
- Supabase, Inc. — authentication, Postgres database with pgvector, object storage, real-time pub/sub. Region: us-east-1.
- OpenAI, L.L.C. — text embeddings (text-embedding-3-small) and chat completions (gpt-4o-mini).
- Firecrawl— website crawling and markdown extraction; async webhook callbacks.
- Stripe, Inc. — subscription billing, invoices, customer portal, webhook signature verification.
- Upstash, Inc. — Redis-backed sliding-window rate limiting across the public widget, crawl, and file-upload surfaces.
- Resend— transactional email (welcome, trial ending, quota warnings, payment failure).
- Sentry— error monitoring with tags environment, user_id, request_id.
We will provide at least 30 days’ notice before engaging a new sub-processor. Customers may object to a new sub-processor by emailing brandon@rubycrawl.app within the notice window.
5. International transfers
Personal data may be transferred to sub-processors located outside your country, including the United States. Where required, transfers are governed by Standard Contractual Clauses.
6. Data-subject requests
Customer may fulfil data-subject access, correction, portability, and erasure requests using the self-service controls (Settings › Site › Delete Account) or by contacting brandon@rubycrawl.app.
7. Breach notification
RubyCrawl will notify the Customer without undue delay after becoming aware of a personal data breach affecting Customer data.