Built secure. Not bolted-on secure.
What you need to know
You're uploading deal data. That means trust matters. Here's the short version:
- We remove the personal columns we detect. Columns with contact names, email addresses and phone numbers are stripped before anything reaches our database. In the free report, values that look like emails, phone numbers or personal links are also removed from other columns. Deal names are kept as they appear in your CRM and can contain a person's name (see the DPA).
- Your data is stored in the EU. Your deal and analysis data is stored on Supabase Cloud in EU West (Ireland). Some data is processed by US-based AI and enrichment providers: see sub-processors below.
- We're ICO registered as a UK Data Controller.
- Telepath Pro itself holds no SOC 2 or ISO 27001 certificate. Our core infrastructure providers state that they hold one or the other. The sub-processors section below lists the certification each vendor states.
- A Data Processing Agreement (DPA) is automatically in place for all paid subscribers, published at telepath.pro/data-processing-agreement.
If you need the full technical and compliance documentation for your procurement or security team, request it here →.
Privacy by design
We only keep what we need. And we never keep what we shouldn't.
When you connect your CRM or upload a CSV, here's exactly what happens:
What we store:
- Firmographic data: industry, company size, region, deal value, pipeline stage, lead source
- Normalised role data: seniority and function (e.g. “VP-level, Sales function”), never individual names
- Your sales rep names and performance data (your employees, not your customers)
- The ICP analysis output: the intelligence you're paying for
What we remove before storage:
- Contact name and email columns we detect
- Phone and address columns we detect, and, in the free report, values that look like emails, phone numbers or personal links in other columns
- The personal columns we detect in raw CSV rows, which are stripped on our server before storage
- Full IP addresses in our database: analytics keeps only a salted, one-way, truncated hash, and the security audit log keeps a shortened address. Your IP address is also used briefly by our rate limiter (Upstash) and our bot check (Cloudflare Turnstile) while a request is handled.
Our system automatically scans every CSV upload for personal data columns and removes them before processing. You're always notified which columns were removed.
What we write back to your CRM
When you connect HubSpot, Telepath Pro writes a score directly to your deal records so reps can sort and filter their pipeline on it without leaving HubSpot, and, only if you choose to, a fit verdict to your company records:
- telepath_t_score: ICP fit score (0–100), on deals
- telepath_fit_score, telepath_fit_state, telepath_fit_as_of: a company fit verdict, written to company records only when you choose Write scores to HubSpot
Everything else (segments, behavioural momentum, ICP-fit strengths and gaps, missing data fields, and recommended next actions) lives inside Telepath itself, where managers can coach and reps can dig into the why behind each score. We only ever write to Telepath's own properties, prefixed telepath_. We never modify your existing CRM fields, deal stages, or contact records.
HubSpot plan requirement: Telepath needs one spare custom Deal property slot to write the T-Score. Most HubSpot plans have ample property headroom; the integration setup checks for a free slot automatically and prompts you if none is available.
CRM permissions we request
When you authorise HubSpot, we request the following OAuth scopes:
- Read access: deals, companies, contacts, deal owners, sales emails, account info
- Write access: deals, companies and their property schemas, used only to create and update Telepath's own properties. We never modify or delete your existing data.
You can revoke access at any time from your HubSpot account settings. Revoking access immediately prevents any further reads or writes.
Encryption, everywhere
| What | How |
|---|---|
| CRM OAuth tokens (e.g. HubSpot) | AES-256-GCM encryption at rest: the same standard used by banks |
| Passwords | bcrypt with cost factor 12: deliberately slow to prevent brute-force attacks |
| API keys | SHA-256 one-way hash: plaintext shown once and never stored |
| All data in transit | TLS 1.2+ enforced across every connection, HSTS enabled |
| Analytics IP addresses | Salted SHA-256 hash, truncated, not reversible |
Infrastructure & sub-processors
Certifications in the tables below are the ones each vendor states on its own trust pages.
Telepath Pro uses a split architecture. The web application runs on Vercel. Long-running AI analysis pipelines, PDF generation, and data enrichment run on a dedicated VPS hosted by Hostinger in Manchester, UK. Both deployments run the same codebase with the same customer sign-in, encryption, and rate limiting controls. The admin area runs on Vercel only.
Core infrastructure
| Layer | Provider | Region | Certification (as stated by the vendor) |
|---|---|---|---|
| Database | Supabase Cloud (PostgreSQL) | EU West (Ireland) | SOC 2 Type II |
| Application hosting | Vercel | Global edge network; app functions in Dublin, Ireland | SOC 2 Type II |
| Compute processing | Hostinger VPS: United Kingdom (Manchester) | UK | ISO/IEC 27001:2022 |
| Rate limiting & caching | Upstash Redis | UK (London) region | SOC 2 |
| Error monitoring | Sentry | EU region | SOC 2 Type II |
| Logging & observability | Axiom | US | SOC 2 Type II |
AI & analysis
| Purpose | Provider | Region | Certification (as stated by the vendor) |
|---|---|---|---|
| Primary AI analysis | Anthropic (Claude) | US | SOC 2 Type II |
| Vector embeddings & fallback AI | OpenAI | US | SOC 2 Type II |
| Secondary fallback AI | Google (Gemini) | US | SOC 2 Type II |
Deal data sent to AI providers is sanitised before transmission, with the personal columns we detect stripped. OpenAI receives each deal's sanitised business fields (no names or contact details) to compute similarity; no AI model writes the free report. Paid pipeline scoring sends sanitised deal-level fields so each deal can be scored individually. On paid plans, if the primary AI provider times out or returns a temporary error, the request falls back to OpenAI and then Google. Some AI-written extras, such as per-deal reasons and deal coaching text, have no fallback: if the primary provider fails, that section is left out.
Enrichment
| Purpose | Provider | Region | Data sent |
|---|---|---|---|
| UK company data | Companies House API | UK | Company name or number |
| Web research for company signals | A web research provider | US | Company names, domains and company-level search criteria only, no personal data |
| Company logos | Brandfetch Logo CDN | Switzerland (global CDN) | Company domain only, hotlinked at render time; nothing stored |
Enrichment providers receive only company names, domain names or identifiers: never contact-level data, deal values, or any customer PII.
Companies House data. Contains public sector information licensed under the Open Government Licence v3.0.
Payments, email & storage
| Purpose | Provider | Certification (as stated by the vendor) |
|---|---|---|
| Payment processing | Stripe | PCI DSS Level 1, SOC 2 |
| Email delivery | Resend: EU region | SOC 2 |
| PDF reports | Not stored as files: each PDF is generated for your report and attached to your report email | n/a |
Analytics & tracking
| Purpose | Provider | Notes |
|---|---|---|
| Product analytics | PostHog | Page views and page exits. It does not load at all until you accept analytics cookies; then it sets a ph_* cookie. Session recording is off and automatic click capture matches no page elements. |
| Marketing analytics | Google Analytics (GTM) | Consent-gated: only loads if you accept cookies |
| Internal analytics | Custom (self-hosted) | IP addresses are hashed and truncated before storage |
| Performance measurement | Vercel Speed Insights | Cookieless. Marketing pages only. Records the page path (no query string), browser, device type, country and load timings; not linked to a person or IP address. |
Bot protection: Cloudflare Turnstile checks forms such as sign-up, sign-in, password reset and the free report. It receives your IP address and a challenge token from your browser.
Data residency: Your deal and analysis data is stored in EU West (Ireland). Data is processed by US-based AI, enrichment, and observability providers as listed above, and each provider's own retention terms apply to what it receives. We do not send your customers' personal contact data to any sub-processor; deal names as stored in your CRM may occasionally contain personal names (see our DPA).
Backups: Daily automated backups of our database.
Cookies
We use a minimal set of cookies:
| Cookie | Purpose | Duration | Type |
|---|---|---|---|
| Session cookie | Keeps you logged in | 7 days | Essential (httpOnly, secure) |
| telepath_cookie_consent | Remembers your analytics preference | 1 year | Essential |
| Google Analytics cookies | Marketing analytics | Varies | Optional: only set if you accept |
| ph_<project key>_posthog | Product analytics (PostHog), with a matching local storage entry | 1 year | Optional: only set if you accept |
No tracking cookies are set until you explicitly consent via our cookie banner. PostHog does not load until you accept (see our Privacy Policy, Section 9). You can change your preference at any time.
Compliance
UK GDPR
Telepath Pro is registered with the UK Information Commissioner's Office (ICO) as a Data Controller. Our full legal documentation is publicly available:
Our DPA is automatically incorporated into our Terms of Service for all paid subscribers. Enterprise customers requiring a countersigned DPA for their procurement process can request one here →. We'll turn it around within 5 business days.
Lawful basis
We document the lawful basis for every category of data we collect and process. A full breakdown is available in our DPA and on request.
Right to erasure
You can request complete deletion of your account and all associated data at any time by emailing security@telepath.pro. Deletion removes your account and the data held against it in our database, except financial records, which we're required to retain for 7 years. Copies held by our sub-processors, such as logs and database backups, are removed on their own schedules (see the Privacy Policy).
Deletion is executed as a single database transaction: it either completes fully or not at all, with no partially-deleted state. If a deletion fails, the request returns an error rather than reporting success.
CRM privacy deletion
Telepath Pro does not store your contacts. The analysis reads deal and company firmographics, not contact-level personal data, so when a contact is deleted in HubSpot there is no personal data for that contact held here in the first place.
If HubSpot sends us a GDPR privacy deletion notification, we verify it using HubSpot v3 HMAC-SHA256 signature validation and reject anything older than five minutes, so a captured notification cannot be replayed. The verified receipt is then recorded in an audit log, giving you evidence that the notification arrived and was checked. Nothing further is required of you, and there is nothing for us to erase.
How we keep things secure
Tenant isolation, enforced by the database
Most SaaS platforms keep one customer's data separate from another's using application code: a filter on every query saying “only show this customer's rows.” That works, until one filter is missing.
Telepath Pro enforces isolation at the database layer as well. The main tables that hold your scored deal data have PostgreSQL row-level security policies bound to a short-lived token, signed and issued per request. The dashboard and many other in-app reads of that data run through those policies, and on those reads the database itself refuses to return another customer's data. Scoring and sync runs, enrichment, background jobs, parts of our public API and some analysis routes use a service connection that bypasses those policies. There, isolation depends on each query being filtered by your account id, or by a record id already read that way. An automated test checks our API routes for that filter, and any exception has to be listed with a reason.
On the row-level security reads, if a bug ever removed an application-level filter, the database would still return only your own rows, never another customer's. The service connection has no such backstop: there, the guard is the account id filter on each query, checked in our API routes by the automated test above.
The row-level security on the main tables that hold your scored deal data is proven by an automated two-tenant canary that checks both directions: your data is present, and nobody else's is reachable. Some paths run with elevated privileges by necessity: internal authentication (which must read a user record before a session exists), internal write operations (row-level policies govern reads, not writes), scoring, sync and analysis runs, and parts of our public API (all scoped by account id, as above), plus enrichment of a shared, domain-keyed company cache, background jobs and cross-tenant platform aggregates. Each is documented and reviewed.
Weekly security reviews, and a check on the checks
Every week, two independent automated audits run across our codebase:
- A code review of every change made that week, checking for authentication gaps, input validation, PII handling, and injection risks.
- A static analysis and secret scan of the entire repository, verifying that no credentials have been committed and that every endpoint's protections are where they should be.
Findings are reviewed and actioned the same week.
Both audits are themselves monitored. If either fails to run (for any reason), an alert fires. A security review that silently stops running is worse than no review at all, so we made silence impossible.
Prompt injection defence
Data sent to our AI models is passed as structured, delimited data (never as raw free text) with explicit instructions in our core analysis prompts to treat enclosed data as data only, never as instructions. The models are called with no tools, no function-calling ability, and no memory between requests, and no access to any other customer's data.
On the free ICP report, the words from your own data (industry labels, lead sources, field names and values, column headers) do not reach the model. Code replaces each one with a placeholder before the prompt is built and puts your wording back into the answer afterwards. If a report is ever built on its fallback path, those values are sanitised, length-capped and fenced as data instead. Every report is also checked for instruction-like text in the model's answer before it is sent.
Our core design goes further: the AI never computes a number. Every figure it reports is calculated in code and handed to it: the model's only job is to explain values it has been given, and every claim it makes is checked against that data before being shown to you. A successful injection could change the wording of an explanation; it cannot alter a score, reach another customer's data, or take an action.
Rate limiting
Every endpoint is protected by authentication, a signed token, or rate limiting, and every public endpoint is rate-limited. Rate limiting uses Upstash Redis with sliding-window algorithms, applied at multiple levels (per IP, per email, per API key, per authenticated user, and per connected workspace) to protect both your data and our infrastructure from abuse.
Limits on AI-backed features are set generously against real usage patterns and scale with your plan. If your team ever approaches a limit, we'd rather talk to you about it than throttle you silently.
Account and admin protection
Signing out ends your session on every device, and resetting your password signs out all existing sessions. Our own admin area needs a password and a one-time code from an authenticator app, and its session lasts eight hours. If the rate-limit store is unavailable, sign-in and password reset fall back to a per-server limit, and sign-up refuses requests until it returns, rather than letting them through unchecked.
Server hardening
Our compute infrastructure is protected by a dual-layer firewall: a network-level firewall at the hosting provider plus UFW at the operating system level. Both are configured to allow only three ports: SSH (rate-limited), HTTP, and HTTPS. Default policy is deny-all on inbound traffic. All application traffic is routed through Traefik reverse proxy which handles TLS termination and request routing. No application ports are directly exposed to the internet.
Monitoring
UptimeRobot checks the platform every 5 minutes. Sentry monitors application errors in real time. Axiom provides structured logging for our key API routes.
AI usage from Slack commands is logged with a strict field allowlist (command names, token counts, and cost only), and an automated test enforces it. Our other logs record event names, durations, counts, cost and internal account or report ids.
Where we're headed
We're transparent about where we are and where we're going.
| Milestone | Action |
|---|---|
| Now | ICO registered, DPA in place, core infrastructure on providers that state SOC 2 or ISO 27001 certification (Telepath Pro itself is not certified) |
| First enterprise customer | Cyber Essentials self-assessment certification |
| £10k MRR | External penetration test by CREST-certified tester |
| £50k MRR | SOC 2 Type II assessment (if enterprise pipeline requires it) |
We don't pretend to be a 500-person enterprise with a dedicated security team. What we do have is a security-first architecture, documented practices, and a clear roadmap, and we're happy to talk through any of it.
Reporting a vulnerability
If you think you have found a security issue in Telepath Pro, please email security@telepath.pro with a description and the steps to reproduce it. Please do not post it publicly while we look into it, and do not access or change data that is not yours while testing.
The same contact is published in machine-readable form at /.well-known/security.txt.
Need full documentation?
If your procurement or IT team needs our complete Architecture & Security document (covering our full tech stack, encryption specifications, database schema, incident response runbooks, and sub-processor details), we're happy to share it.
Request security documentation →
Or email directly: security@telepath.pro
We typically respond within one business day.