Exchange
Trade markups, merged
The inverse of one-revision-every-party. Where propagation fans a single revision out to many subs, markup-merge collects clause-level edits from every sub and rolls them back onto the master.

How it works
Each sub redlines their own copy in their own branch.
When the head contractor opens a merge, Exchange overlays each branch's clause-level edits onto the master and walks the head contractor through every change in order.
Conflict resolution
Where two subs touched the same clause, the merge UI surfaces a conflict inline. The head contractor sees both edits side by side along with the original clause and resolves once — accepting one, accepting both, or writing a new version.
Resolving in context
Resolve conflicts inside the viewer rather than rerouting back to the subs. The audit log captures the resolution decision and the principal can see exactly why a clause reads the way it does.Why this matters
Without a merge primitive, sub edits arrive as commented PDFs or red-line DOCX attachments by email. The head contractor retypes them into the master, mistakes accumulate, and the audit trail is reconstructed from forwarded email headers. Exchange replaces all of that with one merge action.