Security
Security & data handling
01
What we store
Everything below lives in your install's own database. There is no separate telemetry pipeline and no copy sent anywhere for analysis.
Public pages we crawl
Firecrawl → auditAnswer-engine responses
visibility pollsBrand facts (Brand Memory)
derivedMeasurements
derivedFree-scan records
/scanAI-crawler log lines you send us
/api/crawlers/ingest/Operator settings
your install02
What we never store
Your customers' credentials
Payment data
Anything behind your login
Third-party analytics or ad trackers
One honest exception: the outreach module
If you choose to connect a LinkedIn account or an SMTP mailbox, those credentials are stored in your install's database so the automation can log in and send. They are your owncredentials, not your customers' — but they are credentials, and it would be dishonest to leave them out of a “what we never store” list. Neither connection is required to use the audit, visibility or SEO side of the product, and disconnecting deletes the row.
03
Encryption and transport
In transit. The hosted app and its API are served over HTTPS/TLS. Every outbound call we make — to model providers, to Firecrawl, to DataForSEO, to SendGrid, to your Slack webhook — is HTTPS. Outbound webhooks are the one place you choose the scheme; we accept an http:// receiver because some receivers live inside a private network, and we sign the body either way.
At rest.Data sits in the database file on your deployment's persistent volume, protected by the disk encryption your host provides. We do not implement application-level field encryption, and we are not going to imply otherwise: an operator with database access can read stored provider keys and connection credentials. Treat database access as equivalent to operator access.
04
Authentication and access
Dashboard session
bearer tokenAuthorization: Bearer … on every request and holds it in localStorage. Credentials are compared in constant time.Public API tokens
read-onlyread scope only — there is no write scope to grant, because the public API cannot write. The secret is shown exactly once at creation; the list afterwards shows a fingerprint. Revoking is instant and the row is kept so the audit trail survives. Requests are throttled to 120 per hour per token.Outbound webhooks
HMAC-SHA256X-AYB-Signature: sha256=…. Verify it before trusting a payload. A 4xx from your endpoint is treated as permanent and never retried; 5xx and network errors get three attempts.Agent access (MCP)
read-onlysig = "sha256=" + hmac_sha256(secret, raw_request_body).hexdigest() assert constant_time_compare(sig, request.headers["X-AYB-Signature"])
05
Third-party processors
Measuring an answer engine requires asking it, so your prompt text necessarily leaves our infrastructure. Here is every processor in the core product and precisely what it receives.
| Processor | Why | What it receives |
|---|---|---|
| Anthropic | Primary answer engine + structured extraction | Your tracked prompt text, your brand name, aliases and domains, and the answer text we ask a model to read back for mention/position/sentiment extraction. |
| OpenRouter | Fusion roster (OpenAI, Google, DeepSeek, Meta, xAI) | The same prompt text, routed on to whichever model in the roster is being polled. OpenRouter is a router: the downstream provider sees the prompt too. |
| Perplexity | Answer engine (when a key is configured) | Your tracked prompt text. |
| DataForSEO | Classic SEO data + the optional geo-located AI engines | Keywords, the domains you research, and — for the optional DataForSEO answer engines — your prompt text and the country you asked us to answer as.Account not verified: every call returns 403 today and no data flows. |
| Firecrawl | Crawling public pages for the audit and theme extraction | The URLs we fetch on your behalf. |
| SendGrid | Outbound email — the weekly digest, alerts and scan reports | The recipient address and the content of the message we send. |
The modules below are off unless you connect them, and they receive nothing until you do:
- Slack — The digest or alert body, posted to the incoming-webhook URL you configure.
- Tavily — Search queries used by company discovery.
- Apollo — Company and role filters used to look up contacts.
- BetterContact — A LinkedIn profile URL, to resolve a work email.
- Ayrshare / Meta — The post text and media you choose to publish.
- SociaVault — The social handle whose public follower count you track.
We do not sell data, we do not pool your measurements into a shared benchmark, and we do not train models on your content. Providers apply their own retention to what they receive; where a provider offers a no-training setting on the API tier we use, we use it.
06
Retention and deletion
We keep measurement history for as long as you have an account, because the whole point of a trend line is that it is long. We do not expire it on a schedule you have not asked for.
Deleting a brand
Deleting everything
Exporting first
Free scans
07
Certifications we do not hold
AuditYourBrand is not SOC 2 certified. There is no Type I report, no Type II report, and no audit currently in progress that we could point you at. We are not ISO 27001 certified either. If your procurement process requires a current SOC 2 report, we will not pass it today, and we would rather you learn that on this page than three weeks into a trial.
What we can offer a security reviewer instead: this page, the methodology page for how the numbers are produced, a live status page, a written answer to any questionnaire you send, and the ability to self-host so your data never leaves infrastructure you control.
08
Reporting a vulnerability
Mail [email protected] with steps to reproduce. You will get a human reply within two business days and an honest status — including “we know, it is queued, here is the workaround” when that is the truth.
We do not run a paid bug bounty and we will not pretend one is coming. We will credit you by name if you want the credit, and we will not threaten anyone who reports a finding in good faith.
Questions this page did not answer?
Send the questionnaire. We answer them in writing, and we say “no” where the answer is no.