Security & privacy
What Build Great Things collects, what it never stores, and how the privacy model works. Written for the security reviewer, the works council, and the engineer deciding whether to turn telemetry on.
The three commitments
- Process and discard. Raw prompt text is buffered only until it is processed into the task map, then deleted; text that is never processed is deleted after at most 30 days. What we keep are short, machine-generated task summaries (for example "Redline an NDA against the standard playbook"), never the prompts themselves. Those summaries carry only a salted pseudonym, feed future map runs, and age out after 12 months. Opting out of prompt content deletes them too.
- No individual is ever identifiable. A pattern appears only if at least a threshold number of distinct people share it (default 5, set by your workspace owner). Identity is stored only as a salted hash; we never store raw emails in the analysis data.
- Cost yes, surveillance no. The product shows what kinds of work your organization uses AI for and what it costs, by team at most. No manager can read an employee's conversation through this product, at any permission level.
What we collect
Data arrives over an OpenTelemetry (OTLP) stream that your tools send directly to us. There is nothing to install: no agent, proxy, or browser extension.
| Data | When | What happens to it |
|---|---|---|
| Usage metrics: tokens, model, cost, session counts | Always, while telemetry is on | Stored as daily per-workspace aggregates for the Usage & Cost view |
| User prompt text | Only if your admin enables OTEL_LOG_USER_PROMPTS and your
workspace's Prompt content setting accepts it |
Buffered, processed into de-identified task summaries and aggregate task patterns on the next map run, then deleted |
| User identity (email from the tool's sign-in) | Always, while telemetry is on | Replaced at ingest with a salted hash used for distinct-person counts and team grouping |
| Team roster (optional CSV upload) | Only if you upload one | Emails hashed with your workspace key during the upload request; the raw file and raw emails are not stored |
We do not collect model responses, your source code, files on disk, or screen contents. Prompt text is opt-in and controlled centrally by your organization's admin; usage and cost reporting works without it.
What we never store
- Raw prompt text beyond the map run that consumes it (runs are nightly, so typically less than 24 hours). A workspace that never reaches the minimum activity and privacy threshold for a run has its buffered text deleted after at most 30 days.
- Raw emails or names in the analysis data. Only salted hashes.
- Any pattern shared by fewer people than your privacy threshold. Small clusters collapse into an unnamed long tail.
- Verbatim quotes. Task pattern names and descriptions are generated summaries of a cluster, not excerpts from anyone's prompt.
- Model responses, code, or files. They are never sent to us in the first place.
How the privacy model works
- Prompts stream in and are buffered per workspace, tagged only with a salted actor hash.
- On the nightly run, prompts are embedded and clustered into task patterns.
- The k-anonymity gate drops every cluster below your distinct-person threshold.
- Surviving clusters get generated names and descriptions.
- The buffered raw prompts are deleted. Only the aggregate patterns persist.
Security measures
- Encryption in transit: all traffic, including the telemetry stream, is HTTPS/TLS. Data is encrypted at rest by our database provider.
- Ingest authentication: tools authenticate with a per-organization bearer token. You can revoke a token and issue a new one at any time under Connections.
- Tenant isolation: every record is scoped to your workspace; all reads and writes are filtered by organization on the server.
- Server-side content gate: a workspace setting (Settings > Privacy > Prompt content) drops prompt text at ingest, before it is ever stored, so even a misconfigured client cannot send us content you have opted out of. Turning it off also immediately deletes any prompt text already buffered for the next run.
- Accounts: sign in with Google (OAuth) or email and password. Passwords are stored only as salted PBKDF2-SHA256 hashes. Sessions use short-lived signed tokens (JWT).
- Secrets: API keys and signing secrets live in the hosting platform's config store, never in code.
- Logging: production logs exclude prompt content and secrets. Client IP addresses appear in request logs and are used only for abuse prevention and traffic measurement.
Where data lives and subprocessors
Build Great Things runs on Heroku (Salesforce) in the United States, with a Heroku-managed Postgres database. We use a small set of subprocessors:
| Provider | Purpose | What it sees |
|---|---|---|
| Heroku (Salesforce) | Application hosting and database | All application data, encrypted at rest |
| OpenAI (API) | Embeddings and cluster label generation | Prompt text during the nightly map run. OpenAI's API terms exclude API data from model training |
| Optional sign-in (OAuth) | Sign-in identity only | |
| Sentry | Error and performance monitoring | Stack traces and request metadata; no prompt content |
| Resend | Transactional email (password resets) | Recipient email address only |
Retention and deletion
- Raw prompt text: deleted when it is clustered into the task map, typically within 24 hours. If your workspace never reaches the minimums for a run (enough activity from enough distinct people), buffered text is deleted after at most 30 days. Turning off Prompt content in Settings deletes any buffered text immediately.
- Aggregate task patterns and usage rollups: kept while your workspace is active, so trends work.
- Stopping the stream: remove the telemetry settings from your tools, or revoke the ingest token under Connections. Ingestion stops immediately.
- Full deletion: email us and we will delete your workspace and all associated data, and confirm in writing.
The drive snapshot
Connecting a drive is a folder drop, not an OAuth integration: nothing is installed, no background sync runs, and we hold no credential to your drive.
- What the drop reads: file metadata only: path, name, extension, size, and modified time. This index powers the firm-aware task map and the "firm resources" listed in skills. File contents are not uploaded in this step.
- Content grounding (opt-in, per workspace): when an owner or admin enables it, the drop session also uploads a bounded set of the most relevant documents (top files per task pattern, a few hundred at most, never the whole drive). We extract a short, size-capped text excerpt from each and discard the raw file: raw bytes exist only in memory during the analysis and are never written to storage.
- Purge on disable: turning content grounding off deletes every stored excerpt. Removing the snapshot deletes the metadata index and the auto-generated firm profile.
- What is never accessed: files outside the folder you drop, folders you uncheck before uploading, and anything after the drop finishes; freshness is manual, so nothing reads your drive between drops.
- Skill drafting: when we draft a Skill for a work pattern, the model reads the metadata index and, if content grounding is on, the stored excerpts. It cannot read raw files, because we do not keep any.
Honest disclosures
We are an early-stage product and would rather over-share than have you find out later:
- We do not yet hold SOC 2 or ISO 27001 certification. Ask us and we will walk your security team through the architecture directly.
- Hosting is US-based; we do not currently offer an EU data residency option.
- Prompt text does transit to OpenAI's API during the nightly run to be embedded and labeled. If that is a blocker, run with prompt logging off in your tools, and set Prompt content to dropped in your workspace so we enforce it server-side too: you keep usage and cost reporting, without the task map.
Reporting a vulnerability
If you believe you have found a security issue, email jacob@buildgreatthings.ai with details. We will acknowledge within 2 business days and keep you informed through the fix. Please do not access data that is not yours or disrupt the service while testing.