## TL;DR
Deduplicate on a canonical identity across sources before totaling. The same guest appears in both exports, and naive sums count them twice.

## Error
```text
(total 2,300 seats; real headcount 2,100; 200 guests counted in both Slack and Entra; no error text)
```

## Steps
1. Confirm the overlap: match guest records between the Slack and Entra exports on email or ID. Expected: the double-counted set identified.
2. Define the canonical identity for a person (e.g. the Entra object ID, or normalized email where IDs are unavailable). Expected: one identity rule.
3. Deduplicate the combined export on that identity before computing totals. Expected: each person counted once.
4. Re-run the totals. Expected: the count matches reality.

## When to use
- Combined exports exceed the real user count
- Guests exist in multiple systems
- The agent sums per-source counts

## When not to use
- Counts are too low (a missing-data problem)
- The same system exports duplicates (a single-source dedup problem)
- Guests should be counted per system (then label them, do not sum blindly)

## Tool compatibility
Any multi-source seat counting (Slack, Entra, Google Workspace).

### Variant phrasings
### guest in Slack but employee in Entra
The canonical identity must span both roles; pick the person-level ID.

### overlap across three or more systems
Deduplicate pairwise into one canonical set; do not chain sums.

## Why it happens
Each system's export is correct alone. The error is in the aggregation: summing per-system counts assumes disjoint populations, which guests violate.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_maBkFLporSFxVfZQD2IJNQ
