River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

ESI Protocol and Collection Plan

Four documents and three registers that fix what counts as one document in every source, then price every proposed search term.

Free download  ·  No account needed

Stipulated ESI Protocol  ·  section 3

What constitutes a document

Every bracket fills from a row in the Format Specification. A clause with no row behind it is a clause somebody copied from a form bank.

SourceOne document meansWindowDay boundary
Mail[message, attachments as family]n/an/a
Loose files[file]n/an/a
[Chat platform][message / conversation-day / responsive item plus a window][hours][cut where, in which time zone]
[Second chat platform][the same three choices, answered again][hours][cut where, in which time zone]
[Structured system][record with its comment history]n/an/a

Answered per source, not once for the whole protocol

Also stated whether overlapping windows merge  ·  what happens to edited messages, deleted messages and reactions  ·  whether a file shared into a conversation is a family member of the message that shared it  ·  what the production identifier is applied to, since a unit with no page has nothing to stamp.

The test for whether this section is specific enough: a different vendor, given the same export, would produce the same number of documents.

A model ESI order is a list of clauses about file types. Single-page TIFF, extracted text, a load file, natives for spreadsheets. Underneath all of it sits a question the clause list never asks, which is what one document is. Email settled that thirty years ago, since a message is a document and its attachments are its family. Chat settles nothing: a Slack export arrives as a ZIP where each conversation gets a folder and its messages are split by date.

Almadine Robotics collected 2,080,400 items across mail, cloud files, Teams, Slack, Jira and two laptop images. Counted as individual messages, that is the review population. Counted with Slack as its 38,600 channel-day files and Teams as its 9,240 transcripts, the population is 698,240. One sentence, worth 1,382,160 documents. On the Slack half by itself, 1,184,000 messages at 55 an hour is 21,527 review hours against 1,755 hours for the same content as channel-days, which at $48 is $1,033,309 against $84,218.

Terms get measured the same way. In that matter develop* reached 118,600 documents and returned a responsive one for $420, while the project code name reached 1,842 and returned one for $1.48. Only the unique-hit column and a sampled rate tell them apart. How the collection ran matters too, since Microsoft documents that a date-range query groups Teams messages into 24-hour transcripts while a keyword query takes twelve hours either side of each hit. What the terms reach splits two ways: produced, or withheld to a log written to the elements claimed.

Six sources, one grouping decision worth 1,382,160 documents, and eight terms that price themselves

The Custodian and Source Register, the Format Specification, the Search Term Register, and the protocol itself.

Almadine Robotics v. Grantsmoor Automation  ·  producing party

Custodian and Source Register

Illustrative rows for a fictional trade secret case. Filled before anything is negotiated, because a hit count means nothing until the population exists.

SourceCust.ItemsNative export unitRetention as foundStatus
Exchange Online11412,000Message, attachments as familyIndefiniteCollected
OneDrive and SharePoint11168,000FileIndefiniteCollected
Teams chat9246,000HTML transcriptIndefiniteCollected
Slack, legacy workspace71,184,000JSON, one file per channel per day90 days until 14 FebCollected
Jiran/a9,400Issue with its comment historyIndefiniteCollected
Two laptop images261,000Filen/aCollected
Journaling archive, decommissioned110UnknownUnknownNot yet assessed
Personal handsets, no enrolment40n/an/aNot exportable
Meeting recordings90n/a30 daysOut of scope
Total collected112,080,400as items, before anybody defines a document

Three reasons, kept apart because they look identical in a status update

Out of scope is a position about relevance. Not exportable is a fact about the system. Not yet assessed is neither, and it is the row that becomes a motion. The journaling archive is on the register at zero items rather than absent from it.

The Slack retention row is the one to send first. A 90-day window that ran until 14 February means anything older than 16 November is gone, and both sides need that fact before they argue about anything else.

Format Specification

One question per source, and it is not which file type. It is what counts as one document there.

SourceOne document meansWindowDay boundaryTest load
Exchange OnlineOne message, attachments as familyn/an/aPassed 26 Feb
OneDrive and SharePointOne filen/an/aPassed 26 Feb
TeamsOne transcript24 hours, date-range collection, overlapping windows mergeMidnight, EasternPassed 3 Mar
SlackOne channel-day file24 hours, as the export already shipsMidnight, EasternFailed 3 Mar
JiraOne issue with its commentsn/an/aPassed 26 Feb

What the two chat rows cost, read at each granularity

UnitDocumentsRateHoursAt $48
Slack as messages1,184,00055/hr21,527$1,033,309
Slack as channel-days38,60022/hr1,755$84,218

The Slack row failed its test load and that is what a test load is for. The export nests threaded replies and the first PDF render flattened them. It was retested on 7 March with the thread rendered inline under its parent, which is a sentence in the specification rather than a dispute in month four.

Whole population as messages: 2,080,400. As grouped: 698,240. The difference between those two numbers is one sentence in section 3.

Search Term Register

Eight of the 34 proposed terms. Four columns per row, because a hit count on its own gets used badly by both sides.

Term as proposedHitsUniqueRateCost per responsive doc
the project code name, as a phrase1,8421,84271.00%$1.48
product name OR its abbreviation24,1809,41024.00%$4.38
torque* w/5 calibrat*8,9403,12017.00%$6.18
gantry AND (spec OR tolerance)6,7202,09010.25%$10.24
resign* OR last day12,4005,8605.50%$19.09
compet*71,30038,9001.50%$70.00
market*96,40051,2000.75%$140.00
develop*118,60074,2000.25%$420.00

