# Joining tables that share no key

Two systems hold the same customers. One has an email, a phone number, and a company. The other has a name, a differently formatted phone number, and a card type. There is no shared ID. Can they be joined?

## The idea

Instead of requiring a key, read the values. A phone number written two ways is still a phone number. A name and an email can agree on the same person. A model that understands what a column is can align columns first, then match rows.

## Four parts of the answer

- **Column alignment.** Pairs of columns that carry the same attribute, each with a confidence and an example from the cells.
- **Entity matches.** Pairs of rows judged to be the same record, with the attributes they agreed on.
- **A unified schema.** Which columns are shared and which exist in only one source.
- **Unified rows.** Joined records built from the original values, with the source of each column and each source's raw variant kept.

## A proposal, not a merge

The map is reported only above a confidence threshold, and it is never applied automatically. When the sources disagree on something beyond formatting, the output flags a possible mis-alignment instead of silently choosing a side. A human or a downstream system decides what to accept.

## Why provenance matters

Keeping the raw value from each source means you can always trace a joined cell back to where it came from. If a match turns out wrong, you can see why it was made.
