Skip to content

Running AI Analysis

Analysis is where the pile of PDFs turns into a matrix. You click Analyze, the AI reads the contract, and structured values land in the cells. This page walks through what happens under the hood, the controls you have, and the signals to pay attention to once values come back.

How Analysis Works (Short Version)

Term Tracker runs a two-pass extraction on every contract.

Pass 1: structure. The AI reads the whole document and pulls the high-level shape: document type, parties, a section map, and any parent-contract references. Think of it as the AI reading the table of contents and the first page of every section.

Pass 2: extraction. For each active field in your template, a focused prompt runs against the relevant section from Pass 1. Targeted prompts against the right section beat "find everything at once" on long contracts. Accuracy goes up, hallucinations go down.

Every extracted value comes back with four things attached:

  • The value itself (short; this is what lands in the matrix cell)
  • A confidence score, 0 to 1
  • The source page it was found on
  • The source text: the verbatim excerpt from the contract

All four are visible in the term drawer. The matrix shows just the value.

The Analyze Button: Three States

The button changes its label based on what is actually possible in the current project state.

  • Analyze: runs analysis on a single contract. You will see this on the Documents list and on the Contract page.
  • Analyze All: batch-queues every contract in the project that has not been analyzed yet. Skips anything already complete.
  • Re-Analyze All: force-queues every contract, including already-complete ones. Use this after changing a template's field instructions or activating a previously-inactive field.

Model Selection

Next to the Analyze button, a dropdown lets you pick which model runs the extraction. Default is Claude Sonnet 4.6. The full list:

  • Claude Sonnet 4.6 (default): best quality for most contracts; reasonable cost.
  • Claude Opus 4.7: highest accuracy on the longest or most complex contracts; the slowest and most expensive option.
  • Claude Haiku 4.5: fast and cheap; use for simple or short contracts.

The extraction schema is the same across all models. Switching models does not change what the matrix columns are, only how they get filled in.

Sync vs Async (Transparent to You)

The size of the file decides how it runs, and you do not have to care either way.

  • Under 1 MB: analysis runs inline. A progress indicator shows on the contract while it works.
  • 1 MB or larger: the job queues to a background worker. You will get an email when it finishes, and the app updates in-place if you are still on the page.

Same extraction pipeline, same output format. The only thing that changes is where it runs.

Rate Limits

To keep cost predictable, analysis runs are capped:

  • Per-user rate: 5 analyses per minute and 30 per hour.
  • Per-project rate: 200 analyses per day across all members.

If you hit a limit (this is unusual outside of large bulk re-runs), the row shows a "Rate limit — wait a bit" label and you can retry in a moment. Analyze All counts against the same budget; if the per-day cap would be exceeded by a single big batch, queue it in smaller chunks across days.

Confidence Scores and the 0.7 Threshold

Every extracted value gets a confidence score from 0 to 1. The matrix flags any cell under 0.7 amber. That is your review queue.

Amber does not mean wrong; it means the AI was not sure. A lot of amber cells resolve to "yes, that is right" when you check the source text. Some resolve to a quick override. Either way, amber is where you spend your review time.

Above 0.7 cells are worth spot-checking, but they do not need line-by-line review.

When the AI Can't Find a Term

If the AI cannot locate a field in the contract, it returns not_found rather than guessing. The matrix renders these cells as a dash.

This is intentional. A field that is genuinely absent from the contract is information: "Silent on assignment" is often the answer you need. The AI refusing to invent a value means the dash is trustworthy.

WARNING

Re-Analyze All costs real money. It re-runs every contract in the project with the current model and template: every page, every field, every call. Use it deliberately, after a template change or a meaningful field toggle, not every time you are curious whether the numbers might shift.

Auto-Classification on Upload

You do not pick a document type yourself when you upload. Pass 1 runs automatically at upload time to classify the file against the template's document types (MSA, SOW, NDA, Lease, or whatever your template defines). The classification appears as an editable badge on the contract. Correct it there if the AI got it wrong.

→ For more detail on the upload flow, see Uploading Contracts.

Flag Review Queue

Every project has a single page that lists every extracted term whose confidence fell below the threshold. It is the project-wide version of the amber cells in the matrix, collected in one list so you can work through them without hunting contract by contract.

How to reach it. Click the Flags stat on the project Overview or on the Documents page. The URL is /projects/:projectId/flags. If nothing is currently below the threshold, the page shows an empty state and you are done.

Each row shows the contract, the field, the extracted value, and the confidence percentage. Click a row to open that contract, where you can read the source text in the term drawer and either accept the value as-is or override it. Accepted values stay where they are; overrides replace the AI value with yours and clear the flag.

The queue updates as analysis runs land and as you work through rows, so coming back later picks up where the project actually stands rather than where it stood when you opened the page.

Threshold is admin-tunable

The cutoff defaults to 0.7 (70%). Admins can change it in Admin → Platform Settings. Lowering it shrinks the queue and raises the bar for what counts as "needs review"; raising it does the opposite.


Powers the Ask Feature

The extracted fields shown in the Analysis Matrix are the same data the Ask feature reads when you ask questions about your project. There is no separate indexing step. As soon as analysis completes for a contract, Ask can reference it.


→ For more detail, see The Analysis Matrix. → For more detail, see Templates & Fields. → For more detail, see Exporting Results.