Etropo

Etropo is marketing budget software. Customers trust it with budget plans, spend actuals and the account data of the people who manage them.

Security, reliability, privacy and compliance are part of how we build and run Etropo, from the first design to daily operations.

This page shows how we protect customer data, in terms you can check. It lists every control with its status, the vendors that process customer data and the policies we follow.

General

Architecture and data flow overview

Where the application runs, where data is stored, and which vendor sees what.

Version
1.0
Last reviewed
22 October 2026
Owner
Security Lead, security@etropo.com

The service in one paragraph

Etropo is a web application at app.etropo.com. The browser talks to serverless functions on Vercel in Frankfurt, which read and write a PostgreSQL database on Supabase in Frankfurt. There are no servers that Etropo manages. Customers can connect advertising, spreadsheet, CRM and chat services; those connections are made by the customer with OAuth and can be revoked by the customer at any time.

Components

ComponentProvider and regionHolds
Web application and APIVercel, functions in fra1 (Frankfurt), static assets on the global edgeNothing persistent; secrets in environment variables
DatabaseSupabase on AWS eu-central-1 (Frankfurt), PostgreSQL 17All customer data, with Row Level Security on every table
AuthenticationSupabase Auth, same regionPassword hashes, sessions, two-factor enrolments
File storageSupabase Storage, same regionAvatars, uploaded invoices
Rate limiting and chat stateUpstash RedisCounters keyed by user or IP; short-lived state for the Slack and Teams assistants
AI modelsAnthropic via Vercel AI Gateway (USA); OpenAI (USA); Mistral AI (EU)Requests only; nothing stored by Etropo there
EmailResend (USA)Transactional email; inbound invoice email
PaymentsStripe (USA)Billing and card data (card data never reaches Etropo)
MonitoringSentry (EU)Errors, traces, sampled session replays
AnalyticsSegment and Mixpanel (USA)Product events and session replays
SupportIntercom (USA); Linear (USA) for bug reportsConversations, bug reports
Source and CIGitHub (USA)Source code; no customer data

How a request is protected

  1. The browser connects over TLS; HSTS forbids plain HTTP.
  2. The proxy validates the session token locally and, for users with two-factor enabled, requires a second-factor session.
  3. The API route checks the user's organisation membership and role and validates the request body.
  4. The database applies Row Level Security: the row's organisation must match a membership of the caller, and category restrictions apply.
  5. Every response carries a Content Security Policy and the standard security headers.

Data flows that leave the EU

Data leaves Frankfurt only for the purposes below, and only the data named:

  • Payments: billing contact and subscription details to Stripe.
  • Email: recipient address and message content to Resend.
  • AI: the user's question and the budget data that user may see, to Anthropic through the Vercel AI Gateway, when the user asks; an uploaded spreadsheet to OpenAI when the user imports it (deleted from OpenAI after analysis); an uploaded PDF to Mistral AI (EU) for text extraction; for organisations with Budget Buddy enabled, line-item names daily and Marketing Brain entries weekly from two scheduled jobs. Every AI call is traced to Braintrust (USA). The "AI in Etropo" paper, available on request, has the details.
  • Monitoring and analytics: error reports and product events with user identifiers to Sentry (EU), Segment and Mixpanel; AI call traces to Braintrust.
  • Support: conversations to Intercom; bug reports to Linear.
  • Customer-connected integrations: ad spend from, and budget rows to, the services the customer connects.

The Subprocessors page lists each vendor with the exact data and region.

Scheduled jobs

Vercel Cron runs the integration syncs (Google Ads, LinkedIn, Meta, TikTok, Google Sheets, Notion), reminder notifications and trial lifecycle jobs daily, and the Marketing Brain jobs daily and weekly. Each job authenticates with a secret, runs with the service role restricted to one organisation at a time, and writes a log row per run.

Environments

Development on developers' machines against their own test organisation; preview deployments per branch behind a Vercel team login; one production environment. Secrets differ between preview and production.

Version 1.0, October 2026.