Skip to content

jev-table-import-mapper

Small dependency-free library that maps uploaded CSV columns to your schema with exact-name matching, then one Jev Noul per remaining pair.

Projectprototype

Overview

jev-table-import-mapper fills in the column-mapping screen every file-import feature ends up needing. It is a small library meant to be read and pasted into your own import flow, with two working files and no dependencies. Stage one locks columns whose normalised names are identical (case, accents and separators only), which is free and never wrong; on a clean HubSpot export it settled 7 of 10 columns. Stage two asks one independent yes/no question per remaining pair of incoming and destination columns, plus one guard question per incoming column, using sample values.

The author chose independent Nouls over one Choice per column because a Choice must pick something even when nothing fits. A greedy one-to-one resolution above a threshold (0.75 per the listing) produces the mapping; unmapped fields are left visible as suggestions or ignored rather than guessed. On a 23-column warehouse export against a 10-column orders table, the README reports 10 of 10 mapped with 253 questions in one call in 915 ms for $0.0012.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes incoming column X correspond to destination column Y?—
Yes / noGuard: does this incoming column belong in the destination table at all?—

How it works

  1. Read CSV columns with sample values
  2. Stage 1: exact match on normalised names
  3. Stage 2: one Noul per remaining pair plus a guard per column, in one call
  4. Greedy one-to-one resolution above threshold; leave the rest visible

Strengths

  • Exact matches cost nothing
  • README reports 253 questions in one call in 915 ms for $0.0012
  • Does not guess when nothing fits
  • No dependencies

Caveats

  • Threshold needs tuning for your data
  • Library, not a service; integration is up to you

At a glance

Type
Project
Status
prototype
Language
JavaScript
Runtime
Node / browser
Has code
yes

Use cases and integrations

How curated lists describe it

  • Data import: maps an uploaded CSV's columns onto a destination table with a strict deterministic name-equality pass, then one Jev `Noul` per remaining (source, destination) pair plus a guard `Noul` per incoming column, mapping 10 of 10 columns of a 23-column export at 253 questions in one call, 915 ms, $0.0012, unmapped fields left visible above a 0.75 threshold rather than guessed.

    yibie/awesome-jev

Frequently asked questions

Why yes/no per pair instead of a Choice per column?

A Choice has to pick an option even when none fit; independent Nouls let a column stay unmapped.

What does it cost?

The README reports $0.0012 for a 23-column file mapped in one call.

Does it guess uncertain columns?

No. Pairs below the threshold are left visible as suggestions or ignored.

Related projects

  • Record linkage for researchers: write the match rule in plain English and Jev judges each candidate pair with a probability.

    ProjectbetaPython
  • CLI that normalises messy Japanese addresses to postal codes with rules and Japan Post data, asking Jev only for ambiguous steps.

    LibraryprototypeTypeScript
  • Eight zero-dependency examples applying Jev to mechanical and electrical engineering: CAD routing, FEM triage, DFM, BOM alignment.

    ProjectprototypePython
  • Python re-style library that finds, replaces, splits and extracts text by meaning, with Jev judging each candidate span.

    DemobetaPython
  • dbt package whose macros run Jev Choice, Noul and Score over SQL values in DuckDB and ClickHouse models.

    ProjectbetaSQL (Jinja)
  • DuckDB extension that asks Jev about every row in SQL and returns answers as ENUM, DOUBLE or STRUCT columns.

    PluginbetaC++