Privilege log builder — FRCP-26 log in seconds

Pick a collection, click Build. Kodori produces a privilege log (Bates / Date / Author / Recipients / Doc Type / Privilege Basis / Description) ready for production.

Updated 2026-04-29

/privilege-log replaces the standard paralegal workflow for producing a privilege log alongside withheld documents. For a 200-doc matter, that workflow runs ~8-12 hours at $80-120/hour. Kodori reduces it to: pick the collection, click Build, review.

**The flow:**

1. Pick a SOURCE — either a collection (matter, custom folder, "Privileged docs for production") OR a saved search. 2. Open /privilege-log. Toggle Source between Collection and Saved search. Pick the specific source from the dropdown. Set a Bates prefix (default "KOD") and a starting number. 3. Click **Build privilege log**. Kodori runs Haiku in batches over the docs you can read; each call classifies the privilege basis and writes an FRCP-26-style description. Saved-search sources re-run the underlying search every build, so the log stays current with the workspace. 4. Review the table inline. Click any row's document name to open the source doc and verify. 5. **Edit any row inline** — the *edit* link in the right column opens form fields for Bates / basis / description. Save persists per (source, document) so re-builds preserve corrections without re-classifying. The "edited" badge in the Bates column surfaces when a row has any saved override; "clear override" reverts to the latest Haiku output. 6. Click **Download .md** to export a GitHub-flavored Markdown table that pastes cleanly into Word (auto-converts to a real table), ECF filings, production cover letters, or Slack threads.

**What's in each row:**

- **Bates** — auto-sequenced from your prefix + start number, padded to 6 digits (KOD000001, KOD000002, etc.). - **Date** — the document's createdAt by default. Override per-row in v2. - **Document** — display name, links to /doc/<id> for review. - **Author** / **Recipients** / **Doc Type** — pulled from document metadata if extracted; "—" if absent. - **Privilege Basis** — Haiku-classified. One of: Attorney-Client, Attorney Work Product, Common Interest, Joint Defense, Settlement Negotiations, Not Privileged, Unable to Determine. - **Description** — 1-2 sentence FRCP-26-style description. Names subject, parties, and date at the level a court expects without reproducing privileged content.

**Privilege bases recognized:**

- *Attorney-Client* — communications between client and counsel for the purpose of obtaining or providing legal advice. - *Attorney Work Product* — materials prepared in anticipation of litigation by or for an attorney. - *Common Interest* — communications among parties with a shared legal interest. - *Joint Defense* — communications among co-defendants or co-parties for joint defense purposes. - *Settlement Negotiations* — protected as settlement-negotiation material under FRE 408. - *Not Privileged* — not protected. (Should not appear in the log unless you want to document non-privileged docs you reviewed.) - *Unable to Determine* — insufficient context. Flag for manual review.

**Permission-trimmed.** Docs you can't read skip the classifier silently. The skipped count surfaces above the table so you know whether the build covered everything you intended.

**Caps and costs.** v1 caps at 500 docs per build. Each doc costs one Haiku call (~$0.0005). A 200-doc matter is ~$0.10 of API cost and ~30 seconds of build time.

**Coming next:** PDF export with firm letterhead, batch produce-with-redaction wiring, per-row "regenerate this row" affordance for when Haiku gets a description wrong.

**Always review.** Privilege classification is the lawyer's call. Use the generated log as a starting point — verify each row before producing.