
InferMap
io.github.benseverndev-ossPublished by GitHub account benseverndev-ossv0.7.0Updated Oct 24, 2026
Map messy columns to a known schema — 7 scorers, domain dictionaries, F1 0.84. Zero config.
Overview
InferMap is a schema-mapping engine exposed as an MCP server that lets an assistant match messy source columns to a known target schema with confidence scores…
- What you can do
- Map source and target field collections (CSV, Parquet, XLSX, DataFrames, in-memory records, SQLite/Postgres/DuckDB tables) and get one-to-one column matches with confidence scores and explanations
- Inspect the schema of a file or database table
- Save mappings to a reusable config file and reload them without re-inference
- Apply a saved mapping to rename columns in a dataset
- Validate a saved config against a source, including required fields
- Tune the engine with domain dictionaries, scorer weights, custom scorers and confidence calibration
- When to use it
- Useful when you need to reconcile a CRM export, vendor file or legacy table with a canonical schema, or to build repeatable column-renaming and validation steps in a data pipeline. It fits data engineering and analytics work where column names differ but the meaning overlaps.
- Requirements
- Available as a remote streamable HTTP endpoint or as a local process; the Python package runs via uvx and is also installable from PyPI, with a TypeScript package on npm. Optional database extras are needed for Postgres, MySQL or DuckDB providers. No authentication, environment variables or headers are declared.
Installation
In SourceWeft
- Open InferMap in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.benseverndev-oss%2Finfermap/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"infermap": {
"type": "http",
"url": "https://infermap-mcp-production.up.railway.app/mcp/"
}
}
}README
Moved. This repo has moved into the
benzsevern/goldenmatchmonorepo atpackages/python/infermap (and packages/typescript/infermap)/. This repo is archived; new development happens in the monorepo.
infermap
Inference-driven schema mapping engine.
Map messy source columns to a known target schema — accurately, explainably, with zero config.
Built by Ben Severn.
[PyPI] [npm] [PyPI downloads] [npm downloads] [CI]
[Python 3.11+] [Node 20+] [TypeScript] [Edge runtime] [Parity] [License: MIT]
📖 Wiki · 🌐 Docs · 🧪 Examples · 💬 Discussions · 🐛 Issues
infermap is a schema-mapping engine. Give it any two field collections (CSVs, DataFrames, database tables, in-memory records) and it figures out which source field corresponds to which target field, with confidence scores and human-readable reasoning. Available as a Python package on PyPI and a TypeScript package on npm, with mapping decisions verified bit-for-bit by a shared golden-test parity suite.
Table of contents
- Install
- Quick start
- How it works
- Features
- Which package should I use?
- Custom scorers
- CLI examples
- Config reference
- Documentation
- License
Install
Python
Optional database extras:
TypeScript / Next.js
Zero runtime dependencies in the core entrypoint. Compatible with Next.js Server Components, Route Handlers, Server Actions, and the Edge Runtime out of the box. See the package README for the full reference.
Quick start
Python
TypeScript
For Next.js, drop it directly into a Route Handler — works on Edge Runtime with zero config:
How it works
Each field pair runs through a pipeline of 7 scorers. Each scorer returns a score in [0.0, 1.0] or abstains (None/null). The engine combines scores via weighted average (requiring at least 2 contributors), then uses the Hungarian algorithm for optimal one-to-one assignment.
The engine also applies common-prefix canonicalization — automatically stripping schema-wide prefixes like prospect_ so that City vs prospect_City is compared as City vs City. And optional confidence calibration transforms raw scores into calibrated probabilities post-assignment (ECE from 0.46 to 0.005 on real-world data).
Features
Which package should I use?
What's new in v0.3
+18.3pp F1 on real-world data from four compounding improvements:
New features:
- Domain dictionaries —
MapEngine(domains=["healthcare"])loads curated aliases for your domain. Ships:generic(default),healthcare,finance,ecommerce. Seeexamples/09_domain_dictionaries.py. - Confidence calibration —
MapEngine(calibrator=cal)transforms raw scores into calibrated probabilities. Ships:IsotonicCalibrator,PlattCalibrator. Valentine ECE: 0.46 → 0.005. Seeexamples/10_calibration.py. - InitialismScorer — matches abbreviation-style column names (
assay_id ↔ ASSI). ChEMBL F1: 0.524 → 0.819. - Common-prefix canonicalization — automatically strips
prospect_,assays_, etc. before fuzzy matching. - Valentine corpus — 82 real-world schema-matching cases from the Valentine benchmark for accuracy testing.
- Full TypeScript parity — all new features ported. 186 TS tests. Benchmark F1 within 0.0005 of Python.
Custom scorers
Python
TypeScript
CLI examples
The CLI works the same way in both packages:
Config reference
Both packages accept an engine config (scorer weight overrides + alias extensions). Python uses YAML, TypeScript uses JSON; the shape is identical.
See infermap.yaml.example for a full annotated reference.
Documentation
- 📖 Wiki — full reference for both languages
- Getting Started
- Python API
- TypeScript API
- Python vs TypeScript — migration guide
- Scorers
- Architecture
- FAQ
- 🌐 Documentation site
- 🧪 Examples
- Python examples — 10 numbered scripts covering basic mapping, databases, custom scorers, config, domain dictionaries, calibration, and score-matrix introspection
- TypeScript examples — basic mapping, Next.js Edge Runtime, custom scorer, databases, domain dictionaries, save/reuse
- 📓 Open in Colab — Python notebook
- 💬 GitHub Discussions
- 🐛 Issue tracker
Author
License
Source: README.md at commit b1bcee5
Tools
0Version history
1- v0.7.0LatestSep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listedRequired15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts