By Alastair Doggett, Senior Machine Learning Engineer
A framework for temporally aware clause analytics in contract negotiations.
Contract negotiations evolve through a sequence of revisions, where clauses are repeatedly edited, re-contextualized, or replaced as the parties converge on an executable agreement. At Ontra R&D, we’ve been building a framework that treats this evolution as a data-driven process, allowing us to analyze how clauses actually change over time, not just what they look like in a single draft.
This post introduces the intuition behind that framework, explains how we model clause evolution empirically, and shows how this framework enables practical negotiation analytics like volatility scoring, edit routing, and precedent awareness.
How to think about contract negotiation
A contract negotiation can be viewed as a sequence of drafts:

Each draft reflects edits made in response to counterpart feedback, internal review, and historical deal outcomes. From a modeling perspective, this frames negotiation as a time-indexed process, where clause transitions between drafts encode meaningful structure.
Every edit creates a paired observation:

where ci (t) is a clause in one draft and ci (t+1) is its edited counterpart in the next draft.
Why static analysis falls short
When we analyze negotiations at a single point in time, we get a clear view of the current draft but little sense of the path that led there or what typically comes next. The history of prior edits and the patterns they imply are invisible in a static snapshot, masking how clauses evolve and how negotiation strategy unfolds over time. This static view results in significant information loss, such as:
- How clauses evolve: Earlier and later versions are treated independently, obscuring patterns of change.
- What edits are typical: Without historical movement, it’s hard to tell whether a proposed change is standard or unusual.
- Where risk and effort concentrate: Some clauses consistently change, whereas others barely move. Static models cannot see this distinction.
Modeling clause evolution with transitions
To capture negotiation dynamics, we model clause editing as a transition process. Suppose we observe many clause edits across negotiations:

Each pair represents how a clause changed from one draft to the next. We then:
- Cluster clauses in the first drafts into semantic groups G 1j
- Cluster clauses in the subsequent drafts into semantic group G 2j
- Track how clauses move between clusters
Each edit traces a path:

By counting how often these transitions occur across all negotiations, we can estimate a transition matrix:

This tells us, empirically, where clauses tend to go next.

Practical application
Once we have a transition matrix, clause evolution becomes measurable. The statistics derived from this matrix can be fed back into downstream drafting systems as lightweight, negotiation-aware context.
To test whether this kind of enrichment makes a difference, we ran an internal experiment on automatic first markup generation. The drafting pipeline was held fixed, with the only change being the addition of negotiation-based metadata derived from transition matrices and historical edits to the retrieved precedent examples.
At a high level, the statistics summarize how similar clauses have behaved historically. They augment the information passed into the drafting system by attaching behavioral metadata to each precedent example. Because the generated markup is conditioned on this augmented input, the added signals influence the model’s reasoning and resulting edits, even though the underlying pipeline remains unchanged.
Specifically, we attach the following to each retrieved revision pair:
- Transition commonality: The empirical probability that clauses in the source cluster transition to the destination cluster. This measures how typical a given edit trajectory is relative to historical negotiation patterns.
- Expected edit intensity: A cluster-conditioned summary of how substantial edits to similar clauses have historically been, providing a prior on how aggressively a clause is usually revised.

To evaluate the effect of these signals, we measured Markup Alignment Lift (MAL), a metric designed to capture how well an automated first markup mirrors a professional’s editing behavior. Instead of comparing final text directly, MAL evaluates agreement at the level of edit operations by assessing how closely the system’s insertions and removals match those performed by human reviewers, then combining the two into a single score.

This corresponds to an approximately 19% relative improvement in alignment between automated and human editing decisions.
Crucially, this gain came without changing:
- The drafting model,
- Retrieval mechanism, or
- Textual content of precedent.
The only difference was the addition of transition-based negotiation context.
Closing remarks
In this post, we introduced a temporally aware approach to contract analysis that models how clauses evolve across negotiation drafts. By learning from aligned clause edits, the framework captures the patterns by which language typically changes over time.
Starting from a simple transition model between clause clusters, we showed how clause evolution can be turned into practical negotiation signals that ground precedent in empirical negotiation behavior. This suite of negotiation analytics provides an interpretable, data-driven view of how contracts are actually negotiated.
In practice, we have shown that when used solely to enrich retrieved precedent, it produced a measurable improvement in automatic first markup quality, aligning automated edits more closely with experienced human judgment.
This work represents a step toward contract intelligence systems that reason over negotiation dynamics rather than static drafts. In ongoing work, we extend this same transition-based framework to hierarchical clause structures, enabling even finer-grained modeling of how complex contractual language evolves in practice.




