Open Source
jev-table-import-mapper
Nutzer laden CSVs hoch. Deren Spalten entsprechen nie Ihren eigenen.
Eine kleine JavaScript-Library für den Import-Screen, den fast jedes Produkt irgendwann baut. Sie mappt die Spalten einer hochgeladenen Datei auf Ihre Zieltabelle, gibt eine Wahrscheinlichkeit für jeden Treffer zurück und meldet unsichere Zuordnungen. Zwei Dateien, keine Abhängigkeiten.
- Rolle
- Autor
- Jahr
- 2026
- Stack
- JavaScript, OpenRouter, Jev
- Besuchen
- Quellcode
Erst Code, dann Logik für das, was Code lösen kann
In Phase eins werden Groß-/Kleinschreibung, Akzente und Trenner normalisiert, gefolgt von einem Abgleich auf strikte Gleichheit. "First Name" und "first_name" sind dasselbe Wort, nur anders geschrieben, daher wird dieses Paar kostenlos fixiert und kann nicht falsch sein. "Company Name" und "company" sind nicht dasselbe Wort, ebenso wenig wie "team" und "department": das sind Fragen, die in den nächsten Schritt gehen. Bei einem sauberen HubSpot-Export sind so 7 von 10 Spalten geklärt, bevor ein einziger Netzwerkaufruf erfolgt.
Ein Aufruf als Matrix für alles Weitere
In Phase zwei wird pro verbleibendem Paar eine unabhängige Ja/Nein-Frage gestellt, statt einer Multiple-Choice-Frage pro Spalte, ergänzt um eine Prüffrage, ob eine Spalte überhaupt nirgendwo hingehört. Diese Struktur ist die Designentscheidung. Multiple-Choice muss einen Gewinner benennen, selbst wenn nichts passt; eine Matrix darf überall niedrig punkten, was ein fehlendes Feld widerspiegelt. Ein Export mit 23 Spalten gegen eine Tabelle mit 10 Spalten bedeutet 253 Fragen, ein Aufruf, 675 ms und etwa ein Zehntel eines Cents.
Die Entscheidung bleibt in Ihrem Code
Der Aufruf gibt die gesamte Matrix zurück, kein Urteil. Der Schwellenwert ist eine Konstante, die Sie anpassen, kein Verhalten, das Sie per Prompt steuern, und alles darunter wird zu einem sortierten Dropdown statt zu einer Vermutung. Da der Wert ohnehin existiert, kann die Oberfläche ihn anzeigen, sodass ein Treffer bei 81% anders wirkt als einer bei 98%.
Die Grenzen des Systems
Getestet mit neun realen Exporten gegen drei Zieltabellen mit jeweils zehn Spalten. Ein Zielschema von etwa 40 Spalten würde mehr als einen Aufruf erfordern, und das zweite Budget im Kontextfenster des Modells teilt sich nicht auf. Eine sehr breite Tabelle ist also ein hartes Limit und kein bloßer Performance-Verlust. Ich habe es nicht ausprobiert.
The shape of the questions is the whole thing
One yes/no per pair, not one multiple choice per column. It sounds like a detail and it decides whether the library can say "this column belongs nowhere".
One choice per columnThe obvious shape
- Has to pick a destination, always
- When nothing fits it still names one, confidently
- Nothing in the answer means "none of these"
A yes/no per pair, plus a guardWhat it does
- Every pair scored on its own
- A column can score low everywhere, which is what a missing field looks like
- The guard asks directly whether it belongs nowhere
A 23 column warehouse export, end to end
- Normalise and match exactlyCase, accents, separators. Nothing that is a judgementfree
- Ask about everything left23 columns × 10 destinations, plus one guard each253 questions
- One callThe whole matrix comes back as numbers675 ms
- Apply the threshold, in your codeBest free pair first, repeat. Below the bar becomes a dropdown0.75
Mapped, and cost10 of 10, $0.0012
7 of 10Spalten per Code geklärt, vor jedem Aufruf
675 msfür 253 Fragen in einem einzigen Aufruf
$0.0012zum Mapping eines Warehouse-Exports mit 23 Spalten

