Batch Processing

Enrich any number of entities in parallel with real-time progress tracking, automatic multi-model fusion, and export to JSON or Excel — bounded only by your plan's usage quota, not a fixed batch size.

Input Methods

Rows enter through the source strip above the grid — three tabs, one open at a time. Loading rows collapses the strip to a single line (“Paste / CSV · 12 rows loaded”) so the grid keeps the height; click that line to load a different set.

  1. 1Paste / CSV, File and URL — one source open at a time
  2. 2The button counts the rows before it loads them
  3. 3Detected column count and header row
The delimiter — comma, tab or semicolon — and the header row are worked out in the browser as you paste, so a wrong guess is visible before a single row is loaded.

Paste / CSV

Paste rows straight out of Excel, Google Sheets or a CSV export. Comma, tab and semicolon are all understood, a quoted cell may contain the delimiter, and a first row of non-numeric names is taken as the column headers.

File

Drop a .csv, .tsv or .json file onto the tab, or pick one from disk. A JSON file may hold an array of objects or a single object; the columns are the union of their keys, so ragged records still load.

URL

Fetch entities from any REST endpoint. Whatever comes back is read as a list of free-form objects, and the column set is the union of their keys.

Supported authentication:

NoneBearer TokenAPI Key HeaderBasic Auth

If the API returns an object, the system checks keys like data, results, items for an embedded array.

Entity Selection & Validation

After loading entities, they appear in a selectable list with validation status. You can choose which entities to include in the batch:

Multi-select— Tick rows one at a time, or the header box for all of them; Ctrl+A selects everything the current filter shows. Clicking a row opens its result drawer instead of changing the selection.
Inline editing— Double-click any input cell to fix a value in place — every column your data brought is editable, not only the schema's search keys.
Validation— Your rows do not have to use the schema's field names — the models read them as given. The one verdict the grid passes is emptiness: a row carrying no value at all is flagged, greyed out and left out of the run. Pick a classification model to have entities of the wrong type discarded automatically.
Selective processing— Only selected entities are sent for enrichment. Deselect entities you don't want to process.
Contract check per row— The server checks every row against the schema's input contract before spending anything, and reports each offending row rather than failing on the first one — so you fix the whole batch in one pass.
  1. 1Per-row tick boxes decide what the run spends on
  2. 2The empty row is flagged here — and dropped from the run
  3. 312 selected — but only 11 are runnable
Row 11 has no name, only a country and a ticker, and is enriched all the same: a missing search key is something the models can work around, an empty row is not. Input, validation and run state are one row here, not three separate lists.

Configuration

The sidebar mirrors the single enrichment configuration options:

OptionDescription
SchemaTarget schema that defines the enrichment output structure
StrategySingle pass, expert domains, or multi-expertise (parallel calls per domain)
ModelsOne or more AI models to run per entity. Multiple models enable automatic fusion.
LanguagesLanguages for multilingual field enrichment (e.g., English + French)
ClassificationOptional fast model for entity type verification before enrichment
ArbitrationModel for LLM-based conflict resolution during fusion. If unset, rule-based merge is used.

Cost Estimation

The estimated cost sits in the run bar, next to the button that spends it. It is calculated from your schema's property count, the selected models' token pricing, and how many entities you selected. With automatic model selection the model is only chosen when the run starts, so the figure shown is a median of the models it could pick. A confirmation dialog appears when the run carries a real risk — it writes to a linked database, the estimate is large, or selected rows will be skipped — rather than on every run.

  1. 1Two models: one call each, per entity
  2. 2The estimate, recomputed as the selection changes
  3. 311 entities, not the 12 loaded — the empty row is dropped
The button states what it is about to run, so the count and the price are read together. Below the phone breakpoint the pickers fold into “More options” and the estimate stays next to the button.

Parallel Execution

All selected entities are processed simultaneously. Each entity goes through the full enrichment pipeline independently:

Per-Entity Pipeline

  1. Classification (optional) — A fast model verifies the entity type. In batch mode, mismatches do not pause the job; context is passed through.
  2. Multi-model enrichment — Each selected model enriches the entity in parallel, each paced under its key's rate budget.
  3. Auto-fusion (when 2+ models succeed) — Results are automatically merged using conflict detection and resolution.

Rate Pacing

All entities share the rate budget of each API key and model — the requests and tokens per minute the provider grants that key, read from its responses or learned from a rejection. With 20 entities and 2 models, the calls to a model that allows 15 requests a minute are spread across the minute while the other model runs at its own pace, so the batch completes without 429 errors.

Real-Time Progress

Starting a run opens a run strip between the toolbar and the grid, fed by Server-Sent Events (SSE): one progress bar for the batch, done / failed / skipped as separate counters rather than one blended number, elapsed time with an ETA derived from the rows that have already settled, and spend so far against the pre-flight estimate. Nothing opens over the grid — the rows stay where you left them, and each one carries its own state in the Status column beside the Time and Cost it took.

Not run

The row has not been through a run yet — the Status cell shows a dash rather than repeating itself down the column.

Queued

Admitted to the batch, waiting for room in the key's rate budget.

Running

The label gives way to an inline bar counting the expertise steps finished out of the total.

Done

Every model returned. Time and Cost fill in, and the Result columns become readable.

Failed

No model produced a result for this row. Once the batch stops, the strip offers to retry just the failed rows.

Skipped

Discarded before enrichment — a confident classification mismatch, for instance — so the row never cost anything.

The toolbar's Done / Failed / Skipped chips filter the grid to those rows, and the Input / Both / Result switch shows the same rows as what you sent, what came back, or both side by side.

Cancellation & Error Handling

You can cancel a running batch at any time. Cancellation is cooperative — entities already in-flight complete their current LLM call, but no new calls start. Partial results from completed entities are preserved.

Error Resilience

Batch processing is designed to be resilient. Individual failures do not stop the batch:

  • If classification fails for an entity, enrichment proceeds without context
  • If one model fails, other models for that entity continue
  • With two or more models, the automatic merge only runs for entities where every model succeeded — a partial entity produces no merged result and nothing reaches your database until the missing model is recovered by retrying its failed expertises
  • If all models fail for an entity, it is marked as failed while others continue
  • Models that return “not found” errors are automatically deactivated

Export Formats

After batch completion, export results in three formats. For each entity, the fusion result is preferred if available; otherwise, the best model result is used.

JSON File

Download the full results as a structured JSON file with all entity data, model outputs, and fusion metadata.

Clipboard

Copy the JSON results directly to your clipboard for pasting into other tools or scripts.

Excel

A three-sheet workbook: Results (one row per entity with flattened properties), Summary (batch metadata, models, costs), and Conflicts (per-entity conflict details with resolution reasoning).

Limits

LimitValue
Max entities per batchNo fixed cap — bounded by your plan's usage quota
Max entity data size50,000 characters
Max prompt length100,000 characters
URL fetch timeout30 seconds

Next Steps