About AdaptivMapr

Schema mapping for files that can’t be pasted into a chatbot.

AdaptivMapr maps the CSV, Excel, SQL and JSON your customers and partners send you onto your own schema, and hands back validated rows — resolving as much as possible with no model in the loop at all.

7 packs · 33 templates · 5-layer cascade · api.adaptivmapr.com

The catalogue, as shipped

  • core3
  • healthcare10
  • crm5
  • ecommerce5
  • finance4
  • hr4
  • evidence2

Counted from the runtime catalogue at build time — this page cannot drift from the product.

What it is

Five layers, and the model is the last one.

Most column-matching problems are not hard; they are just tedious. AdaptivMapr spends the cheapest layer that can settle a column, and only the long tail that survives layers 1–4 is ever described to a language model.

  1. 1StatisticsdeterministicConfirmed mappings from your own workspace. Auto-accepts at {minN:100, minRatio:0.95} and {minN:20, minRatio:1.00} — production-tested thresholds, not tuning knobs.
  2. 2HeuristicdeterministicAccent- and punctuation-stripped comparison against the field key, its label and every hint. Hints ship in DE / FR / IT / EN / ES, so “Geburtsdatum”, “date de naissance” and “DOB” all land on the same field.
  3. 3FuzzydeterministicToken-set ratio plus Levenshtein over the normalised strings, auto-accepting at 0.80. This is what absorbs typos and token-order drift without a model.
  4. 4Semanticembeddings · config-gatedCosine similarity between the header and the field’s label + hints, auto-accepting at 0.78 and suggesting down to 0.65. Cheap, cached, and silently off when no embedding key is configured.
  5. 5Language modelmetered · phi-cloudEverything still unresolved goes up in ONE collision-aware batched call, constrained to the allowed column set and told which fields are already claimed. If a column resolved earlier, the model never sees it.

A target field, once assigned to a header, cannot be claimed by another header in the same call — you cannot emit two source columns into one field, so the engine refuses to pretend you can.

  • No raw records to an LLM in schema-only
  • HMAC self-contained API keys
  • RLS tenant isolation
  • Uploads in KV, 24h TTL
  • In-region PHI routing under a BAA

How we build it

Three decisions the whole engine rests on.

Each of these cost us something, and each is stated here with the cost attached. A list of principles where every principle is free is a list nobody should believe.

Position 01

The model is the last layer, not the first

Four deterministic or near-deterministic layers run before anything is described to a language model, and each publishes the threshold it auto-accepts at. A column resolved at layer 1 is never sent to layer 5.

The trade · The cost: a deterministic layer can be wrong quietly. That is why every medium- and high-risk template returns requires_hitl so your commit workflow can put a human where one belongs.

Position 02

Contests are settled by quality, never by column order

The cascade proposes across layers 1–3 without claiming anything, arbitrates once on (layer rank, then confidence, then column index), and only then spends the paid layers. Reversing your columns cannot change the answer.

Why it exists · This was a real bug, not a design flourish: claiming first-come-first-served gave “email” to a 0.85 hit on “e_mail_alt” and left the exact 1.00 match unmapped.

Position 03

The paid layers must be optional

Layers 4 and 5 are configuration-gated and fail soft to OFF when their keys are absent. A deployment with no embedding key and no LLM key still maps files — it stops earlier and hands you a longer unresolved list.

The trade · The cost: a locked-down deployment gets less coverage, not a different answer. We would rather return “unresolved” than a guess dressed as a decision.

The whole product, in four calls

A file goes in. Validated rows come out.

No SDK required and no proprietary file format in the middle. This is the entire happy path of the v1 API — the same four routes the dashboard and the MCP server use.

  1. 01

    POST/v1/uploads

    Hand us the file

    CSV, Excel, SQL dump or JSON. Comes back with an upload_id, detected_columns, row_count, three clamped sample rows, the sheet list for a workbook, and a 24h expires_at.

  2. 02

    POST/v1/uploads/:id/match

    Run the cascade

    Returns matches and unmapped, plus the auto_accept_threshold rules and cascade_layers it used — so a reviewer can see which layer settled each column rather than trusting a score.

  3. 03

    PATCH/v1/uploads/:id/mappings

    Record the human’s overrides

    Confirmations feed the statistics layer for next time. The response carries requires_hitl and hitl_status, derived from the template’s risk level, so a risky import can gate itself before commit.

  4. 04

    POST/v1/uploads/:id/commit

    Take the rows out

    Validated rows inline, as a file (csv / xlsx / xml / sql / parquet), to a webhook or straight into a database — or, on a template that declares one, as a FHIR bundle. The confirmed layout is recorded on the way through.

Who it’s for

Regulated-data-first — not healthcare-only.

Healthcare is one first-class vertical, not the whole product. The same cascade, the same validators and the same review gate serve finance and HR, and the Core, CRM and E-commerce packs cover the flows around them.

Healthcare & life sciences

PHI that cannot be pasted anywhere

Patient demographics, lab-result catalogues, drug formularies, claims line items, provider directories, appointment logs. Templates carry a FHIR resource mapping where one applies.

Shipped · 8 of the 33 shipped templates declare a fhir_resource; validators include loinc_code, icd10_code, atc_code, cpt_code, npi and gln.

