"AI document management your auditor can defend." A cloud-native DMS for law firms and AEC teams where AI agents are the substrate — not a feature — with a hash-chained audit trail, deny-always-wins legal holds, an AEC vertical module, DLP + anomaly detection, and 77 typed MCP tools. Built on Next.js, Neon Postgres, and content-addressable blob storage.
77
MCP tools
50
DB tables
9
Monorepo packages
125K+
Lines of TS
Product
Kodori (kodori.ai)
Industry
Legal & AEC · DMS
Services
Full-stack, AI integration
Status
Private beta
The challenge
Document management built for litigation.
Mid-market legal and AEC firms run on documents — contracts, matters, drawings, specs, holds. The incumbents (iManage, NetDocuments, and other established DMS vendors) own the folder metaphor and bolt AI on top. When litigation hits, exports take weeks and audit trails are fragile.
Pain points identified
What's broken
Folder trees deep enough to lose anything; final_final_v3 chaos
Manual metadata entry across every document and matter
Legal holds enforced by policy, not software — mistakes are catastrophic
Retention schedules guessed at; auto-disposal too risky to enable
AI features bolted on; no way to ask "all NDAs from Q4 with Acme"
Audit trails exist but tampering is hard to prove or disprove
Goals defined
What we built
Make the AI agent the interface, not a feature — ingest, classify, file, retrieve
Replace folder trees with collections-as-views; documents live once
Hash-chained audit log: tamper-evident by construction
Deny-always-wins legal holds enforced at UI, MCP, and retention layers
Hybrid search: Postgres full-text + pgvector semantic via RRF
Reversible agent transactions — every mutation has an inverse
Our solution
AI agents as the substrate.
Kodori treats AI agents as the substrate of the DMS, not an upsell. Every action is captured as an immutable, hash-chained event. Documents are stored content-addressably so dedup is automatic. Legal holds, retention classes, collections, AEC artifacts (RFIs, submittals, drawings), DLP findings, and anomaly review are all first-class concepts the agent reads and writes through 77 typed MCP tools.
01
Hybrid Search via RRF
Postgres full-text and pgvector semantic embeddings (1536-dim text-embedding-3-small) run in parallel and combine via Reciprocal Rank Fusion. Plain-language queries, exact phrases, or concept-based retrieval — with the path that matched each hit.
Claude Haiku 4.5 proposes metadata after extraction — sensitivity, collection, keywords, document type. Every suggestion has Accept / Dismiss buttons; accepting writes a durable event so the audit log credits the human, not the agent.
Anthropic vision for PDFs and images
Pure-JS extractors for .docx / .xlsx / .pptx
Illustrator .ai sniffing for embedded PDF
Claude Opus 4.6 for reasoning, Haiku 4.5 for classification
03
Deny-Always-Wins Legal Holds
Bind documents to a matter or litigation hold and the system refuses to delete or downgrade sensitivity. The UI disables Delete, the retention queue disables disposal, and MCP tools enforce the same gate server-side. Three independent enforcement points.
Hold-aware UI controls
MCP tool guards mirror UI gates
Retention review queue respects holds
Object-lock on S3 / R2 backing storage
04
Hash-Chained Audit Trail
Every consequential mutation appends a row to the events table. Each row's prev_hash is the SHA-256 of the previous event — tampering is detectable. Same chain backs SOC 2, 21 CFR Part 11, GDPR, and FRCP discovery exports.
Append-only events table
SHA-256 prev_hash linkage
Reversible agent actions with inverse events
Replay-safe projection engine for views
Technical deep dive
Architecture and infrastructure.
Frontend & monorepo
Next.js 15.5 with shadcn/ui and Tailwind CSS 4. Turborepo + pnpm monorepo with 9 packages (core, db, events, agent, mcp, workflow, evals, migration, sdk) and 2 apps (web, sync-companion).
Server Components for live mutations; AI SDK streaming for chat
Zod at boundaries; internal code trusts internal types
Publishable @kumokodo/sdk client for external integrators
Backend & infrastructure
Next.js Route Handlers on Vercel for the API surface. Inngest for durable multi-step pipelines (extract → embed → auto-classify). Cloudflare Email Workers for HMAC-signed inbound email ingress.
Auth.js v5 (JWT, Google OAuth; Microsoft Entra scaffolded)
S3 / Cloudflare R2 with object-lock for legal holds
Per-tenant KMS keys for BYO-key encryption
Public REST API v1 with bearer-token auth + webhooks subsystem
Every agent capability is a typed MCP tool. The agent can't do anything the same tool wouldn't let the user do via the API. Read tools never mutate; write tools always emit events.
Neon's preview branches enable per-tenant isolation when enterprise customers require it — without leaving multi-tenant.
AEC Vertical Module
First-class RFIs, submittals, inspections, change orders, drawings, and project metadata. Tools to extract drawings + citations and link response documents to RFIs / submittals.
Kodori is in private beta with design partners in legal and AEC. Request access to evaluate, or contact us if you'd like a similar regulated-industry AI product built for your firm.