For Accounting Firms · 25–250 staff CPAs and audit shops

Tax workpapers your auditor can defend.

Kodori is an AI-native document management system built for CPAs and accounting firms — engagement-centric collections, partner-level confidentiality walls, IRS-aligned retention, tax-year locking via legal hold, and an audit-defensible event log that holds up at peer review.

Begin with Google →See every featureNo credit card · audit-defensible by default

Pain points · From real review sites and tax-season postmortems

What firms tell us about their current document tools.

"Client portal flow is so awkward we end up emailing source docs that should never have left the firewall."

CPA managing partner · r/Accounting

Kodori

Per-tenant email ingest address — clients forward source docs straight in. Sensitivity gets auto-classified to "restricted" or "regulated" on tax-related content. The agent suggests the engagement / tax-year collection. Nothing leaves the firewall in either direction.

"Six weeks past the filing deadline and someone edited a return PDF — now the workpapers don't reconcile to what we filed."

Tax season postmortem · LinkedIn

Kodori

Content-addressable identity. The filed return's SHA-256 IS its identity; you can't edit it without producing a new version with a different hash. Every version is immutable, every change is in the audit log, and "Compare" gives you a diff between any two.

"Conflicts between two engagement partners on the same client — accidentally surfaced source docs from one engagement to the other team."

AICPA forum

Kodori

Per-document deny rules in the same permissions table that grants explicit reads. Deny always wins, enforced at the index. A walled-off engagement team never sees a search hit, a dashboard count, or a /api/v1 result for the other engagement.

"PBC list lives in a spreadsheet that someone forgot to update — clients get nagged for docs they already sent."

Audit senior · r/Accounting

Kodori

Auto-classification on ingest tags every received document with a doc-type the agent can match against the PBC checklist. Ask the agent "what's still outstanding on the Brennan Industries audit?" and it tells you, citing the exact documents.

"IRS audit hit — assembling 7 years of correspondence and workpapers took two weeks of paralegal time."

Tax partner · LinkedIn

Kodori

Hash-chained audit log per tenant means the engagement record assembles itself. Use /api/v1 to export, or the per-document history timeline to walk through the chronology. Defensible at IRS audit, peer review, or PCAOB inspection.

"Retention policy says 7 years, but in practice we keep everything forever because no one wants to pull the trigger on disposal."

Records lead · accounting firm

Kodori

Define classes per record type ("Tax workpapers — 7 years", "Engagement letters — 10 years"). When a record's term elapses it lands in /retention/review with two human-confirmed actions: defer with a reason, or dispose with a reason. Held docs (active IRS audit, pending litigation) refuse disposal until released.

Built for the practice of public accounting.

  • 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.

Want the full picture? See every Kodori capability →

Questions accounting firms ask.

How do we get source docs in from clients?
Three paths: (1) the agent suggests a per-engagement ingest email address (forward attachments straight in, no portal needed), (2) clients you trust can sign in directly to their own scoped tenant view (Phase 4 client-portal pattern), or (3) you upload on their behalf via /upload. All three end up in the same audit-trailed engagement collection. Source documents from email automatically tag with sender + subject + message-ID metadata.
Can we use this alongside SafeSend / SmartVault / CCH?
Yes — most firms running Kodori today are running it parallel to an established intake / portal product. Kodori owns the document layer (search, retention, hold, audit, agent-driven retrieval); the portal layer continues to handle client-facing intake. Phase 5 ships read-connectors for the major portals so we can mirror their inbox into Kodori automatically.
Is the audit trail defensible at peer review and PCAOB inspection?
Yes. Per-tenant hash-chained event log with prev_hash chaining means tampering is detectable at the chain level, not just the row level. Soft-deleted records preserve their audit trail; held records refuse disposal. The chain is the artifact — peer reviewers can verify continuity end-to-end.
How does retention work for tax workpapers vs engagement letters?
Define a retention class per record type — Kodori doesn't prescribe a taxonomy. Common patterns: "Tax workpapers — 7 years", "Engagement letters — 10 years", "Audit support — 7 years post-issuance". Disposition is human-confirmed in /retention/review; an active legal hold (IRS audit, malpractice claim) refuses disposal until released.
What about SOX §802 if our clients are public?
SOX §802 mandates 7-year retention for audit workpapers and prohibits destruction during an SEC investigation. Kodori's legal-hold-deny-wins-on-retention model maps directly. Define a "Public-co audit support — 7 years (§802)" retention class; bind to a hold during any active investigation and the records refuse disposal even when their term elapses. The SEC 17a-4(f)(3) audit-trail-alternative conformance claim is published at /legal/sec-17a-4 — section-by-section mapping to the November 2022 amendment that modernized broker-dealer recordkeeping away from the WORM-only requirement.
How does the AI agent help during tax season?
Press ⌘K (Ctrl+K on Windows) and ask. "Show me everything from the Brennan engagement that hasn't been classified yet." "Did the K-1 from Acme Industries arrive?" "What's still outstanding on the Murphy audit?" The agent uses the same MCP tools the UI calls — same permission gates, same audit logging, no agent-bypass.

Drop an engagement folder. See what survives peer review.

Five minutes from Google sign-in to a working DMS on your own engagement, on a tenant isolated from everyone else.