For Law Firms · Mid-market practices, 10–500 attorneys

The DMS your firm actually wants to use.

Kodori is an AI-native document management system built for the day-to-day reality of legal practice — matter-centric filing, ethical walls that hold at retrieval, legal hold deny-wins, and a search that finds the indemnification clause in a 90-page brief in under a second.

Begin with Google →Kodori vs iManage →No credit card · audit-defensible by default

Pain points · From real reviews of incumbent DMS products

What firms tell us about their current DMS.

"Filing an email takes six clicks through the Outlook plugin, and if you pick the wrong workspace you start over."

iManage · G2

Kodori

Forward to your firm's ingest address. The body becomes one document, every attachment becomes its own document, all auto-classified by sender, subject, and content. One action.

"NetDocuments search finds filenames but chokes on phrase matches inside long PDFs."

NetDocuments · TrustRadius

Kodori

Hybrid search: Postgres FTS for exact phrases AND vector embeddings for concept matching. "indemnification clause" finds the contract even when the word "indemnification" only appears once in a 90-page brief.

"We have 400 unique permissions in one matter and nobody can reason about who has access anymore."

SharePoint · r/sysadmin

Kodori

Per-document live access list with reasoning: role-based, creator-implicit, or explicit grant — each labelled with why. Deny rules always win. Ethical walls hold at retrieval time, not by convention.

"Lawyers email final_final_v3 outside the system because version history confuses people."

NetDocuments · G2

Kodori

Content-addressable identity. Every version is immutable, the current one is unambiguous, and "Compare" gives you a Word-style word-level redline (insertions in green, deletions in red strikethrough) on /doc/[id]/compare — no Litera license, no Word redline plugin, no third-party software.

"Discovery hit on Monday. By Friday we still don't have a defensible list of preserved documents."

Litigation paralegal · LinkedIn

Kodori

Open a hold with the matter reference. Bind documents in one click. Held records refuse to delete, refuse to dispose under retention, refuse to downgrade sensitivity. Subjects stay on the hold record forever as audit evidence.

"Bar audit asked us to prove a privileged email was never accessed by the conflicts wall. Spent three days assembling logs."

Legal IT · ILTA forum

Kodori

Every read, write, share, hold, and disposition appends a hash-chained event with actor + timestamp + payload. The compliance officer reviewing activity sees the same log the agent operates against. No parallel audit system to assemble.

