The Investor Packet
The Investor Packet is Memosa’s offering-grade deliverable: a branded Word document (and its PDF rendering) assembled from your approved memo, the deal’s parsed financials, and the right boilerplate for the deal’s structure and jurisdiction. It is the artifact you circulate to an investment committee or to limited partners.
Unlike the Canvas PDF — which is a faithful snapshot of the memo as edited — the Investor Packet is a composed offering document: a master template merged with the memo’s analytical prose, a per-asset-class risk section, and the applicable state legal notice.
What’s in the packet
Section titled “What’s in the packet”The packet is built from a master Word template (a .dotx) that Memosa fills with data drawn from three sources and merges with the right supporting sub-documents:
- Deal terms you’ve saved on the Investor Packet form (offering name, SPV name, capital stack, debt terms, return targets, and so on).
- Pipeline data — the
key_metricsanddeal_datathe deal-analysis workflow produced (cap rate, LTV, IRR, occupancy, archetype, and the rest). - Memo prose — the analytical sections your deep agents wrote and you edited: executive summary, financial analysis, market overview, risk assessment, exit strategy, and comparables.
On top of that, the assembler merges two sets of supporting sub-documents:
- A risk section matched to the asset class. Memosa ships dedicated risk sub-documents for multifamily, office, retail, industrial, hotel, self-storage, senior housing, student housing, mixed-use, development, and fund vehicles. The selector picks the one that matches the deal so the risk disclosures are specific, not generic.
- A state legal notice matched to the jurisdiction. Memosa ships per-state notices (Arizona, California, Colorado, Florida, Georgia, Illinois, Nevada, New Jersey, New York, Texas) and a generic fallback notice when the deal’s state isn’t one of those.
Deal-type auto-detection
Section titled “Deal-type auto-detection”The packet validates against two deal shapes — single property and fund — and Memosa infers which one applies automatically so you don’t have to set it by hand.
The inference runs a priority cascade: an explicit deal_type on your saved terms or in the pipeline data wins first; failing that, the presence of fund markers (a fund name, a target fund size, a fund sponsor) tips the deal to fund; otherwise it defaults to single property.
The deal type changes what the packet treats as recommended content. For a fund, the assembler expects fund identity and economics — fund name, target fund size, management fee, carried-interest terms, target distributable yield, investment strategy, investment period, and target markets. For a single property, it expects the capital stack, debt terms, market location, return metrics, and the property’s physical particulars. Missing recommended fields don’t block generation; they come back as warnings.
Generating the packet
Section titled “Generating the packet”You generate the Investor Packet from Canvas once the memo is Approved. The flow:
- Approve the memo. The packet path is gated — see Approval and Exports. If the document isn’t approved, generation is refused with a message naming the current state.
- The same gate also requires the memo to clear a readiness grade and to have no critical decision questions left uncovered. If a critical question is uncovered, the response names it (and the chart that would satisfy it) so you can close the gap precisely.
- Generate. Canvas assembles the DOCX and, for the PDF, hands it to the rendering service.
The DOCX is rendered to PDF by Gotenberg (a self-hosted document-conversion service) via its LibreOffice route. The generated DOCX is stored as a blob so it survives infrastructure restarts and so the exact approved bytes can be re-downloaded later from the deal’s approval-snapshot history.
The companion pitch deck
Section titled “The companion pitch deck”From the same approved content you can generate a companion slide deck. The deck is produced in two modes — a shorter pitch cut and a longer detailed cut — and it auto-detects the deal type to decide which slides to include (for example, fund-only slides appear only for fund deals). The deck is returned as a hosted presentation and, optionally, a PDF. Like the packet, deck generation requires the memo to be approved and to pass the readiness and critical-coverage gates.
Sources
Section titled “Sources”src/investor_packet/ip_generation_service.py—IPGenerationService: the generation lifecycle (validate Approved → load terms → load pipeline data → assemble → render DOCX → persist blob).src/investor_packet/generation_validator.py—IPGenerationValidator.infer_deal_type_with_metadata()(fund-vs-single-property cascade and the upstream-taxonomy collapse), the per-deal-type required/recommended field sets, and_require_approved_state().src/investor_packet/template_assembly.py+src/investor_packet/templates/— master.dotx, per-asset-classrisk_sections/, per-statestate_notices/, and how memo prose is merged into the template context.src/investor_packet/pdf_converter.py—GotenbergPdfConverter: DOCX → PDF via Gotenberg’s LibreOffice route.src/canvas/routes/ip_routes.py— the/ip/generateand/ip/generate-deckroutes, Editor auth, the 3-per-hour rate limit, and the approval / readiness / critical-coverage gate chain.