How it works
An import is one embedded element and four moments.
1. Drop in the element
Section titled “1. Drop in the element”A custom element that works in React, Vue, Svelte or plain HTML. Attributes in, DOM events out — no SDK lock-in, no iframe. See Install.
2. Your customer uploads anything
Section titled “2. Your customer uploads anything”CSV, TSV, XLSX, ODS, JSON, XML, PDFs with tables, scans and photos via OCR. Multiple files at once — joined on a key into one dataset.
3. Mildport matches, they confirm
Section titled “3. Mildport matches, they confirm”Deterministic header + value matching with visible confidence, validation on every cell, inline fixes in the review grid, and your own cleaning hooks — all client-side, before anything is delivered.
An optional, evidence-gated AI judge re-ranks only the low-confidence tail. It must cite evidence, pass the same validators, and log its rationale — and it is off by default.
4. You receive clean rows
Section titled “4. You receive clean rows”An HMAC-signed apply webhook with retries and a delivery audit — or an onResults callback in
the browser. Either way: rows shaped exactly like your schema, with the mapping that produced
them.
el.columnSchema = yourTargetSchema; // what a clean row looks likeel.addEventListener('import-applied', sync); // or a signed apply webhookNext: Configure the widget.