Skip to content

Approval and Exports

Every Memosa deal moves through three document states in Canvas: Draft, Editing, and Approved. Approval is the moment you, as the analyst of record, sign off that the memo is ready to leave the workspace. It is also the gate: the Investor Packet and the companion pitch deck will not generate until the document is approved, and the approval moment is what mints the immutable export snapshot you can return to later.

This page explains exactly what approval does, what it unlocks, what stays available regardless, and how to reopen a memo to edit it and approve again.

A Canvas memo is always in exactly one of three states:

StateWhat it meansHow you get here
DraftFreshly generated from the pipeline; you haven’t edited it yet.The memo lands here when deal analysis finishes.
EditingYou’ve made at least one change.Set automatically on your first save.
ApprovedYou clicked Approve Memo — the memo is signed off.Approve from the review panel once the document passes the readiness checks.

The transitions are deliberately narrow. Draft can only move to Editing; Editing can only move to Approved; and Approved has exactly one way back — a reopen to Editing.

Draft ──▶ Editing ──▶ Approved
▲ │
└──────────────┘
(reopen)

There is no separate “exported” or “generating” state. Generating a PDF or an Investor Packet does not change the document’s state — an export is a read-only action taken against an approved memo, not a state of the memo itself. (If you have an older deal whose stored state still reads exported from a previous version of Memosa, Canvas silently treats it as approved when the session loads, so nothing breaks.)

Approving the memo is what makes the offering-grade deliverables available:

  • The Investor Packet — the branded DOCX (and its PDF rendering). See The Investor Packet.
  • The companion pitch deck — the slide deck generated from the same approved content.

Both of these are blocked while the document is in Draft or Editing. The block is enforced server-side, not just hidden in the UI, so there is no way to circulate an LP-facing packet from an un-approved memo.

When you request an Investor Packet, Canvas checks the document state before doing any work. If the state is anything other than Approved, the request is rejected with a clear message naming the current state:

Document must be in APPROVED state to generate Investor Packet. Current state: editing.

The same approval check guards the pitch-deck generation path and the deck-content preview, so the entire Investor-Packet surface is consistent: approve first, then generate.

Two things do not require approval:

  • The Canvas PDF export is a read-only snapshot of the document as it stands and can be produced in any state. It renders an “approved” seal only once the memo is actually approved. See Canvas PDF Export.
  • Reading, commenting, and editing the memo are always available to collaborators with the appropriate role.

You approve from the review panel once the memo is ready. Approval is also where readiness pays off: the Investor-Packet path additionally requires the memo to clear a readiness grade and to have no critical decision questions left uncovered, so that what leaves the workspace is a complete offering document. If a critical decision question is still uncovered, the export tells you precisely which one — and which chart would satisfy it — rather than failing with a vague error.

Each time a memo transitions into Approved, Canvas mints an approval snapshot: an immutable record of that approval carrying the Canvas memo PDF (and, once you generate it, the Investor Packet PDF too). You can list these snapshots per deal and re-download the exact bytes that were approved at a given moment — useful when a deal is approved, reopened, edited, and re-approved, and you need the earlier version.

Approved is not a dead end. If you need to change something after sign-off:

  1. Reopen the memo. This is the single backward transition — Approved returns to Editing.
  2. Make your edits as normal.
  3. Approve again when you’re done.

Reopening is the only way to move an approved memo backward, and it exists precisely so that approval never traps you. Each new approval mints a fresh snapshot, so the history of what was approved when is preserved.

Who can do what is governed by deal roles (Owner, Editor, Commenter, Viewer). Generating an Investor Packet or pitch deck requires Editor access or higher; exporting the Canvas PDF is available to any collaborator including Viewer. Superadmins are treated as Owner on every deal. See Roles and Permissions for the full hierarchy.

  • src/canvas/models/section_lifecycle.pyDocumentState enum (Draft / Editing / Approved) and DOCUMENT_TRANSITIONS (the three allowed transitions, including the single Approved → Editing reopen).
  • src/canvas/services/session_manager.py — legacy "exported" document states coerced to "approved" on session restore.
  • src/investor_packet/generation_validator.py_require_approved_state(): the 409 ip_document_not_approved block, and the 503 fail-closed paths when the approval state can’t be verified.
  • src/canvas/routes/ip_routes.py — call sites that enforce the approval gate before generating the packet, the deck, and the deck preview; Editor-level auth; the readiness and critical-uncovered gates.
  • src/canvas/routes/export_routes.py — Canvas PDF export and approval-snapshot history endpoints (PDF available in any state; snapshots minted on each approval).