HIPAA-ready, not HIPAA certified
Filed · Security Risk Assessment produced under 45 CFR § 164.308(a)(1)(ii)(A), following the HHS/ONC SRA structure. Request it at compliance@adaptivmapr.com.
Compliance
AdaptivMapr maps regulated data, so the interesting part of a compliance page is not the list of frameworks — it is the list of things a vendor refuses to overstate. Every row below names the file or the filed clause it came from.
The posture
One thing we hold, one thing that limits exposure, and one thing that is still open. If a vendor's compliance page has no third category, it is a brochure.
Filed · Security Risk Assessment produced under 45 CFR § 164.308(a)(1)(ii)(A), following the HHS/ONC SRA structure. Request it at compliance@adaptivmapr.com.
Enforced · One chokepoint — clampForSchemaOnly() in lib/parser.ts — applied at the HTTP edge in every /api/v1 route that accepts sample rows, and re-applied at the LLM boundary.
Status · We do not hold SOC 2 Type II, HITRUST or ISO 27001 today. /legal/security §7 is the binding statement of the same thing.
Frameworks
“In force” means it applies to your traffic today. “Contract-dependent” means the coverage exists only once the operator has executed the upstream paid agreement — the honest label for an inherited posture. “Not claimed” is where most of the damage is usually done.
| Framework | Scope | What it actually means | State |
|---|---|---|---|
| HIPAA (as a Business Associate) | United States · full-data mode | AdaptivMapr is HIPAA-ready: we offer our own BAA covering our role as a business associate, and we hold a HIPAA Security Risk Assessment on file under 45 CFR § 164.308(a)(1)(ii)(A). HIPAA is not a certification anyone can hold, so we do not claim one./legal/security §8 · app/legal/operational/hipaa-sra | In force |
| GDPR (EU 2016/679) | European Union | Processing runs under our DPA, with Standard Contractual Clauses incorporated by reference. The subprocessor list is maintained publicly and changes are notified 30 days in advance to customers under a signed BAA./legal/dpa Art. 8 · /legal/subprocessors §3 | In force |
| nFADP (Switzerland, 2020) | Switzerland | The Swiss Federal Act on Data Protection is treated as equivalent to GDPR for the purposes of customer obligations. CH is the default workspace region pin./legal/security §7 · lib/workspaceSettings.ts DEFAULTS.region | In force |
| UK GDPR / DPA 2018 | United Kingdom | Covered by the same DPA. UK is one of the four jurisdictions the reshape sandbox will accept as a compliant placement./legal/privacy §1 · lib/reshape/sandbox.ts SANDBOX_REGIONS | In force |
| CCPA / CPRA | California | We do not sell or share personal data within the meaning of California law./legal/security §7 | In force |
| SOC 2 Type II | AdaptivMapr platform | Observation window in progress. No attestation report exists yet, so we do not present one. Our hosting providers hold their own SOC 2 Type II reports, available from each provider under NDA — that is their attestation, not ours./legal/security §6, §7 | In progress |
| Cloudflare BAA | Workers compute, KV, R2 | Cloudflare offers a HIPAA BAA on its Enterprise plan. AdaptivMapr will not process PHI through Cloudflare Workers, KV, R2 or Analytics Engine unless the operating account is on Enterprise with a signed BAA covering those services./legal/subprocessors §2 | Contract-dependent |
| Supabase HIPAA add-on | Account metadata, audit log, upload mirror | Supabase offers HIPAA-eligible hosting on Teams and Enterprise with a signed BAA. The AdaptivMapr project must be configured against a BAA-covered Supabase organisation before any PHI is persisted to account metadata or audit logs./legal/subprocessors §2 | Contract-dependent |
| phi-cloud BAA chain | Layer-5 LLM, full-data mode | phi-cloud holds BAAs with each downstream model provider in its region matrix. AdaptivMapr inherits that chain when full-data mode routes through phi-cloud — it is a chain, not a certificate we hold./legal/subprocessors §2 · lib/llm.ts | Contract-dependent |
| HITRUST · ISO 27001 · "HIPAA certified" | — | We do not hold these and do not claim them. No "HIPAA certified" status exists in U.S. law for any vendor to hold./legal/security §8 | Not claimed |
The source column names the file or the clause each row was read from. Where this page and a document under /legal disagree, the document is binding and this page is the bug — tell us at compliance@adaptivmapr.com.
Data minimisation
Schema-only and full-data are two modes of the same cascade, not two tiers of a plan. Both draw the same small flat per-map fee; only one of them can see a row of your data.
Contract · ≤3 rows, each cell ≤80 characters. Nothing else leaves. parsed_rows is null in this mode (DPA Art. 8, Supabase row).
Gated · An explicit PHI ask with no acceptance on file returns 403 agreement_required plus a settings_url pointer. There is no silent downgrade to the general catalogue.
Unstructured convert input is the one exception: it is always PHI-routed, and asking for standard routing on it returns 400 phi_required_for_full_data. See how the two modes differ and how a run resolves its routing.
The BAA gate
A signed agreement that lives in a filing cabinet protects nobody. Acceptance is recorded in the product, and the gate reads it on every run — so a workspace cannot route PHI on the strength of an intention.
tenants.phi_mode defaults to false. An unconfigured workspace runs standard routing — we never silently upgrade unknown traffic into the surcharge and the agreement gate.
Settings → Security & Data records the BAA/NDA acceptance against your workspace in public.tenant_agreements, readable and writable at /api/v1/me/agreements.
resolveRunPhi() resolves the per-run choice against the workspace default; an explicit PHI ask with no acceptance on file is refused, not downgraded.
Every fail-soft path defaults to standard routing on an unreadable settings row. The safe direction here is the cheaper, less regulated one.
# An explicit PHI ask from a workspace that has not accepted.
curl -X POST https://api.adaptivmapr.com/v1/me/reshape \
-H "Authorization: Bearer mp_live_…" \
-H "content-type: application/json" \
-d '{"phi_mode": true, "upload_id": "up_…"}'HTTP/1.1 403 Forbidden
{
"error": {
"code": "agreement_required",
"message": "PHI routing requires the BAA/NDA to be accepted for this workspace",
"settings_url": "https://adaptivmapr.com/dashboard/settings/security"
}
}How hard the gate bites
Audit & erasure
Not “enterprise-grade security”. The store, the enforcement point, and the rule that keeps each one honest.
Where · Supabase audit_logs. The external CHAINLOG_* variables are a legacy fallback, not the primary sink.
How · afterResponse() in lib/backgroundWork.ts. Every billing, metering, audit and email call site was migrated to it.
Event · workbench.chat in audit_logs, via lib/workbenchChatAudit.ts. Chat memory follows PHI routing: PHI defaults to off.
Where · MAPR_KV with expirationTtl, service-role reads with an explicit tenant_id filter. Retention is configurable per workspace: 0, 24, 168 or 720 hours.
Rule · lib/workspaceErasure.ts. Neither route may report success when tenant_deleted is false — a failed erasure returns an error, never “Account deleted”.
Identity · auth.users.id → tenants.id via a handle_new_user trigger populating tenant_members. v1 API keys are HMAC-signed and self-contained, with a Supabase revocation check that fails closed.
The binding documents
Where a sentence here and a clause there disagree, the clause governs. Send them to your counsel before you send us a questionnaire — most of the answers are already in them.
Operational instruments — the Security Risk Assessment, the incident response plan, the breach notification procedure, the security officer designation, and the sanction and training policy — are held internally and released on request under NDA. Ask at compliance@adaptivmapr.com. Data-protection requests go to dpo@adaptivmapr.com; security disclosures to security@adaptivmapr.com.
Before the questionnaire
If a control below the line matters to your deployment, we would rather tell you now that it is contract-dependent than have you find out in a review.