Skip to main content
DoneThat

AI Adoption GuideLegalRequest

Similar request retrieval

RAG retrieves 3-5 most similar past requests with cycle times and outcomes to support prioritization.

Legal processRequestAssessDraftNegotiateApproveSignStoreDispute

By Don, DoneThat’s AI coach · updated

Overview

When a new contract request lands in the queue, the first question is rarely “what does this say?” It is “how urgent is this, and what happened the last time we saw something like it?” Similar request retrieval answers that question by pulling a short list of past requests that resemble the current one and attaching the facts that matter for prioritization: how long each took, how it closed, and why the system thinks they match.

The technique is retrieval augmented generation (RAG) applied to your request history, not to clause libraries or external law. The model does not invent precedents. It searches an indexed corpus of prior requests (metadata, free text, attached summaries, routing notes, and outcome fields your intake system already stores) and returns a bounded set of hits, typically three to five, each with a cited request identifier and an explicit similarity reason.

What the attorney sees on a hit

Each result is designed for a quick read at triage time. A hit names the source request (request ID or equivalent system key), states why it was retrieved (“same counterparty family,” “renewal with pricing change,” “NDA with data-processing addendum,” “employment offer in Germany”), and carries the operational fields attorneys actually use when ranking work:

  • Cycle time from intake to resolution or last material status change
  • Outcome (approved, rejected, sent back for revision, escalated, withdrawn, still open)
  • Optional context such as business unit, contract type, or approval path when those fields exist in the corpus

The current request stays in focus. Similar cases sit beside it as reference points, not as binding rules. If two retrieved renewals both cleared in eight days with standard terms, that supports treating a third renewal as routine. If every similar vendor onboarding took six weeks and needed security review, that supports flagging the new one early rather than assuming a two-day turnaround.

Similarity reasons are the trust layer. A list of IDs without explanation invites guessing. A one-line reason (“matched: SaaS subscription, auto-renewal, EU customer”) lets the attorney accept, reject, or ignore the hit without opening five unrelated tickets.

How retrieval runs in the request workflow

Similar request retrieval usually fires at or just after intake, alongside contract request triage. Triage classifies the request (type, jurisdiction, risk signals). Retrieval then asks: among everything we have already handled, what looked like this?

The pipeline is predictable:

  1. Normalize the incoming request into the same shape as historical records (fields + text chunks).
  2. Embed or keyword-index the corpus if not already done; many platforms maintain a rolling index on close or status change.
  3. Retrieve candidates by semantic similarity, often blended with structured filters (contract type, region, counterparty tier).
  4. Rank and cap at three to five results so the UI stays scannable.
  5. Attach cycle time and outcome from the source record, not from the model.

Retrieval complements auto-priority scoring. Scoring applies rules or models to produce a priority band or numeric rank. Similar cases supply evidence the scorer may not encode: “we have done this before, and it behaved like X.” An attorney can agree with a medium priority score but still elevate work when retrieved history shows a pattern of delays or escalations. Conversely, a high score might be downgraded when every similar case closed quickly with no exceptions.

Retrieval is also distinct from clause library retrieval. Clause retrieval answers “what wording did we use?” Similar request retrieval answers “what request-shaped problem did we already solve, and how long did it take?” Both use search over internal knowledge, but the unit of retrieval is the request lifecycle, not the clause text.

Downstream, approval outcome predictor may estimate whether a path will approve or stall. Similar requests ground that estimate in concrete IDs and dates. Predictions without citations are hard to audit; retrieved neighbors make the story inspectable.

When the list is empty or thin

RAG only works where history exists. A new legal ops program, a freshly migrated intake tool, or a business line with few closed requests produces a thin corpus. In those cases the feature should return empty or explicitly say “no close matches,” not fabricate neighbors.

Thin corpus is normal early in deployment. Attorneys should treat an empty panel as “no institutional memory yet,” not as “this request is unique.” Prioritization falls back to triage labels, scoring, and judgment—the same workflow as before retrieval was added.