Finance & payments

Files that carry account and card context

Payments, bank accounts, invoices and KYC profiles — the templates where a wrong column is a reconciliation problem, not a cosmetic one.

Shipped · iban and bic are first-class validators, not regexes in a config file. Payments, bank accounts and KYC profiles are high-risk templates and return requires_hitl.

HR & people

PII with a retention clock on it

Employee rosters, payroll, time off and candidate pipelines — personal data whose import path an auditor will eventually ask about.

Shipped · Employees and payroll are high-risk; candidates is medium. Every medium/high template sets requires_hitl and hitl_status: "pending_review" so your commit workflow can gate itself.

And the business packs underneath them.

Core, CRM and E-commerce templates — users, transactions, addresses, leads, contacts, opportunities, orders, products, inventory — because a regulated workload is never only its regulated tables.

Browse the packs

The suite

We do the mapping. phi-cloud signs for the BAA.

AdaptivMapr runs on the phi-cloud suite rather than reimplementing it. Each piece owns exactly one responsibility, and we say which is which so a security reviewer can follow the data.

phi-cloud

The layer-5 LLM provider

When the cascade reaches for a model, the call goes to phi-cloud, an OpenAI-compatible, PHI-aware gateway. A full-data run sends X-PHI: true and an X-Region header, and phi-cloud picks a PHI-eligible, in-region model. Jurisdiction and BAA coverage are enforced there, on the gateway that signs for them — not here.

Chainlog

The audit sink

Every commit and every human confirmation is written to the audit trail. In production that lands in the audit_logs table; the external Chainlog emit is the legacy fallback path. Audit records carry ids, counts, bytes and routing — never row content.

AgentGate

Human review queue — roadmap

A medium- or high-risk template already returns requires_hitl so you can gate your own commit workflow, and 13 of the 33 templates do. The native AgentGate queue is not wired in v1: today the flag is the integration point, and that is all we claim.

What we removed

The shortest way to read a company is what it took out.

Anyone can list what they shipped. These are four things we deleted, when, and the reasoning — including one default that had been wrong for over a year.

  • June 2026

    The snomed_code validator

    SNOMED CT generally requires a SNOMED International Affiliate Licence, and no shipped template ever declared the validator. A licensing obligation with no product behind it is worth exactly nothing, so it was deleted rather than defended. There is no plan to reintroduce it.

  • July 2026

    The free tier

    Replaced by a prepaid token wallet — a ~$10 minimum top-up, shared across the phi-cloud suite. Every map draws a small flat fee, deterministic maps and layout-cache hits included. A free tier on a metered AI path is a promise whose cost lands somewhere else.

  • Through 2026

    The separate “PHI Gateway” worker

    Retired in favour of calling phi-cloud directly as the layer-5 provider. One fewer hop that could hold PHI, and BAA/jurisdiction enforcement now lives on exactly one component instead of being split across two.

  • September 2026

    PHI routing as the default

    For fourteen months a new workspace defaulted to PHI routing. That silently opted unconfigured traffic into a +20% surcharge and an agreement gate, so the default is now Standard and PHI is an explicit choice in Settings — the same place you accept the BAA.

One of those is written up at length: why we removed our SNOMED validator.

Posture

What we can claim, and what we can’t.

A compliance product that overstates its posture is worse than one with a shorter list. This is the whole list, in the words we are willing to defend in a security review.

AreaWhat we sayWhat that actually means
HIPAAHIPAA-ready — never “HIPAA certified”HIPAA is not a certification any vendor can hold. We offer a BAA, we keep a HIPAA security risk assessment on file, and PHI routing is locked until the workspace accepts the BAA in-app.
SOC 2In progressNot certified today. We will say so on this page on the day it changes, and not before.
Data minimisationSchema-only is the default postureOnly column headers and up to three sample rows, each clamped to 80 characters, ever leave you. It is a mode, not a free tier — every map still draws the flat fee.
Full-dataExplicit, gated, and surchargedFull-data PHI routing needs an accepted BAA, an entitlement, and an allowlisted BAA-covered host. It costs +20% on the whole map charge, and an unsigned explicit PHI ask is refused rather than quietly downgraded.
PricingPrepaid wallet, no free tierTop up from about $10 — shared across the phi-cloud suite. Every map draws a small flat fee, including a fully deterministic map and a cache hit. AI cleanup, convert and reshape bill the tokens they consume at provider cost × 2, or × 0.5 with your own key.
ResidencyRegion is a pin, not a side effectA standard run keeps the workspace region pin; the sandbox refuses a region-less run outright. Where compute may run is a separate decision from which model catalogue is used.

Anything not on this list, we have not claimed. If you need something in writing that isn’t here, ask — we would rather answer than imply.

AdaptivMapr is operated by AdaptivMapr, Inc. For security reviews, a DPA, a BAA, or the subprocessor list, write to hello@adaptivmapr.com. Security disclosures go to security@adaptivmapr.com.

Start where it’s cheapest

Map the file. Keep the records.

Top up a prepaid wallet from about $10 and run a map. Schema-only sends headers and three clamped sample rows — nothing else leaves you.

$10 minimum to start · pay only for what you map · PHI under BAA coverage