HIPAA, BAA, and data handling — answered straight.
Healthcare and legal buyers ask the right questions before deploying voice AI. This page covers WildRun's controls, data handling commitments, and how to request a BAA — no sales spin.
Business Associate Agreements are standard, not an add-on.
Any WildRun deployment that touches Protected Health Information — dental intake, medical scheduling, mental health triage — requires a signed BAA before the agent goes live. We do not charge for the BAA; it is a standard part of the agreement for covered entities and their business associates.
What the BAA covers
- WildRun AI as a Business Associate — named, signed, with contact details for breach notification.
- Vapi (voice infrastructure) and ElevenLabs (TTS synthesis) as sub-processors — both have executed BAAs with WildRun and separately offer BAAs to covered entities on request.
- Cloudflare as the data processor — Cloudflare's D1 database and Workers platform operate under Cloudflare's HIPAA-eligible infrastructure, and Cloudflare signs BAAs with qualifying enterprise customers.
What "HIPAA Ready" means for a custom build
WildRun builds agents with PHI-specific controls enabled by default when a client is a covered entity: call transcripts are stored with field-level access restrictions, PHI fields are excluded from server logs, and the agent script is reviewed to avoid soliciting more PHI than the use case requires. "HIPAA Ready" does not mean WildRun has undergone a formal HIPAA audit — it means the technical and contractual controls meet the Safeguard Rule requirements for a Business Associate.
To request a BAA: email info@wildrunai.com with subject "BAA Request." We will respond within one business day.
In transit and at rest — everywhere data moves.
All traffic to wildrunai.com and between WildRun's Worker and downstream APIs runs over TLS 1.3. Cloudflare terminates TLS at the edge with modern cipher suites; legacy TLS 1.0/1.1 is disabled. Certificate management is handled by Cloudflare's automated PKI — no manual rotation risk.
Data stored in Cloudflare D1 (leads, transcripts, call logs) is encrypted at rest using AES-256. R2 object storage (audio files) uses the same default encryption. KV (short-lived cache and rate-limit counters) is similarly encrypted at rest. Encryption keys are managed by Cloudflare's key management infrastructure, not stored application-side.
Server-side logs emit only hashed IP addresses (one-way SHA-256, truncated to 16 hex chars), internal identifiers, and non-identifying metadata (tier, score, industry). Email addresses, names, phone numbers, and call content are never written to log streams. Log shipping to third-party observability tools is not enabled.
Who can read client data, and how access is limited.
Client data isolation
Each client's data is logically isolated in D1 — leads, transcripts, and call logs are scoped to that client's agent configuration and are not accessible to other clients' agents or dashboards. There is no shared query path between clients.
Admin access
The admin dashboard at /admin requires an API key passed as the X-Admin-Key header. Brute-force protection is enforced via a Durable Object-backed lockout: 5 failed attempts within 10 minutes locks the endpoint for 15 minutes. Admin credentials are stored as Cloudflare Worker secrets — never in environment variables committed to source, never in D1 or KV.
Webhook security
Every inbound webhook endpoint (Stripe billing, Resend email events, Vapi call reports) verifies the request signature before executing any code. Vapi uses HMAC-SHA256; Stripe uses its standard signing secret protocol; Resend uses Svix HMAC. Requests without a valid signature are rejected with 401 and do not touch D1.
Least-privilege principles
The production Worker has no outbound write access to client systems beyond what is explicitly configured per integration (e.g., a specific Google Calendar OAuth token for one client). OAuth tokens are stored in Worker secrets and scoped to the minimum required permissions. Token refresh does not expand scope.
How long data is kept — and how to request deletion.
| Data type | Default retention | Notes |
|---|---|---|
| Call transcripts | 90 days | Configurable shorter; some compliance frameworks require longer — we accommodate both. |
| Lead & contact data | 2 years from last interaction | Includes name, email, phone, business — retained for sales follow-up and compliance. Deletion on request. |
| Email send logs | 1 year | Bounce, complaint, and delivery events retained for suppression management and CAN-SPAM compliance. |
| Audio demo files | Duration of contract | Stored in Cloudflare R2. Purged within 30 days of offboarding. |
| Agent event logs | Rolling 90-day window | Internal audit log for agent decisions and actions. No PHI content — IDs and metadata only. |
To request early deletion of your data, email privacy@wildrunai.com. We respond within 5 business days and confirm deletion in writing.
Your data doesn't train anyone's models.
AI calls in WildRun — lead scoring, follow-up drafting, transcript analysis — are inference-only. No client data is used for fine-tuning or retraining any model.
- Anthropic (Claude) — inference via API. Anthropic's terms explicitly prohibit using API inputs for training without opt-in. WildRun does not opt in.
- Vapi — voice AI infrastructure. Vapi does not train on call content from BAA-covered deployments. Confirmed in Vapi's BAA addendum.
- ElevenLabs — TTS synthesis. ElevenLabs' API terms prohibit training on API payloads for customers on paid plans.
- Cloudflare AI Gateway — all AI requests are routed through Cloudflare AI Gateway for cost tracking and optional caching. No request content is stored by Cloudflare for training purposes.
WildRun's own models (lead scoring, industry classification) are rule-based and statistical — they do not use neural networks and do not process PHI.
Built on Cloudflare — the same network that protects 20% of the internet.
WildRun runs as a single Cloudflare Worker — no separate servers, no VM fleet to patch, no SSH access surface. The stack:
- Cloudflare Workers — stateless edge compute. No persistent server process; each request is isolated. Workers are SOC 2 Type II certified at the infrastructure layer.
- Cloudflare D1 — distributed SQLite at the edge. Row-level data, encrypted at rest, with automatic replication. No SQL injection surface — all queries use parameterized D1 prepared statements.
- Cloudflare KV — ephemeral cache and rate-limit counters. No long-lived PII. TTLs are set so data auto-expires.
- Cloudflare R2 — object storage for audio demos and static assets. Private bucket — no public listing.
- Cloudflare WAF + DDoS protection — all traffic passes through Cloudflare's WAF before reaching the Worker. Rate limiting is implemented at both the WAF and application layers.
Dependency surface is intentionally minimal: fewer npm packages means fewer vulnerabilities to track. The current bundle is under 1 MB with 0 known vulnerabilities (npm audit clean as of the last deploy).