Skip to content

Known Limits and Errors

This page is deliberately candid: here are Memosa’s real limits, and here is what happens — and what to do — when you hit one. Every behavior described below reflects how the system actually works, not an idealized version.

The web-chat upload enforces these caps:

LimitValueWhy
Max file size50 MB per file Streamed to disk, never buffered fully into memory
Max files per upload20 files Guards against oversized multipart requests
Accepted formats.pdf, .xlsx, .xls, .csv Validated by extension at upload

What to do if you hit one:

  • File too large: split or compress. A 60 MB OM with high-resolution images can often be exported to a smaller PDF; an oversized workbook can be trimmed to the tabs that matter.
  • Unsupported format: convert first. A .docx OM should be exported to PDF; a Google Sheet should be downloaded as .xlsx or .csv. The upload accepts only the four formats above.
  • Too many files at once: upload in batches. The same conversation accepts additional uploads.

Web chat caps how many active (still-running, not yet finished) conversations you can have at once — 15 by default . Finished conversations (completed, errored) do not count toward the cap and are cleared lazily, so in normal use you will rarely see it.

What to do if you hit it: finish or let go of an in-progress conversation, or start fresh — completed conversations free their slot automatically.

If you expected to see a deal or a cross-deal pattern and do not, the most likely reason is that it belongs to a different team or you have not been invited to that deal. See Roles and Permissions and Collaboration.

Portfolio aggregates only report a statistic when at least three deals contribute to it. Below that threshold the insight is withheld rather than shown, so a metric can never be traced back to a single identifiable deal.

What to do: there is nothing to fix — this is intended privacy behavior. As your team finalizes more deals, more aggregates cross the threshold and appear. See Portfolio Insights.

Investor Packet (DOCX/PDF) and OMCMS exports require the document to be in the APPROVED state. If you try to generate an Investor Packet on a document still in DRAFT or EDITING, the export is refused with a clear “document not approved” message that tells you to approve first — it does not produce a partial or broken file.

There is also a safe-by-default behavior: if Memosa briefly cannot verify a document’s approval state, it refuses the export rather than risking an unapproved one and asks you to retry in a moment. That is intentional — the gate fails closed.

What to do: approve the document, then retry the export. Approval is reversible — you can reopen to EDITING afterward and approve again. See The Approval Gate, Investor Packet, and Document Lifecycle.

A normal generation runs 15–25 minutes; ingest runs 2–5 minutes before it. To recover from rare worker crashes, Memosa reclaims runs that exceed generous headroom — generation past 4 hours and ingest past 20 minutes — and marks them errored so the conversation is not pinned forever.

What to do: retry. A reclaimed run means the worker did not finish cleanly; re-running is the right move. If it recurs on the same deal, capture the deal name and what you uploaded and report it — see Diagnosing Problems.

In the spirit of honesty:

  • Only the four upload formats above. Word documents, images uploaded standalone, and other formats must be converted to PDF, Excel, or CSV first.
  • Cross-team / cross-organization sharing of cross-deal intelligence is not a feature — it is a deliberate isolation boundary, not a roadmap gap.

To make any issue actionable, note:

  1. Which deal (name or thread).
  2. What you uploaded — file types and roughly how many.
  3. Which step — ingest, generation, a specific section, or an export.
  4. The message you saw, verbatim if possible.

Memosa surfaces actionable messages rather than stack traces, so the message itself usually points at the cause. Pair this with Diagnosing Problems to narrow it down.

  • src/canvas/services/web_intake_config.pymax_file_size_bytes, allowed_extensions, max_files_per_upload, max_active_conversations, processing_stale_secs, generating_memo_stale_secs.
  • src/investor_packet/generation_validator.py_require_approved_state (409 when not approved; 503 fail-closed when approval state can’t be verified).
  • src/canvas/services/portfolio_insights_queries.pyMIN_DEALS_FOR_AGGREGATE = 3 (privacy threshold).
  • src/canvas/auth/permissions.pyROLE_HIERARCHY (team/deal access scoping).
  • src/canvas/models/section_lifecycle.pyDocumentState / DOCUMENT_TRANSITIONS (approval is reversible via reopen).
  • Native memory: feedback_fallback_is_still_bug.md (a fallback firing is a primary-path bug to report).