Even with a large corpus, retrieval may return weak matches (low similarity scores). Product behavior varies: some systems hide weak hits; others show them with a low-confidence label. Attorneys learn to distinguish “structurally similar” from “keyword overlap only.”

Corpus hygiene matters. Duplicate tickets, test data, and abandoned drafts pollute neighbors. Legal ops should define what counts as a “closed request” for indexing and exclude noise. Without that, cycle times look erratic and outcomes look random, and the feature erodes trust quickly.

Attorney still prioritizes

Similar request retrieval is decision support, not auto-routing. The attorney (or legal coordinator) still sets priority, assigns counsel, and negotiates with the business on timing. Retrieved cases do not override policy, SLAs, or executive escalations.

The speed outcome shows up in fewer context switches: less opening old tickets, less asking colleagues “did we do one of these lately?” and less re-deriving timelines from memory. A well-implemented panel saves minutes per request; across hundreds of intakes per quarter, that compounds.

Best practice is to treat hits as prompts, not prescriptions:

  • Confirm similarity before relying on cycle time (counterparty name collisions, reused templates).
  • Check outcome semantics (withdrawn vs rejected vs approved with exceptions).
  • Note corpus age (pre-2024 policy may not reflect current approval matrix).

When retrieval and scoring disagree, the attorney’s note on why they chose priority should be enough for the next similar request to rank better—if your platform feeds outcomes back into the index.

Vendor patterns: Ironclad, Glean, Microsoft, Salesforce

Vendors implement the same idea through different surfaces; none replace your prioritization policy.

Ironclad (contract lifecycle management) typically exposes workflow history inside the request or workflow record. Similarity may be driven by workflow metadata, contract type, and stored attributes, with neighbors surfaced in intake or assignment views. Cycle time and outcome often come directly from workflow state transitions. Strength: tight binding between request object and CLM history. Limitation: neighbors are usually Ironclad-native requests; email-side intake may be underrepresented unless integrated.

Glean (enterprise search) indexes requests across connected systems (ticketing, CLM, SharePoint, chat) and returns “similar” documents or tickets with snippets and links. Cycle time and outcome may require structured fields in the source system or enrichment in the connector. Strength: cross-app recall when legal work spans Jira, ServiceNow, and CLM. Limitation: similarity reasons may be snippet-led unless you configure metadata-rich cards.

Microsoft (Copilot, SharePoint, Viva, Dynamics-adjacent stacks) often retrieves from indexed SharePoint libraries, Teams threads, and case lists tied to Power Platform or Dynamics. Request IDs may map to list items or Dataverse records. Outcomes and durations depend on how consistently those fields are populated. Strength: fits organizations already standardized on M365 for intake forms and document stores. Limitation: quality rises with disciplined list schemas; free-form Teams chat alone is a weak neighbor corpus.

Salesforce (Sales Cloud, Service Cloud, Experience Cloud for intake) retrieves from Case or custom Request objects, sometimes via Einstein Search or external vector stores wired through Data Cloud. Similar cases often appear as related lists or Copilot panels with case numbers and status history. Cycle time is derivable from case milestones if stages are enforced. Strength: strong when sales and legal share one pipeline for customer contracts. Limitation: legal-only intake outside Salesforce will not appear unless synced.

Across vendors, the integration pattern is the same: index closed (or sufficiently advanced) requests, retrieve on new intake, display ID + reason + timing + outcome, keep the human as the prioritization authority. Choose tooling based on where requests actually live today, not where you want them to live in a future CLM rollout.

Practical rollout

Start with one contract type or one business unit so neighbors are comparable. Pair retrieval with contract request triage so filters align with how attorneys think about work. Publish a short internal definition of similarity (what fields matter, what is ignored). Review empty and low-confidence results weekly in the first month; adjust indexing and exclusions before expanding scope.

Measure speed indirectly: time from intake to first attorney action, time to priority assignment, and repeat questions to legal ops about “typical turnaround.” Retrieved neighbors should shrink those gaps without removing the attorney’s final say on what goes first.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first