← Prototypes

Prototype

What's market?

A tool that reads a large corpus of public M&A agreements and reduces each deal to a structured record of its terms, with every term tied to the passage it came from. Once the deals are in that form they can be filtered, benchmarked against one another, compared side by side, and searched by meaning. The tool ingests agreements and associated filings and extracts information concerning the deal. The prototype is built on public M&A documents, but could just as easily work on local copies of private deals.

Input
Public M&A agreements and filings (SEC EDGAR)
Output
Structured deal terms, market analytics, cited clause search
Prototype Corpus
486 transactions, 2020–2024
Built
2026

Why I built it

Law firms generally do not have strong analytics on what is market across a range of deals and rely heavily on institutional memory and knowledge. This tool allows for on-demand analytics regarding what is market for transactions and is filterable across any dimension. It provides a rich data interface for agreements that are otherwise just walls of text. It also enables much more sophisticated and faster searches for precedents.

The tool ingests the corpus once and extracts structured data that can then be leveraged. The result is a dataset in which every deal has the same fields, so a question like "what is the median termination fee on private equity buyouts of public targets" becomes a filter and a chart rather than a research assignment. Because every value is tied back to the clause it came from, a number can be checked against the actual language rather than taken on trust.

What it does

The main view is a dashboard over the corpus. The filters on the left define a cohort — transaction structure, acquirer type, target ownership, indemnity regime, deal size, vintage, industry — and every panel recomputes against the selection. Clicking a segment in any chart narrows the cohort further.

The analytics dashboard over all 486 transactions: summary figures, deal structure, acquirer type and indemnity regime donuts, deal value and termination fee distributions, deal protection terms
The full corpus.
The same dashboard filtered to the 36 private equity acquirers, with every panel recomputed
The same view narrowed to private equity acquirers.

Benchmark places a single deal against the cohort. For each term it shows where that deal sits: for numeric terms, its percentile against the cohort median and interquartile range; for categorical terms, how the cohort is distributed and which category the deal falls into.

The benchmark view for one deal, showing deal value, headline price and price per share as dots on percentile bars, and consideration terms as highlighted categories
One deal's economics against the corpus.
The same deal's termination fee, reverse termination fee and expense reimbursement against the cohort, followed by its indemnity terms
The same deal's termination and indemnity terms.

Compare puts up to five deals side by side, field by field, with an option to show only the fields on which they differ.

Three deals compared side by side in a table, one column per deal, one row per field
Three deals compared.

Search runs across every clause in the underlying agreements, by meaning, by keyword, or both, and returns the passages themselves with a reference to the source document. It is the fastest way to find precedent language for a term once the analytics have shown what is typical.

Search results for a plain-language query about reverse termination fees, each result a verbatim passage from an agreement with its source filing noted below
Clause search, returning the agreement language itself.

The deal map places every transaction as a point in space, with similar deals near one another. It can be coloured by any category, and clicking a deal lists its nearest neighbours.

A three-dimensional scatter of 486 deals, coloured by transaction structure, with similar deals clustered together
The deal map, coloured by transaction structure.

How it was built

Built in Python and React with the help of Claude Code. Source is not public, but I am happy to walk through it.