Make a page-marked text copy of each document, have AI list what every document says on each disputed issue with an exact quote and page cite, compare those rows to surface contradictions, and then check every cite against the original page by hand before anything is filed. AI finds leads faster; a lawyer decides what they mean.
Two checks come before any upload. Does the material carry limits on who may see it and where copies may sit, and does the tool keep or train on what you give it? Discovery here means the evidence the prosecution hands over before trial, which some courts call disclosure. Most pages in a typical set are bulk data, so the reading that decides a case is usually a small share of the total.
Three permission checks before any page is uploaded
Treat the first upload as sending the file to an outside company, because that is what it is.
| Check | What to look for | If the answer is unclear |
|---|---|---|
| Limits on the material | A protective order, a sharing undertaking or a sensitivity marking from the prosecution. Ask whether it covers notes and summaries made from the material, not only copies. | Keep that material out of the tool and tell the supervising lawyer. |
| Client and professional duties | Your client's consent, your regulator's guidance on generative AI, and any rule of the court you appear before. | Ask your regulator's ethics line before uploading, not after. |
| The vendor's terms | Training on your content (business plans of ChatGPT and Claude don't train by default; personal plans need the setting switched off), how long files and chats are kept, whether a deleted file is really deleted, and what happens to a seat's chats when someone leaves. | Do not use the tool for discovery until the vendor answers in writing. |
Some material stays human-only whatever the settings: statements from children, identities of informants or protected witnesses, intimate images and anything sealed. Mark those in the index as "human only" on day one. Vendors' acceptable-use rules also restrict some explicit images (Anthropic's vision documentation says Claude does not process explicit images that violate its usage policy), so photographs and video are a person's job in any case.
The wider question of what is safe with client confidences has its own tutorial on AI for criminal defence lawyers. If you are weighing a general assistant against a review platform, e-discovery software for small firms compares costs and limits.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowA 1,380-page set in which twelve documents matter
A client of a three-lawyer defence firm, which has one paralegal, is charged with an assault outside a late-night venue. The prosecution's discovery arrives as 15 PDFs totalling 1,380 pages. This is an invented set, used to show the method. Twelve of the documents are narrative and run to 144 pages in all: the complainant's statement and a further statement from the complainant, statements from a friend, a passer-by and a member of the venue's bar staff, a door-staff log, two officer reports, an emergency-call transcript, a CCTV log with stills, a medical summary and a note of the identification procedure. The other three are bulk: a custody record (46 pages), a phone extraction report (1,170 pages) and a schedule of unused material (20 pages).
That split is typical, and it shapes the whole job. The contradiction work concerns about a tenth of the pages. The 1,170-page phone report is a filtering problem rather than a reading problem: export it to a spreadsheet, filter by date and contact, and use AI only to help write the filter formulas.
Making every page citable before the AI sees it
A page cite is only worth having if two people looking at it would land on the same page. Prepare the text first.
- Give each document an ID (D01 to D15) and keep the untouched originals in a read-only folder. Work only on copies.
- Run character recognition on scans, then treat the result as a search copy, never as the record.
- Save each document as text with a marker at the top of every page, such as [[D03 p.2]]. If the prosecution's stamped page numbers differ from the PDF's page order, record both in the index and cite the PDF page in the table.
- Ask the model to list every time, date, number and name in each document, then check that list against the page images by eye. Digits are where scanned text fails: 1 and 7, 0 and 8, a colon read as a semicolon.
- For audio and video, cite a timestamp instead of a page (D16 14:32). An automatic transcript is a search aid; any quote you rely on is checked against the recording itself. The tutorial on transcription accuracy on poor audio shows how far to trust one.
Most chat tools cap what a single upload can hold, so splitting by document helps twice. As an example, Claude accepts up to 20 files per chat and 500 MB per file, reads PDFs up to 100 pages with their visual layout, and reads text only on PDFs of 101 to 1,000 pages. One document per chat keeps every run inside those limits and stops the model blending sources.
An index that keeps facts and AI summaries in separate columns
A spreadsheet is enough. The rule is that anything a computer can count or read stays out of the model's hands, and anything a model writes is labelled as such.
| Column | Filled by | Why |
|---|---|---|
| ID, file name, source, date received | Person or script | Facts the computer can read; never ask a model to guess them |
| Page count | Script | Counted, not estimated |
| Restriction flag, human-only flag | Lawyer | A judgement and a duty |
| Document type | AI, then checked | Cheap to correct |
| Date and author of the document | AI, checked against the first page | Often wrong when several dates appear |
| 40-word summary | AI, headed "AI summary" | Navigation only; never quoted in anything outgoing |
| People, places and exhibits mentioned | AI, spot-checked | Feeds the missing-items check later |
| Reviewed by, date | Person | Sign-off |
One filled row for the friend's statement might read: D03, statement, seven pages, undated on the cover but signed on page 7 with a date three days after the incident, "AI summary: describes arriving with the complainant, two men approaching, turning away to collect a coat". The undated cover is the sort of detail the "checked against the first page" rule exists for; the model's first run had taken the date from a line in the body that referred to another day.
Mapping each document to the disputed issues
Start from the issues, not from the documents. The lawyer writes a short list of what is in dispute or might become so: when the incident began, how many people were involved, who made first contact, lighting and distance at the point of identification, injuries, and what was said before and after. Then run one document per chat.
You are helping a defence lawyer compare witness accounts.
Below is ONE document with page markers such as [[D03 p.2]].
Issues:
A. Time the incident began
B. Number of people involved
C. Who made first physical contact
D. Lighting and distance when anyone was identified
E. Words spoken before and after
F. Injuries described
For each issue, report what THIS document says, as rows:
issue | exact quote (verbatim, under 40 words) | cite (document and page) | speaker | firsthand or reported
Rules:
- Never paraphrase inside the quote column. If you cannot find an exact quote, leave it blank.
- If the document does not mention an issue, write NO MENTION. Do not infer.
- Do not compare with any other document.
For the friend's statement (D03) a run returns rows like these (illustrative, three of the six):
| Issue | Quote | Cite | Speaker | Basis |
|---|---|---|---|---|
| A | "about twenty to twelve, give or take" | D03 p.2 | Friend | Firsthand |
| B | "Two men came over to us" | D03 p.2 | Friend | Firsthand |
| D | NO MENTION |
The third row is wrong. A keyword search for light, lamp, dark and bright finds "under the lamp by the door" on page 3. A NO MENTION from a model is a prompt to run a keyword search, never a finding. The same applies in reverse: if the table gives a quote and the search cannot find it, the quote does not exist.
Comparing the table, not the pile of documents
Once all twelve narrative documents have been mapped, paste the rows into one sheet. Eighty or so quotes fit comfortably in a single prompt, which is a better place to compare than 144 pages of prose. The model sees only quotes and cites, so any difference it reports has to be anchored in both.
Below is a table of quotes from several documents about one incident.
Each row has an issue, a verbatim quote, a cite and a speaker.
For each issue, compare the rows and report only differences that appear in the table.
Give: issue | quote A and cite | quote B and cite | type | one-line description.
Types:
CONFLICT: both cannot be true
TENSION: both could be true but sit uneasily
OMISSION: one source is silent where another speaks
ADDITION: a detail appears only in a later or secondary source
CERTAINTY SHIFT: the same point, stated more or less firmly
Do not say which source is right. Do not suggest what the defence should argue.
After the paralegal tidies the comparison, it reads like this (illustrative):
| Issue | Source A | Source B | Type |
|---|---|---|---|
| Number of people | D03 p.2, friend: "Two men came over to us" | D01 p.2, complainant: "there were three or four of them" | CONFLICT |
| Time | D03 p.2, friend: "about twenty to twelve, give or take" | D09 p.1, call transcript: first call logged at 23:52 | TENSION (12 minutes; check clock drift on the CCTV) |
| First contact | D01 p.3, complainant: "I had my hands in my pockets and he came at me" | D05 p.2, bar staff: "they were squaring up to each other before it kicked off" | TENSION |
| Identification | D09 p.4, complainant on the call: "I didn't see his face" | D02 p.2, further statement: "I recognised him straight away" | CERTAINTY SHIFT |
| Identification procedure | D07 p.3, arresting officer: "witness identified the suspect at the scene" | D02 p.3, further statement: "I picked him out of the photos the next day" | CONFLICT |
| Injuries | D01 p.5, complainant: "he kicked me in the head" | D11 p.2, medical summary: "no head injury recorded; bruising to left forearm and ribs" | OMISSION |
Each row is a lead. The time gap is probably nothing, since "about" and "give or take" are generous, but it prompts a check of how far the CCTV clock sits from real time. The identification rows matter more: a witness who was unsure on the call and certain in a later statement, and an officer's summary that compresses a next-day identification into "at the scene". Whether any of this helps the defence is a decision for the lawyer, after the originals have been read.
Searching the set, and what a search cannot show
Natural-language questions work well for finding where something is discussed ("where do the statements describe the lighting?") as long as the answer must carry a quote and a cite. They work badly for proving something is absent. For absence, use two tools together: a model to widen the vocabulary and plain keyword search to do the looking.
List 25 words or phrases a witness or officer might use for "knife",
including slang, spelling variants and common mistakes.
Output one per line with no commentary.
Run each term as a keyword search across the page-marked text. An empty result across 25 variants is a far safer basis for writing "no mention in the disclosed material" than a model's say-so, and you can record exactly which terms you searched.
The cheapest high-value job in the whole process is the missing-items check. Ask the model to list every document, exhibit, recording, log or photograph that any narrative document refers to ("see exhibit", "body-worn footage", "the incident log"), with the cite. Compare that list with the index and with the schedule of unused material (D15 in the example). Anything referred to but not disclosed goes onto a request list. A false positive costs one line in a letter; a miss can cost a line of defence, which is why this step suits AI so well. The lawyer approves every request before it is sent.
In the example set the check returns four lines. The arresting officer's report refers to body-worn footage from two units, which is neither in the index nor on the unused-material schedule. The scene officer's report mentions a second CCTV disc, while the schedule lists one. The medical summary refers to photographs of the injuries that were not disclosed. The call transcript refers to an incident log that is also absent. The request letter asks for each item by name and quotes the cite where it is mentioned, so the prosecution cannot answer that the item does not exist.
Verifying cites before a letter or filing leaves the building
Nothing from the AI tables goes into a filing, letter or cross-examination outline until it has passed three levels of checking. The tables are research notes, and the words that leave the firm are written by a lawyer.
- Level 1, every row: the quote appears on the cited page. Search the page-marked text, or run the small script below.
- Level 2, every row you intend to rely on: a lawyer or paralegal opens the original page, reads the paragraph before and after, and confirms the quote, the page and the meaning in context.
- Level 3, anything going to the court or the other side: a second person repeats level 2 without seeing the first person's notes.
If someone in the firm, or your IT support, can run Python, this script flags every cite whose quote is not on the cited page. It reads the page-marked text file and a CSV with the columns cite and quote, and it runs on the firm's own computer, so nothing leaves it.
import csv, re
pages, key = {}, None
for line in open("case_text.txt", encoding="utf-8"):
m = re.match(r"\[\[(D\d+ p\.\d+)\]\]", line)
if m:
key = m.group(1)
pages[key] = ""
elif key:
pages[key] += " " + line
def plain(text): # ignore case, curly quotes and line breaks
for a, b in (("\u2018", "'"), ("\u2019", "'"), ("\u201c", '"'), ("\u201d", '"')):
text = text.replace(a, b)
return re.sub(r"\s+", " ", text).strip().lower()
for row in csv.DictReader(open("ai_table.csv", encoding="utf-8")):
found = row["cite"] in pages and plain(row["quote"]) in plain(pages[row["cite"]])
print("OK " if found else "CHECK ", row["cite"], "|", row["quote"][:60])
A CHECK line means look, not necessarily that the model lied. It may have trimmed a word or joined two sentences, which is itself a reason to correct the row. Keep a log with one line per row used: where it was used, the date and initials for each level.
Courts differ on AI. Some courts and individual judges have standing orders on generative AI: some ask filers to disclose use, occasionally naming the tool and how it was used, some require a certificate that the filer checked the accuracy of anything the tool drafted, and the consequences of getting it wrong can include sanctions or a filing being thrown out. Orders were issued quickly and independently, so check the rules of each court and the standing orders of each judge. A simple AI-use log per matter (tool, plan, date, what was uploaded, what came out, who verified) lets you answer accurately whatever the rule says. The tutorial on setting up human review without slowing down covers the sign-off habits behind this.
Six ways this review goes wrong, and how each one looked
These are illustrations of failures worth building checks against, drawn from the invented set above.
- Page drift. A cite says page 7 but the quote sits on PDF page 8, because the prosecution re-sent the file with a new cover sheet. The index records both the stamped range and the PDF pages, and a replacement file means re-marking the pages and re-running the cite check.
- A digit swap in a scan. The call log's 23:52 came through as 23:32, which put the first call eight minutes before the friend's "about twenty to twelve" and made the timeline look impossible. The by-eye check of every time and date is there for this reason.
- Smoothed contradictions. Asked to "summarise the witnesses' accounts", a model produced one tidy narrative of the incident that blended the complainant and the friend and lost the head-versus-forearm difference. That is why comparison runs on separate rows, with a rule against reconciling them.
- False NO MENTION. The lighting example above. The model reads "under the lamp by the door" and does not file it under lighting. Search before you believe an absence.
- A dropped negative in a transcript. On a noisy emergency line, an automatic transcript can lose the word "didn't", turning "I didn't see his face" into its opposite. Any quote you rely on from audio is checked against the recording.
- Trusting the tidy table. A clean grid of quotes looks finished, and reviewers tend to check only the rows that look odd. Check a random sample of rows as well, say one in five, so errors that look normal still surface.
Translated statements need one extra rule: the table quotes the language of the original, and a translator or the original-language text settles any difference. Do not let a model translate and compare in the same step.
Where the hours go on a 1,380-page set
These figures are invented; time your own first case and replace them. By hand, a paralegal and a lawyer might spend about 21 hours on this set: seven on a first read of the 144 narrative pages, three on the index, six on the issue-by-document table, four on the contradiction table and one on the missing-items list. With the method above the same work takes about 12.5 hours. The lawyer reads the key originals in two hours, the index takes two and a half (one to run and prepare, one and a half to correct), the issue table four (one to run, three to verify), the contradiction table three and a half (half an hour to run, three to verify) and the missing-items list half an hour. Running the prompts is a small part of every line. The saving is real but modest, because verification stays human by design.
On cost, as of November 2026 ChatGPT Business and Claude Team are each $20 a seat on annual billing ($25 monthly) with a two-seat minimum, and neither trains on business content by default. That is about $40 a month for a small team, small against 8.5 hours of paralegal and lawyer time on a single set, but only if the firm accepts the checks above. Before paying for anything, run a short trial on a closed case and score it for accuracy, privacy and cost; the two-week trial scorecard for lawyers gives a way to do that. A dedicated review platform earns its price when sets run to tens of thousands of documents, which is a different problem from the one here.
Questions defence lawyers ask before using AI on discovery
Can I upload the prosecution's discovery to ChatGPT or Claude?
Only if the limits on the material, your client's consent and your professional rules all allow it, and only on a plan that does not train on your content. Business plans of ChatGPT and Claude don't train by default; personal plans need the training setting switched off. If any condition is unclear, ask your regulator's ethics line before uploading, not after.
Do I have to tell the court I used AI?
That depends on the court and sometimes on the individual judge. Some standing orders on generative AI ask filers to disclose use, occasionally naming the tool and how it was used, and some require a certificate that the filer checked the accuracy of everything the tool drafted or helped with. Check every court you appear before, and keep an AI-use log so you can answer accurately.
How do I prove a quote in the table is accurate?
Match it twice. Search the page-marked text for the exact quote, then open the original page and read the lines around it. If the search finds nothing, treat the quote as invented even when the idea is in the document. Log who checked it and when, so a second person can see what has been verified.
Should the AI tell me which witness is unreliable?
No. Ask it to describe differences and label them as conflict, tension, omission or addition, never to judge credibility. A difference can come from a poor translation, an officer paraphrasing, a clock that runs fast or an honest mistake. Deciding what a difference means, and whether it helps the defence, is advocacy and stays with the lawyer.
Further reads
- Best Legal AI for Criminal Law: A Small Defence Firm's Shortlist — Compare the tools a small defence firm might actually buy.
- AI Legal Chronologies for Family Cases: Events Linked to Evidence — Turn the indexed events into a chronology linked to the evidence.
- How to Summarise Bundles and Transcripts With AI Safely — General rules for summarising bundles and transcripts without losing detail.
- AI for Attorney Research: A Citation-Checking Workflow — A citation-checking routine for the legal research side of the file.
- AI Legal Brief Writing: A Draft and Cite-Check Routine — Draft and cite-check routine once the facts are verified.
- Claude or ChatGPT for a Law Firm: Which One to Pay For — Which general assistant suits a small firm, and why.
- ChatGPT Business for Law Firms: Seats, Privacy Settings and Cost — Seats, privacy settings and cost for a business plan.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Anthropic file-upload help page and vision documentation; ChatGPT Business and Claude pricing pages; published court standing orders on generative AI in filings (all checked 4 November 2026).