Engagement-centric collections
Cabinets, drawers, projects — pick the kind that matches your firm's vocabulary. A 1040 source doc can sit in the engagement, the tax-year cabinet, AND the client cabinet without a duplicate copy of the bytes.
Partner-level confidentiality walls
Per-document deny rules enforced at the index. A walled-off partner never sees search results, dashboard counts, or API results for documents they're screened from. Deny rules always win.
Tax-year locking via legal hold
Apply a hold to a filed engagement. Held records refuse to delete, refuse to dispose under retention, refuse to downgrade sensitivity. Subjects stay on the hold record after release as audit evidence — useful for amended-return defense and PCAOB inspection.
IRS-aligned retention classes
Define classes ("Tax records — 7 years", "Audit workpapers — 7 years post-issuance", "Engagement letters — 10 years"). Records that elapse appear in /retention/review with defer + dispose actions. Auto-tombstone is intentionally NOT enabled in v0 — every disposal is human-approved.
Hybrid search across engagements
FTS for client names, EINs, and form numbers; embeddings for conceptual phrases ("documents related to passive activity loss"). Reciprocal Rank Fusion combines both. Sub-second across a 50,000-doc tax-season corpus.
Hash-chained audit log
Per-tenant, tamper-evident, the same log the agent acts against. Defensible at IRS audit, peer review, PCAOB inspection. The chain is per-tenant SHA-256 — tampering is detectable without re-running anything.
AP-invoice review with three-way + line-item match
Vendor invoices upload, Kodori extracts vendor / total / PO number / currency / line items in one Haiku call. Scans for the matching PO doc AND a receipt (packing slip / goods received note) sharing that PO. Computes match status (3-way matched / price-variance / awaiting receipt / 2-way only) with signed cents variance at the document level, plus per-line pairing (item-code → exact-description → line-number fallback) with per-line ✓ matched / ! variant / unpaired badges. Header summary on each row: "5 matched · 2 variant · 1 unpaired" — surfaces line-level posture even when document totals happen to reconcile (a vendor who billed twice for one item but waived another). Late-arriving receipts retroactively reconcile invoices in place. Approval / rejection emits webhook-deliverable events for ERP sync.
Pre-trained recognition for tax forms
Kodori's deterministic doc-type matcher already knows W-9, W-2, 1099 (any series), Form 1040 / 1120 / 1065, engagement letters, and standard receipts / invoices on sight — no model call required. Firms with custom record types ("partner basis schedules", "K-1 distributions") can extend the catalog.
DLP on every upload
Pattern-based regulated-PII scanning runs on every uploaded document — SSNs, Luhn-validated credit-card numbers, ABA-validated routing numbers, AWS access keys. High-confidence findings auto-escalate sensitivity to "regulated" before the document is even searchable; the doc never sits at the wrong tier between ingest and human review.
Retention auto-apply rules for IRS / SEC categories
Map docType patterns to retention classes once and Kodori suggests the right class for every uploaded 1099, W-9, engagement letter, or workpaper. Acceptance is still human (retention is regulated, you don't want auto-mutation surprises) — the rule just kills the "every upload needs a manual retention pick" tax.
External connectors — sweep client correspondence + workpapers from Outlook / Gmail / SharePoint / Drive
Most accounting firms split client document gravity across Outlook (formal correspondence + 1099/W-9 attachments), SharePoint or Drive (engagement workpapers), and Gmail (clients who refuse to use a portal). Connect all of them from /integrations: six vendors live (Slack, Gmail, Outlook, SharePoint, OneDrive, Google Drive). Messages and attachments index into the same FTS + pgvector retrieval as native Kodori uploads. The agent's `unifiedSearch` answers "every K-1 from the Brennan engagement" with hits from internal workpapers AND the Outlook chain where the K-1 first arrived AND the SharePoint folder where it was formally archived. Tenant-scoped. OAuth tokens encrypted at rest. GDPR Article 17 right-to-be-forgotten purge available when an engagement closes and the client requests their data deleted.