Constraint-Guided Enterprise Data Mapping with Large Language Models
Organizations: Bosch Center for Artificial Intelligence, Renningen, Germany · Bosch Center for Artificial Intelligence, Pittsburgh, USA · Robert Bosch GmbH, Ho Chi Minh City, Vietnam
Abstract
Enterprise entity alignment must handle semi-structured records, implicit attributes, and unit or granularity mismatches. Manual matching is still common in practice, but does not scale as schemas and providers evolve. LLM-only matching improves semantic recall, yet can violate structural and physical invariants, producing fluent yet operationally invalid correspondences. We propose constraint-guided mapping (CGM), a neuro-symbolic method with three stages: (i) schema-grounded admissibility constraints with metadata mc = <tau_c, delta_c>, where tau_c denotes the constraint type and delta_c provides executable relation and normalization logic; (ii) constraint-restricted candidate generation with cascade relaxation to guarantee a nonempty feasible set under noise; and (iii) neural ranking with bounded LLM disambiguation restricted to that feasible set. Methodologically, constraints operate as hypothesis-space operators rather than post-hoc validators, enabling controlled degradation under relaxation and auditable, human-guidable decisions. On a controlled structural-decoy benchmark, hard admissibility shrinks the candidate space by ~480x without dropping the GT, and a layer-by-layer ablation shows this gate, not the LLM, is the decisive lift (F1 0.08 to 0.66). The benefit is model-independent and adds no extra inference cost: a small model with constraints matches a frontier LLM used without them at ~28x lower cost. The method, not a single tuned configuration, transfers across seven enterprise makes (macro F1 0.70), each under its own automatically discovered, expert-refinable constraints, and lowers expert effort by ~7x versus spreadsheet workflows. Public Valentine results add an external ranking sanity check and mark the boundary: constraints should be hard only where structural invariants are match-determining.
Figures & tables
| Rung | Adds | Compl. | Wrong | F1 | Jacc. |
|---|---|---|---|---|---|
| L0 all-columns RAG | — | 10.0 | 69.2 | 0.19 | 0.16 |
| L1 rule columns (raw) | feature selection | 18.3 | 55.0 | 0.32 | 0.28 |
| L2 rule functions | normalization | 0.0 | 66.7 | 0.08 | 0.05 |
| L3 hard gate | admissibility | 52.5 | 26.7 | 0.66 | 0.63 |
| L4 relax hint | relaxation expert | 49.2 | 23.3 | 0.66 | 0.61 |
| Cupid | Jaccard | SimFlood | COMA | Magneto | CGM | |
|---|---|---|---|---|---|---|
| MRR | 0.47 | 0.70 | 0.75 | 0.76 | 0.93 | 1.00 |
| R@GT | 0.43 | 0.56 | 0.57 | 0.65 | 0.76 | 0.71 |
| Make | card. | Compl. | Wrong | F1 | Jacc. | ||
|---|---|---|---|---|---|---|---|
| Make A | 45 | 11,934 | 6.1 | 84.4 | 15.6 | 0.855 | 0.851 |
| Make B | 28 | 2,917 | 2.2 | 64.3 | 21.4 | 0.793 | 0.763 |
| Make C | 88 | 706 | 8.3 | 62.5 | 34.1 | 0.711 | 0.687 |
| Make D | 30 | 11,205 | 5.2 | 40.0 | 46.7 | 0.654 | 0.583 |
| Make E | 98 | 373 | 1.7 | 36.7 | 41.8 | 0.634 | 0.561 |
| Make F | 55 | 8,183 | 1.0 | 40.0 | 60.0 | 0.400 | 0.400 |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| Question | Experiment | Verdict | Evidence | Where |
|---|---|---|---|---|
| Does the gate shrink the search space without dropping the GT? | Synthetic rule ablation | Yes | admissible set of catalog, GT kept ( synth., Make A) | § 6.1 |
| Which layer actually drives the gain? | Layer decomposition (L0 L4) | Hard gate | F1 jumps | § 6.1 , App. D |
| Can a bigger LLM replace constraints? | Model ablation | No | CGM valid for every model, lower cost | App. E.1 |
| Is the ranker competitive on public data? | Valentine | Yes | MRR vs. SOTA Magneto | § 6.2 |
| Does one method transfer across makes? | Enterprise ( makes) | Yes | mean F1 with per-make constraints | § 6.3 |
| Does it cut expert effort in practice? | Expert study | Yes | days per make ( ) | App. F |
| Source field | Target field | Heterogeneity | Constraint |
|---|---|---|---|
| engine_code ( B4D ) | in model_label ( Astra 2.0 (B4D) ) | implicit attribute | hard: extract code; equality |
| engine_cc ( 2000 ) | displacement_l ( 2.0 ) | unit inconsistency | hard: |
| year_start – year_end | build_date | granularity | hard: year |
| generation ( Mk3 ) | generation_code | version / identifier | hard: equality |
| model_text ( Astra 2.0 ) | model_label (reworded) | lexical naming | soft: embedding sim. |
| Cand. | model_label | gen. | Sim. | Outcome |
|---|---|---|---|---|
| T0034 | Opel Astra Hatchback (B4D) | Mk3 | 0.34 | GT – admissible |
| T0035 | Astra 2.0 (EP6) | Mk3 | 0.75 | reject: code EP6 B4D |
| T0036 | Astra 2.0 (G4F) | Mk3 | 0.75 | reject: code G4F B4D |
| T0037 | Astra 2.0 (B4D) | 141 | 0.75 | reject: gen. 141 Mk3 |
| Hard rule (unit) | Soft rule (naming) | |
|---|---|---|
| Source expr. | round("engine_cc"/1000, 1) | split("model_text", ’ - ’)[1] |
| Target expr. | split("displacement_l", ’ ’)[0] | lower("model_label") |
| Rule Engine | src: 1998 2.0 ; tgt: 2.0 L 2.0 | src: G4F - Astra Astra ; tgt: Astra astra |
| Execution | equality : match( 2.0 , 2.0 ) | cosine sim : sim( Astra , astra ) |
| Valid (%) | |||
|---|---|---|---|
| Model | LLM only | CGM | Cost ($/1k) |
| gpt-5.4 | 10.6 | 100 | 3.59 |
| gpt-5.4-mini | 9.0 | 100 | 0.49 |
| gpt-5.4-nano | 10.2 | 100 | 0.13 |
| Catalog | Semantic (decoys off) | Structural (decoys on) |
|---|---|---|
| Small | 0.62 | 0.15 |
| Enterprise ( k) | 0.18 | 0.05 |
| Heterogeneity | LLM | CGM |
|---|---|---|
| Implicit attribute encoding | 4.0 | 42.0 |
| Unit inconsistency | 2.0 | 70.0 |
| Version / identifier | 2.0 | 56.0 |
| Granularity mismatch | 4.0 | 72.0 |
| All mixed | 0.0 | 42.0 |
| Method / rung | Adds | Compl. | Wrong | F1 |
|---|---|---|---|---|
| Magneto (base mpnet ) | SOTA baseline | 0.0 | 96.1 | 0.02 |
| L0 all-columns RAG | LLM-only | 7.5 | 76.5 | 0.17 |
| L1 rule columns (raw) | feature selection | 16.5 | 60.5 | 0.32 |
| L2 rule functions | normalization | 0.0 | 73.5 | 0.08 |
| L3 hard gate | admissibility | 43.0 | 35.0 | 0.56 |
| L4 relax hint | relaxation expert | 40.5 | 35.0 | 0.54 |
| Make ( ) | Hard-rule config | Recall | Mean | Sel. |
|---|---|---|---|---|
| Make E ( ) | none | 100.0 | 373.0 | 0.0 |
| selected (model variant) | 86.0 | 50.2 | 86.5 | |
| internal-model | 93.4 | 364.0 | 2.4 | |
| Make A ( ) | none | 100.0 | 11934.0 | 0.0 |
| selected (model type-group) | 96.4 | 664.2 | 94.4 | |
| model-type-group | 96.4 | 5479.3 | 54.1 |
| Setup | TTC (days) | MpH | Interactions | Constraints |
|---|---|---|---|---|
| Excel (manual) | 10.5 | 118 | – | – |
| Rules | 6.0 | 207 | 112 | – |
| Rules + LLM | 4.5 | 276 | 48 | – |
| CGM (Expert) | 1.5 | 827 | 31 | 2 hard + 1 soft |
Entity Resolution
Entity resolution links records that refer to the same real-world entity across datasets despite differences in names, attributes, formats, and languages.
See all 40 papers