Deterministic reconciliation · no LLM
The same clients in the sales CRM and the delivery ops sheet. Names differ, one CRM client is duplicated, contract figures disagree, some records are stale, some live in one system only.
CRM export — sales view
| Account | ID | Contract € | Pledged t | Updated |
|---|---|---|---|---|
| Pohjanterä Nordics | CL-001 | 48000 | — | 2025-11-12 |
| Helsingin Kiertotalous Oy | CL-002 | 32000 | 2000 | 2024-01-08 |
| Suomen Uusiomateriaalit Oy | CL-003 | 27500 | 1500 | 2025-09-30 |
| Lahden Energiaratkaisut Ab | CL-004 | 15000 | 1000 | 2025-10-02 |
| Pohjanteräs Nordics | CL-001 | 52000 | 2000 | 2025-12-01 |
| Karjalan Biojaloste | CL-007 | — | — | 2026-02-15 |
| Turun Kiertokeskus Oy | CL-005 | 41000 | — | 2026-01-20 |
| Turun Kiertokeskus Oy | CL-005 | 45000 | — | 2026-01-20 |
Ops sheet — delivery view
| Client | Project | Value € | Tonnes | Year |
|---|---|---|---|---|
| Pohjanteras Nordics Division | PRJ-2025-14 | 50000 | 2210 | 2025 |
| Hgin Kiertotalous | PRJ-2025-09 | 33000 | 1840 | 2025 |
| Suomen Uusiomateriaalit | PRJ-2024-21 | 27500 | 1420 | 2023 |
| Lahti Energiaratkaisut | PRJ-2025-30 | 15000 | 990 | 2025 |
| Oulun Materiaalikierto Oy | PRJ-2025-33 | 21000 | 760 | 2025 |
| Turku Kiertokeskus | PRJ-2025-40 | 43000 | 880 | 2025 |
One row per client, ready to sign off. Contract from the CRM (system-of-record for money), impact from the ops sheet (delivery owns what was moved), each figure tagged with where it came from. A blank figure is a refusal, not a gap: no rule could decide it, so a person must.
| Client | ID | Contract | Impact (t diverted) | Flags |
|---|---|---|---|---|
| Helsingin Kiertotalous Oy | CL-002 | €32,000 | 1,840 | STALE (contract): CRM not updated in 29 months (verify before sending) |
| Karjalan Biojaloste | CL-007 | — | — | SINGLE-SOURCE: in CRM only, no delivered project (unconfirmed) MISSING: no contract value on record |
| Lahden Energiaratkaisut Ab | CL-004 | €15,000 | 990 | ok |
| Oulun Materiaalikierto Oy | — | €21,000 | 760 | SINGLE-SOURCE: in ops only, no CRM record (unconfirmed) |
| Pohjanteräs Nordics | CL-001 | €52,000 | 2,210 | ok |
| Suomen Uusiomateriaalit Oy | CL-003 | €27,500 | 1,420 | STALE (impact): figure is from 2023 (~3 years old, verify) |
| Turun Kiertokeskus Oy | CL-005 | — | 880 | AMBIGUOUS (contract): two CRM rows updated 2026-01-20 disagree (€41,000, €45,000) — no rule decides, human review |
Provenance: contract ← CRM (newest row) · impact ← ops (delivery system-of-record). A kept figure is always the winning source’s value, never a loser relabelled.
When the two systems disagreed, the engine did not guess: a written rule decided, or where no rule could, it escalated to a human. The losing value is kept beside the winner, never silently dropped.
| Field | CRM value | Ops value | Resolved | Rule applied |
|---|---|---|---|---|
| Account name | Helsingin Kiertotalous Oy | Hgin Kiertotalous | Helsingin Kiertotalous Oy[CRM] | CRM is the legal-entity master |
| Contract value | €32,000 | €33,000 | €32,000[CRM] | CRM is system-of-record for money; the newest CRM row wins. |
| Impact (t diverted) | 2,000 pledged | 1,840 delivered | 1,840[OPS] | Delivery ops is system-of-record for impact; the CRM holds the sales pledge, ops holds what was actually diverted |
| Field | CRM value | Ops value | Resolved | Rule applied |
|---|---|---|---|---|
| Account name | Lahden Energiaratkaisut Ab | Lahti Energiaratkaisut | Lahden Energiaratkaisut Ab[CRM] | CRM is the legal-entity master |
| Impact (t diverted) | 1,000 pledged | 990 delivered | 990[OPS] | Delivery ops is system-of-record for impact; the CRM holds the sales pledge, ops holds what was actually diverted |
| Field | CRM value | Ops value | Resolved | Rule applied |
|---|---|---|---|---|
| Account name | Pohjanterä Nordics / Pohjanteräs Nordics | Pohjanteras Nordics Division | Pohjanteräs Nordics[CRM] | CRM is the legal-entity master |
| Contract value | €52,000 | €50,000 | €52,000[CRM] | CRM is system-of-record for money; within CRM the newest row (€52,000) supersedes the older (€48,000). |
| Impact (t diverted) | 2,000 pledged | 2,210 delivered | 2,210[OPS] | Delivery ops is system-of-record for impact; the CRM holds the sales pledge, ops holds what was actually diverted |
| Field | CRM value | Ops value | Resolved | Rule applied |
|---|---|---|---|---|
| Account name | Suomen Uusiomateriaalit Oy | Suomen Uusiomateriaalit | Suomen Uusiomateriaalit Oy[CRM] | CRM is the legal-entity master |
| Impact (t diverted) | 1,500 pledged | 1,420 delivered | 1,420[OPS] | Delivery ops is system-of-record for impact; the CRM holds the sales pledge, ops holds what was actually diverted |
| Field | CRM value | Ops value | Resolved | Rule applied |
|---|---|---|---|---|
| Account name | Turun Kiertokeskus Oy | Turku Kiertokeskus | Turun Kiertokeskus Oy[CRM] | CRM is the legal-entity master |
| Contract value | €41,000 vs €45,000 | — | unresolved — human decides[—] | Two CRM rows updated the same day disagree; no rule decides, so the engine refuses to guess and escalates. |
The same reconciled impact number, in each format they ask for. A customer scorecard wants the headline footprint; an EcoVadis field wants only the audited, current tonnes. Same source, opposite boundary, both correct. Copy or download as text.