Give the three versions clear roles
A is the review-start base, B is the reviewer’s edit, and C is the latest version. Two tables cannot show which side changed a cell, so keep all three originals with string IDs.
| Version | Role | Check |
|---|
| A | review start | base value |
| B | review edit | review change |
| C | latest | later change |
Keep changes in separate cells
For ID 001, the reviewer changes price from 100 to 110 and latest changes stock from 10 to 8. They are separate cells, so merged is price 110 and stock 8. Do not choose by filename recency.
base: price 100 / stock 10
review: price 110 / stock 10
latest: price 100 / stock 8
merged: price 110 / stock 8
Make same-cell differences conflicts
If latest price is 105, it conflicts with the reviewer’s 110 in the same cell. In this synthetic case the reviewer confirms 110 and the reason is recorded. The stock 8 change is kept because it is a different cell.
| ID / column | Base | Review | Latest | Chosen |
|---|
| 001 / price | 100 | 110 | 105 | 110 |
| 001 / stock | 10 | 10 | 8 | 8 |
Keep deletions and additions unresolved
Delete-vs-edit, duplicate keys, empty cells, and add-vs-add are outside this first automatic merge. Keep them in an unresolved list rather than silently dropping a row.
Save the merged file and decision record
Check the before/after cells, version, key, decision reason, and unresolved list. Keep all three originals unchanged and save the merged CSV as a new file.
source files: base / review / latest
merged: 001,110,8 / 002,200,20
unresolved: delete-vs-edit, duplicate-key, empty-cell, add-vs-add
Carry into the next review
Store the base version, target IDs, change scope, decision reason, and response deadline together. Cloud sharing is not required, and originals stay separate from the merged file.