jlink
Link records across two tables using a natural-language matching rule
Implementation and evidence →JEV GUIDE
Different names can describe one entity, but similar names can also describe different entities. jlink makes the definition of a match explicit and asks Jev about candidate pairs. This guide separates retrieval, judgment and final link selection.
Should a subsidiary count as its parent? Should two editions of a product be merged? These are dataset decisions. Use deterministic joins for reliable identifiers and normalized exact matches; reserve model judgment for meaningful ambiguity.
This is record linkage, not SQL generation or discovery of current ownership facts. A model reading names alone cannot verify a present-day corporate relationship.
Local blocking proposes pairs. Jev evaluates selected fields against the match definition. Code then applies thresholds, margins and relationship constraints such as one-to-one or many-to-many. Audit the resulting links.
The reviewed implementation accepts some normalized exact matches without a model call. A true pair missing from the candidate set cannot be recovered by the downstream judge.
Source: jlink — judge.py ↗
These are synthetic editorial fixtures, not model outputs. Suppose subsidiaries must remain separate but a legal-form change alone should not create a new entity. Write that policy before inspecting results.
| Record A / record B | Human expectation | Required evidence |
|---|---|---|
| Northstar Labs Inc. / NORTHSTAR LABS, INC | Likely identical | Try normalization first |
| Northstar Labs / Northstar Labs Europe subsidiary | Separate under this policy | Entity boundary |
| Northstar Labs Inc. / Northstar Labs LLC | Check whether only legal form changed | Names may be insufficient |
| Northstar Labs / NSL | Needs review | Abbreviation candidates and extra fields |
| Northstar Labs / Northstar Logistics | Do not merge on a shared word | Similar-name negative |
Estimate the local candidate set before choosing exportable fields and a call budget. Reapplying acceptance rules to saved scores differs from changing the semantic definition and judging again.
Source: jlink — linker.py ↗
Auditing only pairs that reached the model misses blocking failures. Start with a small set of manually verified links and check whether each appeared among the candidates. Then examine false links and missed links across score bands.
Compare thresholds using false merges, missed matches and review workload. Inspect competing candidates with close scores: the highest score need not identify the correct one-to-one assignment. Check calibration on the actual dataset rather than treating each value as a validated probability of correctness.
Is it fully offline? Blocking and some exact matching are local. Real Jev judgments send the fields selected by on to an external service; verify that these fields can be processed there.
Do threshold changes need more inference? Filtering compatible saved scores usually does not. Changing records, entity definitions or models calls for a new evaluation.
Author benchmark speed, cost and F1 are not independent results from this site. We reviewed the implementation and did not run the model or benchmark datasets.
Source: jlink — README.md ↗
Link records across two tables using a natural-language matching rule
Implementation and evidence →02 / JEV GUIDE
Build a Jev API request with state, typed questions and Bearer authentication. Download a JSON fixture and review response checks.
Read guide →06 / JEV GUIDE
Design Jev Choice classification with distinct labels, unknown inputs and review paths, then explore model-routing and semantic-filtering projects.
Read guide →07 / JEV GUIDE
Place Jev after retrieval: define relevance, preserve provenance, distinguish snippets from full text and evaluate rankings with labeled queries.
Read guide →