Skip to main content
InferMap maps messy source columns to a known target schema, with a confidence score and a human-readable reason for each mapping. It runs in Python and TypeScript, and the two implementations are verified bit-for-bit against a shared golden-test suite.

Install

Python database extras: infermap[postgres], infermap[mysql], infermap[duckdb], infermap[all]. The TypeScript package requires Node 20+ and is edge-runtime compatible.
Native acceleration. The scorers + domain detection share a pyo3-free Rust core (infermap-core). Install infermap[native] to auto-dispatch to the compiled kernels — byte-identical output (CI parity-gated), governed by INFERMAP_NATIVE (auto / 1 / 0). The TypeScript package runs the same kernels via an opt-in WASM backend (enableInfermapWasm()); the MCP infermap://scorer-info resource reports the active backend.

Quickstart

In TypeScript:

Key features

  • 7 built-in scorers: exact, alias, initialism, pattern-type, profile, fuzzy-name, and LLM (pluggable).
  • Optimal 1:1 assignment via the Hungarian algorithm.
  • Common-prefix canonicalization that strips schema-wide prefixes (for example prospect_City versus City).
  • Confidence calibration (identity, isotonic, or Platt) into probabilities.
  • Domain dictionaries for healthcare, finance, and ecommerce.
  • Custom scorers via the @infermap.scorer decorator (Python) or defineScorer() (TypeScript).
  • Many input formats: CSV, JSON, in-memory records, database tables, and schema definition files.
  • Edge-runtime compatible with a minimal-dependency TypeScript core (only goldencheck-types for domain packs).
  • Accuracy benchmark: 162 test cases, F1 0.84 (Python); TypeScript parity within 0.0005.

CLI

Custom scorer

Scorer weights

The default pipeline (default_scorers()) is the six scorers below. LLMScorer is not in the default set — it is opt-in (and stubbed until you wire a provider).

Config