Built for the practice of law.

  • Matter-centric collections — with default sensitivity + retention inheritance

    Cabinets, drawers, matters — pick the kind that matches your firm's vocabulary. A document can sit in many matters without a duplicate copy of the bytes. Configure default sensitivity and / or default retention class on a matter once: every doc filed there inherits automatically. Sensitivity is highest-tier-wins (a regulated PII doc dropped into a confidential matter stays regulated; an internal doc dropped into a regulated matter escalates to regulated). Retention is no-override (a doc with an existing 7-year retention won't silently shorten because someone moved it into a 3-year matter). Tell the agent in plain English: "set the Acme Corp matter to confidential and 7-year retention" and the rules apply on every future filing.

  • Ethical walls enforced at retrieval

    Permission rules apply inside the SQL query, not after. A walled-off attorney never sees a search hit, a dashboard count, or an API result for a matter they're screened from. Deny rules always beat allow rules.

  • Legal hold with subject-preservation

    Bind documents to a matter; held records refuse to delete and refuse to downgrade sensitivity. Subjects remain on the hold record after release as audit evidence — you can prove which documents were in scope and when.

  • Office add-ins (Outlook + Word + Excel + PowerPoint)

    All four task panes ship today — sideload via /office. Outlook files email + attachments from the ribbon with thread tracker, sensitivity override, and matter picker. Word + Excel + PowerPoint save as new doc OR new version with optional version label ("Final draft", "Sent to counsel"). One Kodori API key signs into all four.

  • Email filing — with or without the add-in

    Each tenant also has an unguessable ingest address (docs+<slug>@kodori.ai). Forward correspondence from any client or device — the agent auto-classifies sensitivity, suggests a matter, and proposes keywords. Useful for mobile, personal Gmail, or non-M365 clients.

  • TIFF, HEIC, and the formats that matter for legal

    CM/ECF still emits TIFFs from older districts. Court fax-scan deliveries are usually multi-page TIFF. Paralegals capturing exhibits at the courthouse on an iPhone get HEIC by default. Kodori reads all of them — single-page TIFFs and iPhone HEICs decode locally to PNG, multi-page TIFF fax-scans (typically 5-50 pages) wrap into a PDF and route through Claude vision in one call. No Azure or Google Document AI provisioning required to make a fresh tenant work with court bytes; cloud OCR remains the cheaper / higher-accuracy path when configured for high-volume scanned-record workloads.

  • Word-style redline compare, built-in

    Compare any two versions of a document on /doc/[id]/compare with word-level inline redline (insertions in green, deletions in red strikethrough) — the "Track Changes" reading legal reviewers expect. No Litera license, no Word plugin, no third-party software. Mode toggle for unified line-level view when a document is structured data.

  • AI document generation from your firm's templates

    Use any document with extracted text as a structural template — your firm's standard NDA, your engagement letter, your subpoena response template. Type instructions ("Draft a 1-year mutual NDA between Acme and BigCo, NY law"), Claude Opus drafts a new document preserving the template's structure but adapting context. Bracketed placeholders flag values for human review. Markdown output pastes into Word with formatting preserved.

  • Hybrid search that handles a long brief

    FTS for case numbers, citations, and party names; embeddings for conceptual phrases ("agreements about confidentiality" surfaces an NDA even when the word "NDA" never appears). Reciprocal Rank Fusion combines both.

  • Hash-chained audit trail

    Per-tenant, tamper-evident, the same log the agent acts against. Substrate underneath SOC 2 Type II, 21 CFR Part 11-capable, FRCP-ready. No parallel audit system to maintain.

  • Smart automations — programmable agent in plain English

    Type a one-line rule on /automations. "Every Monday at 8am, run my 'unfilled retention' saved search and email me the new hits" works as written. "Daily at 9am, ask the agent which contracts are expiring this month and email me the answer" works. "Every 4 hours, ask the agent which matters have new client correspondence and email partner@firm.com" works. Claude Opus compiles each rule into a typed schedule + action; an Inngest cron tick fires every 5 minutes and runs your matching rules. Programmable agent without writing code — no incumbent has the architecture (typed-tool agent + scheduled cron + email infra) to ship this. Permission-trimmed end-to-end.

  • Semantic legal-hold scoping

    Describe what the matter is about — "correspondence about staircase rebuild safety findings", "any drafts of the BigCo merger NDA" — and Kodori runs hybrid search to surface candidate documents. Mark unbound matches in one click; already-bound docs show with an "already bound" badge. The agent can drive the same flow from natural language and always asks for approval before binding.

  • Check-in / check-out for matter drafts

    Claim a soft edit lock before opening a draft brief. While the lock is held, no other associate can upload a competing new version — the system surfaces "Held by alice@…" instead. Uploading clears the lock atomically. Partner / admin can force-release a stuck lock; every state transition lands on the audit log.

  • Citation extraction on every legal document

    Click "Extract citations" on any document and Kodori scans the extracted text for cases (Brown v. Board, 347 U.S. 483 (1954) — against a curated list of 30+ reporters), statutes (28 U.S.C. § 1331), regulations (29 C.F.R. § 1910.146), procedural rules (Fed. R. Civ. P. 26(b)(1)), evidence rules (Fed. R. Evid. 803(6)), federal dockets (No. 21-cv-1234), and constitutional clauses (U.S. Const. amend. XIV, § 1). Repeat appearances collapse into one row with × N occurrences. Idempotent on re-run after a new version uploads. The extractor favors precision over recall — a citation index with 30 real and 0 noise beats 30 real and 8 noise. Citation pulls land on the audit log alongside every other matter event.

  • Citation alerts — email when a new doc cites a tracked authority

    Subscribe a citation at /citations/alerts and Kodori sends an email every time a new doc in the workspace cites it. Substring match catches parenthetical references; optional kind filter (cases / statutes / regulations / dockets / FRCP / FRE / constitutional). Permission-trimmed: alerts only fire for docs the subscriber can read. Pause / resume per alert; full audit trail of every fire. Subscribe the authorities you're tracking in active matters and Kodori pings you the moment opposing counsel's next brief lands citing them.

  • Per-matter citation rollup

    Once each brief in a matter has been run through the extractor, /collections/[id]/citations aggregates the index across every readable doc pinned to the matter. Group key is (kind, normalized) so the same case appearing in five briefs collapses to one row showing total occurrences across the matter + per-doc occurrence breakdown. Ranked by total occurrences. Filter chips for the seven kinds. Permission-trimmed: a screened attorney sees no citations from matters they're walled off from. Answers "what does this matter rely on?" in one screen.

  • Threaded annotations + @mentions on every document

    Notes thread one level deep on every document — root + replies in a clean indent. Tag a partner with @their.email@firm.com and Kodori sends them a notification with a deep link to the thread. Mark a thread "Resolved" when the question's answered (author, anyone @mentioned, or workspace admin can resolve and reopen). Resolution lives on the audit timeline so deposition prep can reconstruct the conversation around a record alongside the record itself. Permission-trimmed to the document's readers — a screened attorney never sees the thread.

  • Agent activity oversight

    Managing partners can answer "what did the AI do this week?" in one click — /agent-activity shows every action the agent has taken in the last 30 days, scoped by tool and document. No audit-filter syntax to learn. Useful for partner-level oversight when associates start using AI heavily.

  • Recognizes legal record types on sight

    Kodori's pre-trained pattern matcher recognizes NDAs, engagement letters, master services agreements, discovery letters, subpoenas, and court filings before any LLM call runs. Unambiguous documents tag consistently across the corpus.

  • DLP catches inadvertent PII / PHI in client uploads

    Every uploaded document is pattern-scanned for SSNs, Luhn-validated credit-card numbers, MRN-prefixed identifiers, and credentials. High-confidence findings auto-escalate sensitivity to "regulated" before the document is searchable — keeps a partner from seeing privileged client data sitting at "internal" because the upload form left it at the default.

  • Retention auto-apply rules for matter records

    Map "engagement letter" → 10-year hold, "discovery" → 7-year per-jurisdiction, "subpoena" → matter-life-plus-3 once and Kodori auto-suggests the right class for every new matter document. Acceptance is human; the rule just removes the "every upload needs a manual retention pick" tax that gets skipped under deadline pressure.

  • Public share links for external delivery at /share-links

    Generate a tokenized read-only URL for any document, collection, or recorded production. Recipient (opposing counsel, court, government agency) hits the URL — no Kodori account required — and sees a clean download view. Token is 32 bytes of crypto randomness; only the SHA-256 hash is stored. Default 14-day expiration; max 90. Every access bumps an access counter + emits a hash-chained audit event so chain-of-custody captures who saw what when. Production-source links serve the EXACT bytes recorded at production time even after later re-stamps. Revocable instantly. Replaces "zip the binder + Dropbox link + hope they got it" with a single audit-defensible URL.

  • Matter binder export at /matter-binder

    Pick a source — collection or production — and click Build. Kodori merges every PDF into a single binder with a cover page (matter name + doc count + Bates range), a table of contents with each doc's Bates BEG/END + page count, and the docs themselves in alphabetical order. Replaces the "drag every PDF into Acrobat and run Combine" pre-production workflow with one click. Production-sourced binders preserve the EXACT bytes that were originally produced, even after later re-stamps on the same docs.

  • Production set tracker at /productions

    Every Bates batch becomes a production record with recipient, date, Bates range, and the EXACT version hash of every doc delivered (so a later re-stamp doesn't retroactively change what the production says was produced). Click "Record as production" on the Bates-stamp result table after a batch — type recipient + matter ref + notes, click Record. The production lands on /productions; per-prod drill-in shows per-doc Bates BEG/END + page count + version hash with "archived" badges when the current doc version diverges from the produced one. recordProduction is an MCP tool — automations can record productions on trigger; external clients can script productions. Closes the partner-asked question "what did we produce on Jan 15 to opposing counsel?" in seconds.

  • Bates stamping batch for production at /bates-stamp

    Pick a source — collection or saved search — set a Bates prefix and start number, click Stamp. Kodori loads each PDF in alphabetical order, stamps the bottom-right of every page with a sequential Bates number, and saves each result as a new immutable document version. Each doc gets a contiguous BEG-END range; the privilege log's BEG numbers (built with the same prefix + start) match the produced PDFs' starting Bates exactly. Audit log captures every stamp event with the prefix/beg/end/pageCount metadata. Replaces the standard "open in Acrobat, run a Bates plugin, re-upload" production loop with one click that stays inside the firm's evidentiary system.

  • PDF redaction tool for partially-privileged production at /doc/[id]/redact

    Open any live PDF, click Redact. PDF.js renders each page with a transparent overlay where you click-and-drag rectangles. Each box persists immediately as a pending overlay (mutable). When ready, click "Burn redactions to new version" — pdf-lib rasterizes opaque black rectangles onto the bytes, flattens, and creates a new immutable document version. The original version is preserved in version history; the audit log captures every add / remove / burn event with the full box list as payload so chain-of-custody is intact. Coordinates are stored in PDF user-space units, not client pixels, so re-renders at any zoom align. Pairs with the privilege log builder for the discovery production workflow.

  • Conflict checking on matter creation at /collections/new

    When you open a new matter, Kodori runs a debounced hybrid search across existing matters as you type and surfaces potential conflicts inline. Two-pass detection: name-match against existing collection names + document-match (hybrid search on the description, mapping each hit back to its collection memberships). Amber warning panel with click-through to suspect matters and per-doc snippets explaining the link. Submit button refuses until you explicitly confirm "proceed anyway." Replaces the manual paralegal-runs-conflict-search pre-engagement step every firm does today.

  • Privilege log builder for discovery production at /privilege-log

    Pick a source — collection OR saved search — and click Build. Kodori generates an FRCP-26-compliant privilege log: auto-sequenced Bates numbers, classified privilege basis (Attorney-Client / Work Product / Common Interest / Joint Defense / Settlement / Not Privileged / Unable to Determine), and a 1-2 sentence FRCP-26-style description per row that names subject + parties + date without reproducing privileged content. Permission-trimmed before classification. Per-row inline editing with persistent overrides — Bates / basis / description edits persist per (source, document) so re-builds preserve corrections without re-classifying. Markdown export pastes cleanly into Word, ECF filings, and production cover letters. Replaces the ~8-12 hour senior-paralegal workflow standard on every production.

  • External connectors — search the matter across your firm's Slack, Outlook, and SharePoint

    Connect Slack workspaces, Microsoft 365 mail + SharePoint + OneDrive, or Google Workspace from /integrations. Messages and file attachments index into the same FTS + pgvector retrieval the rest of Kodori uses. The agent's `unifiedSearch` tool fires Kodori-document search + connector-content search in parallel — partners ask "find every reference to the Brennan staircase incident" and get hits from internal documents AND the Slack thread where associates first discussed it AND the email thread where opposing counsel raised it. OAuth tokens encrypted at rest (AES-256-GCM, scrypt-derived from AUTH_SECRET, BYO-KMS-extensible). Tenant-scoped. GDPR Article 17 right-to-be-forgotten purge available when a representation ends and the client requests their content deleted. The "did we discuss this in Slack three months ago?" question stops requiring three people to pause what they're doing.

Want the full picture? See every Kodori capability →

Questions law firms ask.

Can we migrate from iManage / NetDocuments?
Phase 5 (months 18-24) ships connectors for FileHold, SharePoint Online, OnBase/Hyland, Documentum, NetDocuments, iManage, Box, Dropbox, and Drive. Each connector supports shadow-read, assisted schema remap, dry-run, and dual-write — so you can mirror your current DMS, validate, and cut over without a freeze. Get on the design-partner list to influence which connector ships first.
How do you handle the conflicts wall and ethical screens?
Ethical walls are per-document deny rules in the same permissions table that grants explicit reads. The SQL engine evaluates deny first; deny always wins. A screened attorney does not see a search result, a hit counter, or a /api/v1 response for the walled matter. The wall is enforced at the index, not by convention.
Is the audit trail defensible in deposition?
Yes. Every consequential action appends an event with actor (user / agent / system), timestamp, payload, and a SHA-256 hash linking to the previous event. The chain is per-tenant, so tampering is detectable without re-running anything. Tombstoning a document leaves the bytes, the audit trail, and the hold record intact during the retention window — you can produce a defensible chain even for "deleted" records.
How does it integrate with Microsoft 365 / Outlook?
All four Office task panes (Outlook, Word, Excel, PowerPoint) ship today — sideload via /office. Outlook files email + attachments from the ribbon, with thread tracker (so you don't re-file a message you already filed), per-filing sensitivity override, and in-pane Collection picker (assign filed message + attachments to a matter in one shot). Word + Excel + PowerPoint save the active document as new doc OR new version of an existing one. Word-style word-level redline on /doc/[id]/compare ships built-in — no Litera license needed. Microsoft Entra ID SSO works today for sign-in. Email-to-DMS via per-tenant ingest address still works for clients without the add-in.
What about HIPAA, SOC 2, GDPR?
GDPR / UK-GDPR / CCPA technical compliance is live today — Article 15-22 rights mapped to endpoints at /legal/gdpr. EU AI Act Article 11 / 12 / 14 / 50 disclosure document is live at /legal/ai-disclosure. SOC 2 Type I is audit-pending — substrate is ready, auditor engagement starts on revenue trigger or funding event; Type II sequenced after Type I (12-month observation window). HIPAA + ISO 27001 are customer-anchored — BAA chain is contiguous with HIPAA-eligible sub-processors today, formal review kicks off when a healthcare or EU-enterprise contract anchors the engagement. We will not pretend to be certified — see /security for the honest cert table.
Can the AI agent be locked down per-matter?
The agent uses the same MCP tool catalog the UI calls and the same permission gates. A user with no read on a matter cannot ask the agent about it — there is no agent-bypass. Every agent action emits an event with actorKind="agent" so you can answer "what did the AI do this week on this matter?" with a single audit-log filter.

Drop a folder. Ask the agent.

The whole flow takes about five minutes. We’ll show you a working DMS on your own documents, on a tenant isolated from everyone else.