Unique hits is the honest column

develop* hits 118,600 and is responsible for 74,200. The rest of its hits are reached by other proposed terms, so removing it removes nothing there. An engineering company's mail says develop constantly, and every rate on this sheet came from a random sample of 400 drawn from the unique hits.

The counter-proposal, with the trade priced

Documents in reviewReview costResponsive docs
Three broad terms as proposed164,300$172,5151,154
The same three, narrowed by proximity11,670$12,2541,068
Difference152,630 fewer$160,262 saved86 lost, 7.5%

Offering that trade is a different act from refusing a term. Across the full list of 34, the terms as proposed reach 412,600 of the 698,240 grouped documents, and after six narrowings they reach 214,900.

The clauses those three sheets produce

Section 3 and section 6 of the stipulation, filled from the rows above rather than drafted from a form bank.

3. What constitutes a document

SourceUnitStated with it
TeamsOne transcript per 24 hoursDate-range collection; overlapping windows merge; cut at midnight Eastern
SlackOne channel-day fileThreaded replies rendered inline under the parent; cut at midnight Eastern
Bothapplies to eachEdits shown inline with both texts, deletions as a tombstone, reactions in a metadata field

6. Search terms

Each proposed term has been run against the collected population and reported with its hit count, its unique hit count, and the responsiveness rate of a random sample drawn from its unique hits with the sample size stated.

A party objecting on burden grounds states the unique hit count and the sampled rate rather than characterizing the burden. A party proposing a term that has been objected to may accept a narrowed form, and the narrowed form is reported with the same four columns so the trade stays visible.

Terms are a filter and not the obligation. A document that is responsive and not hit by any term is not excused from production because the list missed it.

What's in the pack

01

ESI Protocol

The stipulation itself, where every clause points at a row in a sheet. It is the thing the written responses then have to match.

02

Custodian and Source Register

One row per system: custodians, items collected, what the export natively produces, and the retention setting recorded as it was found.

03

Format Specification

What one document means in each source, with the window in hours, the day boundary, the time zone, and the date of the test load.

04

Search Term Register

Hits, unique hits, a sampled responsiveness rate with its denominator, and the review cost each term buys a responsive document for. Those counts are the population the discovery budget then multiplies.

05

What a Document Is Here

The method behind the grouping decision, and what each of the three units costs to review and to redact consistently.

06

Preservation Notice

Two versions. What a custodian has to stop doing, and the three export questions the systems administrator answers before collection.

07

Collection Plan

The sequence, the method per source class, and the item count you expected written down before the source returns a tenth of it.

08

A Term Without a Count Is a Guess

The space rule every prompt reads first, on measuring a burden instead of asserting one, and on what never goes in here.

How to use it

  1. 1

    Open in River, or take it blank

    Open the pack in River and hand it what your IT team has said about each platform, or take the Word documents and CSV sheets from the template library.

  2. 2

    Inventory the systems, not the documents

    What each platform is, who is on it, how many items it holds, what its export natively produces, and the retention window as found. Nothing is negotiated on this pass.

  3. 3

    Answer the unit question per source

    For each chat source: message, conversation-day, or responsive item plus a stated window. Then the hours, the day boundary, its time zone, and the treatment of edits and reactions.

  4. 4

    Price the terms, then draft

    Each proposed term runs against the population the first two steps defined, and the protocol drafts from the three sheets. A clause with no row behind it does not go in.

Frequently asked questions

Is this template free?

Yes, and there is no account or card in the way. The zip holds four Word documents and three CSV registers. Edit with AI is the other branch: the agent builds the source inventory from what your IT team can tell it, then works the format questions. The rest of the template library is free the same way.

What format are the downloaded files?

Word (.docx) for the four documents and CSV (.csv) for the three registers, in one zip. Excel, Numbers or Google Sheets opens the registers directly, and the protocol, the notice and the collection plan open in Word or Pages. There is no conversion step and nothing proprietary.

Do the federal rules say what counts as one document?

No. Rule 26(f)(3)(C) puts the form or forms of production into the discovery plan, and Rule 34(b)(2)(E) says a party need not produce the same information in more than one form. Form is named in the rule. The unit is not, which is exactly why it has to be named in the stipulation.

Does this collect the data or run the searches?

No. It produces the agreement and the numbers each clause rests on. Your vendor or review platform runs the exports and returns the hit counts, and the registers record what came back, including the sources that returned far less than the plan expected.

The other side already sent their protocol. Is this any use?

That is the better case for it. Their draft becomes rows in the Format Specification, one per source, and the omissions surface as blanks: no unit named for chat, no window in hours, no day boundary, no time zone. A redline argued from blanks reads differently from one argued from preferences.

What does Edit with AI actually do?

It signs you up, installs this exact pack as a private workspace, and puts the agent in front of an empty Custodian and Source Register. Send the pleadings and whatever IT has said about each platform, and the unanswered format questions come back before a single clause gets drafted.

What happens once the production actually arrives?

This agreement is the thing it gets measured against, one field at a time. Validating the load file, the images and the natives against each other is where a delivery that does not match the specification shows up, and the chronology built from the produced set starts from what survived.

Decide what a document is before anything is collected

Take the Word documents and CSV registers blank, or open this exact pack in River and hand it the systems list.

Edit with AI