# MemoPop AI > MemoPop AI Multi-agent investment memo orchestrator. Turn a company name into an institutional-quality investment memo with 33 specialized AI agents — premium data sources, full citation trails, and firm-scoped branded exports. This splash is the public face of the MemoPop AI workspace. It surfaces 96 changelog entries (every meaningful change across the orchestrator engine, the desktop client, this site, and the workspace itself) and 18 context-v notes (specs, plans, explorations, and habits — the durable thinking that lives next to the code), rolled up from 4 peers in the `lossless-group/memopop-ai` monorepo. ## Reference - [Full-text search](https://splashmemopop-ai.vercel.app/search/): Pagefind-indexed across the changelog and workspace notes. - [Full corpus content](https://splashmemopop-ai.vercel.app/llms-full.txt): every changelog entry and context-v note concatenated as raw markdown — preferred ingest target for LLMs that can handle a single large document. - [Source repository (memopop-ai monorepo)](https://github.com/lossless-group/memopop-ai): the workspace this splash rolls up. - [Investment Memo Orchestrator](https://github.com/lossless-group/investment-memo-orchestrator): the engine — 33 agents, LangGraph supervisor, full citation pipeline. - [Lossless Group](https://lossless.group): the org that maintains this practice. ## Changelog Every meaningful change across the monorepo, grouped by source peer (orchestrator engine, desktop client, this site, workspace itself). ### memopop-ai - [Curation you can leave and come back to](https://splashmemopop-ai.vercel.app/changelog/memopop-ai/2026-08-08_01/): Approving 80 sources is not one sitting's work. The surface now autosaves, shows its progress, opens sources without waiting on a browser, and makes a pasted link name itself. - [A Source-Approval Surface in Memopop Native — Curation Before the Run, Not After](https://splashmemopop-ai.vercel.app/changelog/memopop-ai/2026-08-06_01/): Adds an `approving_sources` stage to the native app's flow machine, between defining the deal and generating the memo, plus the surface that fills it: approve / deny-with-reason / re-search / preview / add-by-paste, backed by SearXNG candidate discovery. Curation is frontloaded because a memo written against an unconstrained corpus cannot be fixed by approving sources afterwards. Also wires six new routes through the Rust dispatcher, which is an allowlist — new sidecar endpoints are invisible to the webview until they are added to it. - [Codify the VC analysis taxonomies the memo synthesis depends on — competitive, market capture, timeline scenarios — and propose the grill-me checkpoint](https://splashmemopop-ai.vercel.app/changelog/memopop-ai/2026-06-09_01/): Three sibling reference skills land under MemoPop's context-v/agent-skills/, each codifying a slice of the analytical structure a venture investor expects to see in an investment memo: how to classify competitors (stage rings × competitor types, with a noisewashing-vs-genuine-threat test), how to size the prize (SAM/SOM/TAM × 8-step penetration grid for revenue and EBITDA), and how to test the path to it (sustain/improve/plateau/reduce scenarios against MoM/YoY growth at the company's actual unit of sale). A companion exploration proposes the grill-me checkpoint — a per-section orchestrator pause where the user, not the model, picks the synthesis frame. All four artifacts also cp'd into the root lossless-agent-skills repo at context-v/skills/, where they sit as untracked files awaiting a separate commit in that submodule. - [MemoPop's splash speaks all three discovery protocols — llms.txt, sitemap.xml, robots.txt](https://splashmemopop-ai.vercel.app/changelog/memopop-ai/2026-05-11_01/): The memopop-site splash now serves the same machine-readable discovery surface that landed in context-vigilance-kit over the past two days, ported with the adaptations memopop needs — two content collections instead of one, provenance via `from` instead of `source_repo_slug`, and no publish gate to mirror. LLM crawlers get `/llms.txt` + `/llms-full.txt`, search engines get `sitemap-index.xml` + `robots.txt`, and the head of every page carries explicit `rel="sitemap"` and `rel="alternate" type="text/markdown"` hints. - [The Story So Far — memopop-ai From Empty Bun Workspace to Live Desktop Client](https://splashmemopop-ai.vercel.app/changelog/memopop-ai/2026-05-01_01/): First changelog at the monorepo level. Catching up the eight days that took memopop-native from `bun create tauri-app` to a fullscreen client driving the orchestrator's HTTP API end-to-end. ### memopop-native - [Open in Obsidian, Actually — Vault Detection and a Cleaner Deal Header](https://splashmemopop-ai.vercel.app/changelog/memopop-native/2026-05-17_01/): The 'Open in Obsidian' button was silently doing nothing. Turns out `open -a Obsidian /some/folder` is a no-op unless that folder *is* a vault — so we taught the app to walk up to the nearest `.obsidian/` and route through `obsidian://` URIs instead. While we were in there, the deal-workspace header that hosted that button got a long-overdue redesign. - [The Crew Shows Up — Live Character Indicators on the Run Panel](https://splashmemopop-ai.vercel.app/changelog/memopop-native/2026-05-03_01/): Six steam-punk character portraits — Financial-Analyst, Researcher, Writer, Editor, Fact-Checker, Scorecard-Generator — now sit above the JobView's 3-column grid during a memo run. The character whose stage is active glows with a slow breathing border; the rest stay visible but quiet. A live caption under the active character names the work in progress, swapping as the underlying milestones advance. The cast is authored in a single human-editable markdown file (`src/lib/characters.md`) — frontmatter holds names, stage mappings, default captions, and forward-compat agent-precise captions for v2. Mike retunes the wording without touching code. - [Brand Setup Lands — Paste a URL, Get a Populated Config](https://splashmemopop-ai.vercel.app/changelog/memopop-native/2026-05-01_01/): First post-memo onboarding step. Click 'Make this look like your firm →' in the JobView's success banner (or 'Brand setup →' in Settings), paste the firm's website URL, watch Claude tool-use its way through the homepage and a couple of linked pages, then review every field on a confirmation form before anything saves to disk. ~15s wall time, ~$0.05–0.15 per fetch via Haiku 4.5. Brand managers stay happy because every Claude guess — colors, fonts, logos, taglines — is editable with live swatches and logo previews before save. Output merges into io/{firm}/configs/brand-{firm}-config.yaml, deep-merging with the firm-creation scaffold so company.conventional_name is never clobbered. - [memopop-native Bootstrapped — Tauri 2 + Svelte 5 Inside the Bun Workspace](https://splashmemopop-ai.vercel.app/changelog/memopop-native/2026-04-27_01/): Stood up apps/memopop-native — a Tauri 2 desktop shell wrapping the investment-memo-orchestrator's CLIs — inside the existing memopop-ai Bun workspace. Verified prerequisites (Xcode CLI, Rust, Bun), updated Rust to current stable, scaffolded via bun create tauri-app with TypeScript + Svelte, brought the frontend stack to current within two safe waves (minor + coupled-major), added the four Tauri 2 plugins we'll need (shell, dialog, store, fs). Window opens, IPC works, baseline is clean. - [Settings + Firm Picker — First End-to-End Through the Transport Layer](https://splashmemopop-ai.vercel.app/changelog/memopop-native/2026-04-27_02/): First real feature in memopop-native: a Settings screen that picks the orchestrator repo path and the active firm, persisted across launches. Beneath the small UI, this lands the architectural seam — a Transport interface, a LocalTransport implementation backed by a single Rust api_dispatch command, and the first route (GET /firms) wired end-to-end. Every future action and query rides on this same rail; the eventual swap to a hosted Python server is now ~1 day of frontend work, not a rewrite. - [Full Onboarding Journey Lands — Outline Gallery, Firm Creation, Deal Capture](https://splashmemopop-ai.vercel.app/changelog/memopop-native/2026-04-27_03/): Built out the full onboarding user journey end-to-end against the Onboarding spec. Home view stops being Settings — it's now an outline gallery (or, on first launch, a single Browse-for-orchestrator panel). New users see comprehensive sample outlines first (the value), and only get charged onboarding taxes when they click 'Try this on a company →'. Firm creation is a small modal that snake_cases the input, scaffolds io/{slug}/configs/brand-{slug}-config.yaml with company.conventional_name only, and idempotently appends /io/*/ to the orchestrator's .gitignore. Deal capture (URL, optional name, deck, mode) collects inputs and confirms — the actual memo-generation runner is the next spec. New backend routes: GET /outlines, GET /outlines/{id}, POST /actions/create-firm. Auto mode session, no testing run yet. ### memopop-orchestrator - [Every URL was a guess — reconciling citations against what Perplexity actually retrieved](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-08-21_01/): Sonar returns the sources it really fetched on every call. We read none of them. 37% of a memo's citations were invented, and a third of the rest pointed at real pages with the wrong title. - [Fetched content stops evaporating — and a writer that deleted fields on every save](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-08-08_01/): Previews fetched a page, showed it, and threw it away. Now they file it. Found a bug on the way that was quietly stripping `internal_only` from real client sources. - [Membership, Not Reachability — Constraining Memo Citations to an Approved Source Set](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-08-06_01/): Every gate in the pipeline asked whether a URL resolves; none asked whether it was approved. That single missing predicate is why the researcher, enricher, and validator have been fighting each other for months — a fabricated URL that happens to be live passes every reachability check ever written. This lands the membership predicate in both cleanup gates, no-ops citation enrichment in codified mode, strips out-of-set sources from fact corrections, adds an LLM-free SearXNG candidate seeder, and exposes six sidecar endpoints for the approval surface. Also fixes a pre-existing bug that was carrying every dropped URL into the final draft. - [Onboarding Tooling and Discovered-Pattern Backlog from a Week of Firm Setups](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-06-14_01/): The last six days surfaced enough orchestrator-level work to log: a new agent-skill that codifies the end-to-end procedure for onboarding a VC firm (setup-new-firm), two CLI scripts for capturing DocSend decks programmatically, three issue-resolution write-ups naming real pipeline gaps the recent runs exposed (competitive research not flowing into prose, missing exit-comp agent, unsolicited investor verdicts), one new spec for per-deal analyst focal points, and a small skills-directory rename (skills/ → agent-skills/) to match the parent repo's convention. Also adds a changelog-scope discipline to CLAUDE.md so firm-private content stays out of the orchestrator's log. - [alpha-jwc Wired In as a Firm-Private Submodule](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-06-08_01/): Alpha JWC Ventures becomes the sixth firm wired into the orchestrator under the established io// private-submodule pattern. This is a structural addition only — registering the submodule path in .gitmodules and pinning the initial commit. The firm-private content (brand config, customized 9-section 7Cs outline, first-deal setup) lives in the alpha-jwc-secure repo and is documented in its own changelog there, per the CLAUDE.md scope rule. - [Section Files Stop Being Rewritten at Assembly — Semantic Citation IDs Survive](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-28_01/): Citation assembly was rewriting section files. Section files now stay the durable source of truth and keep their semantic IDs. - [Citation Assembly Hardening + Avalanche Goes Firm-Private](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-26_01/): Three reproducible citation-assembly bugs squashed. - [Naming the Gap Between Enrichment and Coverage](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-23_01/): Yesterday's v0.0.10 run made a problem legible: 33 hand-curated URLs went into the writer, 7 came out cited in the prose, 26 sat untouched. The fix wanted to be a new agent, and the first instinct was to name it 'Citation Diversity Enricher' and slot it between the writer and the existing 'cite' node. Today's planning work landed somewhere different — the existing cite node runs upstream of the writer (not after), the new agent's job is genuinely orthogonal to enrichment, and the right name is Citation Coverage Promoter. No code shipped; a plan got corrected before it generated a confused agent. - [URL Validation Grows a Body](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-22_01/): For months MemoPop's citation validator quietly skipped its URL accessibility check on almost every citation — because a date-format warning was enough to disable it. Two small changes put it back online, and upgrade the underlying check from a HEAD-only 'did this URL respond' to a GET-with-body-sniff that catches soft-404s and paywall stubs the prior pass had been rubber-stamping as valid sources. - [The Analyst Gets the Pencil](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-22_02/): Three things shipped today that together put the human analyst back in the middle of the citation pipeline: URL-keyed validation so the validator finally sees every source (not just the 6 that survived a per-file numbering collision), a Sources.md codified-mode loader that lets the writer compose only from analyst-approved URLs, and a new aggregate_sources agent that halts the pipeline mid-run with a curated draft so the analyst can rank and prune before any prose gets written. - [The Orchestrator Learns to Find a Team](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-08_01/): A new Firecrawl-driven pipeline walks any organization's website, finds the team page, extracts a structured roster, and back-fills missing socials by name. Phase 2 of Team-and-People-Metadata-Ingestion ships. - [Wire memopop-native to the FastAPI Sidecar — Tests, Rust Transport, Frontend SSE](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-01_01/): End-to-end integration of the desktop client with the orchestrator's FastAPI sidecar across four phases: pytest coverage on the server, a Rust transport layer with lazy spawn and /healthz poll, a TypeScript Transport implementation with SSE event subscription, and a Generate flow that streams milestones live into the UI. - [Milestones Out of the Logs, Files Into the Firm](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-01_02/): The sidecar gains structured milestone events extracted from agent prints, and a missing scaffold step that was sending firm-scoped runs to legacy output/. - [Hardened: Logs Land, Versions Bump, the Sidecar Heals Itself](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-01_03/): First contact with the desktop client surfaced four ways the orchestrator-as-a-service could go sideways. All four are closed in this pass. - [The Orchestrator Learns to Read a Website](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-05-01_04/): A new brand_fetch module drives a Claude tool-use loop over a firm's homepage, and two endpoints expose it. The HTTP surface keeps growing; agents stay untouched. - [The Orchestrator Got an HTTP Front Door](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-04-30_01/): The investment memo orchestrator has been a 30-agent Python CLI for months — you type a company name, wait 15 to 45 minutes, and a fully cited 50-file deal memo lands in `output/`. It just works. Now it also speaks HTTP. - [Interactive Terminal Application with Rich Framework](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-24_01/): New guided CLI application that walks users through memo generation, export, and iteration without requiring knowledge of individual commands, flags, or file paths. - [Release v0.5.3 — MemoPop Interactive CLI](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.5.3-release-notes/) - [Assure Proper Integration of Table of Contents](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-23_01/): The Table of Contents was consistently missing from final memo output despite the `toc_generator` agent running successfully mid-pipeline. Two separate ordering bugs caused the TOC to either never generate or get destroyed before finalization. - [Assure Consistent Workflow and Codify Docs — Fact-Check Pipeline & Source Catalog](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-23_02/): Introduces a three-step LLM-powered fact-check pipeline (extract → verify → correct) and a per-section comprehensive source catalog. The mechanical-only fact-checker is upgraded to use Perplexity Sonar Pro for independent claim verification and Claude for surgical corrections. - [Assure Disambiguation During Research](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-23_03/): Strengthens entity disambiguation to prevent research agents from conflating similarly-named organizations. Adds both improved prompt language and a mechanical post-synthesis override that forces correct company identity regardless of what the LLM returns. - [Enforce Correct Citation Spacing with Mechanical Agent](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-23_04/): New pipeline agent that mechanically enforces correct markdown citation spacing — no LLM, pure regex. Fixes the recurring problem of clumped, duplicated, and improperly spaced citations that affect Obsidian rendering, HTML/PDF exports, and readability. - [Introducing the One-Pager Generator](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-23_05/): New pipeline agent and standalone CLI tool that distills the full investment memo into a single-page visual summary. Serves as both a standalone deal teaser and a cover sheet for the full memo export. - [Release v0.5.0](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.5.0-release-notes/) - [Release v0.5.1](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.5.1-release-notes/) - [Release v0.5.2](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.5.2-release-notes/) - [Centralize Final Draft Path Logic & Bump Prefix to 7](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-17_01/): Consolidated all final draft file resolution into `src/final_draft.py` and bumped the canonical prefix from `6` to `7`. Previously, three agents each had their own inline glob logic to locate the final draft — now they all call shared utility functions. - [Table Generator CLI Tool](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-17_02/): New standalone CLI for running the table generator agent outside the full pipeline. Scans memo sections and structured state data for tabular data opportunities, generates markdown tables, and inserts them into section files. - [Deck Slide Classification & Placement Overhaul](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-10_01/): Rewrote the deck screenshot classification, naming, and injection system to fix two core problems: (1) Claude Vision was misclassifying slides because it only had 7 vague categories to choose from, and (2) the injection agent was spamming sections with duplicate, poorly-placed im… - [Competitive Landscape Research & Evaluation System (Initial Implementation)](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-03-10_02/): Two new agents that discover, evaluate, and classify competitors using Perplexity Sonar Pro. The system splits competitive analysis into two phases with opposing cognitive biases: the researcher uses **completion bias** to find as many candidates as possible, while the evaluator… - [Release v0.4.3](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.4.3-release-notes/) - [New Module: Research PDF Scraper](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-01-28_01/): A complete standalone module for parsing market research PDFs (McKinsey, CB Insights, PitchBook, Gartner, etc.) into markdown with properly formatted Obsidian-style citations. - [Citation Pipeline Fixes: Alphanumeric Key Support & Duplicate Section Prevention](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2026-01-27_01/): Fixes to the citation pipeline addressing two critical issues: (1) the writer agent's regex only matched numeric citation keys (`[^1]`) and missed alphanumeric keys (`[^deck]`), causing citation loss during polishing; and (2) the citation enrichment agent was appending duplicate… - [Citation Pipeline Fixes: Definition Preservation & Duplicate Key Handling](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-16_01/): Critical fixes to the citation pipeline that were causing citation definitions (the source references at the bottom of files) to be lost during processing. - [Release v0.4.1](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.4.1-release-notes/) - [Fix: 12Ps Scorecard Section Excuses in Final Draft](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-09_01/): This release fixes an issue where the 12Ps Scorecard Summary section (section 08) would contain LLM "excuses" instead of actual scorecard data. - [Refactor: Centralized Final Draft Module & Artifact Renumbering](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-09_02/): This release refactors final draft operations into a single centralized module (`src/final_draft.py`) and updates the artifact numbering scheme. - [Fix: Resume Workflow Uses Wrong Paths for Firm-Scoped IO](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-09_03/): When resuming a workflow with `cli/resume_from_interruption.py` for firm-scoped deals, the writer agent would use legacy `output/` paths instead of firm-scoped `io/{firm}/deals/{deal}/outputs/` paths. - [Dimension-Grouped Questions for 12Ps Framework](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-06_01/): Fixed a critical issue where Perplexity was returning garbage/meta-commentary for non-standard section names like "Opening" and "Organization" in the 12Ps outline. - [Scorecard Integration into Workflow](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-06_02/): This release adds automatic 12Ps scorecard integration to the memo workflow. Previously, the scorecard evaluator generated detailed scores in `5-scorecard/12Ps-scorecard. - [Disambiguation Exclusion List: Explicit Wrong-Entity Filtering](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-05_01/): This release adds explicit wrong-entity exclusion to the disambiguation system. Deal configurations can now specify a `disambiguation` array of URLs/domains that belong to **different companies** with similar names. - [Release v0.3.4](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.3.4-release-notes/) - [Release v0.3.0](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.3.0-release-notes/) - [Release v0.3.3](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.3.3-release-notes/) - [Firm-Scoped IO System: Complete Implementation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-12-02_01/): This release completes the firm-scoped IO system, enabling private, firm-specific configurations, inputs, outputs, and exports. The system allows each firm (e.g. - [Summary](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-30_01/): Added a comprehensive scorecard evaluation system that scores completed investment memos against a structured 12-dimension framework (12Ps: Persona, Pain, Proposition, Problem, Possibility, Positioning, People, Process, Product, Potential, Progress, Plan). - [Summary](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-30_02/): Began major refactor to reorganize the flat `data/` and `output/` directories into a hierarchical `io/` directory organized by firm and deal. This enables private git submodules for firm-specific data while keeping the orchestrator open-source. - [Summary](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-30_03/): Completed the firm-scoped IO path resolution system, enabling deals to be stored in `io/{firm}/deals/{deal}/` with automatic fallback to the legacy `data/` and `output/` directories. All agents now pass the `firm` parameter through the workflow. - [CLI Utilities for Fund and Company Memos](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-28_01/): Added a focused set of CLI tools to tighten the memo workflow end-to-end: - [Entity Disambiguation System Implementation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-28_02/): A memo for Sava, the YC trust-administration startup, confidently reported a $19M Series A led by Balderton — except that round belonged to Sava Technologies, a biosensor spinout. The data was real and well-cited, just about a different company. - [Canonical Draft Assembly Tool](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-28_03/): Three CLI tools each had their own way of stitching a memo back together, so citation numbers collided and the table of contents went stale. Now there is one assembler, and everything else delegates to it. - [Standalone CLI Tools for Post-Generation Enrichment & Evaluation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-28_04/): Three new CLI tools let you repair a finished memo without regenerating it: add citations to prose you already like, hyperlink every organization it mentions, or score the whole thing and see the breakdown. - [Summary](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-28_05/): Added explicit "Venture Capital mindset" framing to all memo-writing agent prompts to ensure generated content focuses on opportunity and upside rather than defaulting to Private Equity-style skepticism. - [Emerging Manager Outline with Proprietary Scorecard Vocabulary](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-27_01/): Created a comprehensive outline for evaluating LP commitments to emerging manager VC funds, integrating Hypernova Capital's proprietary 12-dimension GP evaluation framework directly into the memo generation system. - [Scorecard Agent & CLI Implementation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-27_02/): Implemented the Scorecard Agent and CLI tool to automatically generate Hypernova Capital's 12-dimension scorecards for emerging manager fund commitment memos. This completes the scorecard system introduced in changelog 2025-11-27_01. - [Dataroom Analyzer Agent System & Export Improvements](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_01/): Introduced a new multi-agent dataroom analyzer system for processing investment datarooms, plus improvements to trademark handling and export versioning. - [Competitive Extractor & Separated Artifact System](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_02/): Implemented Phase 2 of the Dataroom Analyzer: the Competitive Extractor. This extracts and synthesizes competitive landscape data from battlecard PDFs and outputs structured analysis as separate, numbered artifact files for better manageability. - [Cap Table & Financial Extractors](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_03/): Added two new extractors to the Dataroom Analyzer: Cap Table Extractor and Financial Extractor. These complete the core Phase 2 extractors for investment dataroom analysis. - [Traction Extractor](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_04/): Added the Traction Extractor to complete Phase 2 extractors (4 of 5). This extractor pulls customer metrics, revenue data, pipeline information, and partnerships from pitch decks and other traction-related documents. - [Team Extractor - Phase 2 Complete!](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_05/): Added the Team Extractor, completing all Phase 2 extractors (5/5). The dataroom analyzer now extracts comprehensive structured data from investment datarooms. - [Table of Contents Generator Agent](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_06/): Added a new TOC Generator agent that automatically creates a Table of Contents with working anchor links for the final investment memo. The TOC includes main sections (h2) and subsections (h3) that function in both HTML and PDF exports. - [Phase 3: Data Synthesis & Cross-Reference](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-26_07/): Added the Synthesizer module to cross-reference data across all extractors, detect conflicts, identify data gaps, and generate a unified view of company metrics with confidence scores. - [Project Restructuring: CLI, Tools, and Scripts Organization](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-23_01/): Major refactoring to organize 38 scattered Python files and shell scripts into logical directories, improving developer experience and project maintainability. - [Resume Workflow Implementation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-23_02/): Implemented checkpoint-based resume functionality to recover from workflow interruptions without losing progress or re-running expensive API calls. System now detects completed agents from saved artifacts and resumes execution from the last successful checkpoint. - [PDF Export Quality & Branding Improvements](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-23_03/): Enhanced PDF export quality with proper logo rendering, Unicode symbol support, and GHCP Partners brand configuration. Fixed critical rendering issues that caused logo distortion and citation symbols to display incorrectly in WeasyPrint-generated PDFs. - [Release v0.2.2](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/releases/v0.2.2-release-notes/) - [Tier 1 Anti-Hallucination System: Prompt Engineering Fixes](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-22_01/): Implemented comprehensive prompt engineering fixes to eliminate LLM fabrication of pricing, revenue, traction, and financial metrics in investment memos. - [Perplexity Premium Sources Integration: @Syntax Quality Control](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-22_02/): Integrated Perplexity's `@source` syntax into the research workflow to ensure high-quality data from premium sources like @crunchbase, @pitchbook, @statista, and @cbinsights. - [Tier 2 Anti-Hallucination: Fact-Checker Agent Implementation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-22_03/): Implemented the fact-checker agent to prevent hallucinated metrics and claims in investment memos. This agent verifies all factual claims against research sources, catching fabricated revenue figures, pricing data, customer counts, and other metrics before final memo assembly. - [Image-Based PDF Support: Batch Processing with Claude Vision API](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-21_01/): Complete implementation of image-based PDF deck analysis using Claude's Vision API with intelligent batch processing. This solves the recurring issue of Docsend-exported decks that contain only images with no extractable text. - [Perplexity Citation Integration: Research-First Architecture](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-21_02/): Complete integration of Perplexity Sonar Pro for section-specific research WITH citations as a core part of the memo generation pipeline. This fundamentally changes the architecture from "write then add citations" to "research with citations then polish. - [Major Architecture Refactor: Section-by-Section Processing](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-20_01/): Complete refactor of the enrichment pipeline to process memo sections individually rather than as a single monolithic document. This eliminates API timeout issues and enables proper citation management with Perplexity Sonar Pro. - [Overview](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-19_01/): Major architectural improvements to prevent API timeouts through section-by-section processing, plus comprehensive brand expansion with MaC VC assets and SVG logo support. - [Overview](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-18_01/): This session focused on building and refining a comprehensive export/conversion system for investment memos, enabling professional PDF generation with Hypernova Capital branding. - [Multi-Brand Export System](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-18_02/): Implemented a comprehensive multi-brand export system that allows managing and exporting memos for multiple VC firm clients from a single installation. - [PDF Edge-to-Edge Backgrounds & Brand Config Reorganization](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-18_03/): Solved a critical PDF rendering issue where page backgrounds didn't extend to all edges and content lacked proper per-page spacing. Discovered WeasyPrint's `@page background-color` property enables edge-to-edge colored backgrounds while maintaining proper content margins on every… - [Obsidian-Style Citation Consolidation for HTML Exports](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-18_04/): Implemented automatic citation consolidation in HTML exports to match Obsidian's footnote behavior. When Perplexity AI cites the same source multiple times using `[^2]` throughout the markdown, Pandoc was incorrectly converting each instance into a separate numbered footnote, res… - [Milestone: Complete Enrichment System + Deck Analyst Agent Implementation](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-17_01/): Four enrichment agents now run after the draft is finished — links, visualizations, socials, citations — turning plain prose into a memo with 19 organization hyperlinks and footnotes that actually resolve in Obsidian. - [Week 1 POC Complete](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-16_01/): Historical entry — Core Multi-Agent System, Templates & Style Guides, CLI Interface. - [Git Commit Message - Week 1 POC Complete](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-16_02/): Five specialized agents under a LangGraph supervisor, wired to live web search — the Week 1 proof of concept wrote a real investment memo on Aalo Atomics and scored 7.5 out of 10 against its own validator. - [Milestone: Artifact Trail System + Citation-Enrichment Agent](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-16_03/): Citations finally work. A new enrichment agent slots in between the writer and the validator, and every run now leaves a 16-file artifact trail you can audit step by step. - [Milestone: Deck Analysis Agent + Dual-Template/Mode System + Enhanced Citation Enrichment](https://splashmemopop-ai.vercel.app/changelog/memopop-orchestrator/2025-11-16_04/): The pitch deck now goes in first: a new agent reads the PDF before any web research runs, because proprietary beats whatever the internet knows. Separate templates for direct versus fund investments landed alongside it. ### memopop-site - [Splash upgrade — three-mode theming, peer-walking discovery, context-v archive, and Pagefind](https://splashmemopop-ai.vercel.app/changelog/memopop-site/2026-05-06_01/): memopop-site catches up to the astro-knots/splash conventions that crystallized after this site was originally built. The marketing prose stays; everything underneath gets rebuilt around two-tier tokens, a three-mode (light · dark · vibrant) toggle, a monorepo-aware discovery layer that auto-surfaces new apps, a brand-new /context-v/ archive alongside /changelog/, build-time Pagefind search across both, and a custom MemoMark logo. - [memopop-site Ships — GitHub Pages Live with a Submodule-Powered, Cross-Project Changelog Hub](https://splashmemopop-ai.vercel.app/changelog/memopop-site/2026-05-04_01/): From an empty Astro starter to a deployed splash page in a single session. Dark Lossless redesign, a click-to-expand GUI callout, and — the centerpiece — a permissive content-collection renderer that turns four scattered project-level changelogs into one unified timeline. - [Monorepo Foundation: Scaffold memopop-ai with Astro Site and SvelteKit App](https://splashmemopop-ai.vercel.app/changelog/memopop-site/2025-12-27_01/): Established the production-grade memopop-ai monorepo with Bun workspaces, Astro marketing site, SvelteKit web app skeleton, and shared Tailwind configuration. ## Context-V Specs, plans, explorations, and habits from across the workspace — the durable thinking that lives next to the code. Convention from [`lossless-monorepo/context-v`](https://github.com/lossless-group/lossless-monorepo/tree/main/context-v). ### memopop-ai - [Crawl for Better Team Structured Output](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/explorations/Crawl-for-Better-Team-Structured-Output/): The orchestrator writes prose about teams but never returns the structured roster the app needs to render cards: names, titles, photo URLs. - [Curating Only Valid Sources Across Runs](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/explorations/Curating-only-valid-Sources-across-Runs/): Downstream curation cannot fix what `citation_enrichment.py` invents upstream — 65 fabricated `example.com` URLs in a single run. - [Grill Me: A Per-Section User-Input Moment in MemoPop Runs](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/explorations/Grill-Me-Per-Section-User-Input-Moment/): A pause-point where MemoPop grills the user — the competitive section's synthesis frame is a judgment the model shouldn't make alone. - [Human-Curated Source Sets and Per-Firm RAG for Memo Narrative](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/explorations/Human-Curated-Source-Sets-and-Per-Firm-RAG-for-Memo-Narrative/): Keep Perplexity's take as quarantined commentary and route real research through validated harvesters plus a per-firm standing RAG store. - [MemoPop AI — Ideogram OG Image Brief](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/MemoPop-Creative-Brief/): A house-style Ideogram prefix and suffix any scene description plugs into, so splash, changelog, and context-v imagery stay one family. - [Moving an Agent Orchestrator to an API](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/explorations/Moving-an-Agent-Orchestrator-to-an-API/): The orchestrator is a Python CLI today. To plug it into memopop-native, we need an HTTP-shaped surface. Three options, ranked by effort and time-to-value. - [Preferred Format for Changelog](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/Preferred-Format-for-Changelog/) - [Separating Retrieval from Generation in Agent Pipelines](https://splashmemopop-ai.vercel.app/context-v/memopop-ai/explorations/Separating-Retrieval-from-Generation-in-Agent-Pipelines/): An agent that both searches the web and writes the prose fabricates URLs — 65 `example.com` links in a single memo run. ### memopop-orchestrator - [Introducing a Content Density Mode System](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/Introducing-a-Content-Density-Mode-System/): A system-level content mode toggle (redundant vs concise) that alters the behavior of the writer, table generator, and quality agents to match different firm preferences for information density and repetition. - [Introducing a Diagram Generator Agent](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/specs/Introducing-a-Diagram-Generator-Agent/): Add a diagram_generator.py agent that identifies opportunities to create visual diagrams explaining complex business concepts, starting with TAM/SAM/SOM market sizing and expanding to common finance and consulting visuals. - [agent-skills/setup-new-firm/SKILL](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/agent-skills/setup-new-firm/SKILL/): End-to-end procedure for onboarding a new VC firm into the memopop investment-memo orchestrator. Five phases — (1) brand acquisition via Firecrawl with analyst-override on the primary-color heuristic, (2) firm-directory scaffolding under io// with the canonical configs/templates/assets/deals layout and the strict brand-config YAML schema, (3) investment-framework outline selection (typically forking an existing outline like alpha-partners-7-Cs and customizing — section reordering, preambles, preferred-source swaps, stage-aware fallbacks), (4) first deal setup with deck-input handling (DocSend capture via cli/capture_docsend.py, ImageMagick screenshot stitching for NDA-gated decks, deal-config JSON, codified Sources.md), and (5) optional private-repo split via gh CLI with submodule re-add for confidential firm data. Use whenever the user says "I have a new client/firm/VC," "set up ," "add to memopop," "we need brand configs for ," or pastes a VC firm's URL with implicit intent to generate memos for them. Encodes lessons from the alpha-jwc onboarding on 2026-06-07 — don't trust Firecrawl's primary-color field blindly, verify against the logo palette; the deck analyst will extract DocSend watermarks as the company name if you feed it watermarked screenshots; agents leak firm-geography context into company-analysis prose (Alpha JWC = Indonesia VC → Portland-OR company memo gained Indonesia/rupiah risks); citation-enrichment fabricates example.com URLs even in codified-source mode — codified Sources.md only constrains the upstream researcher, not the downstream enricher. Cross-references [[crawl-fetch-ingest]] for portfolio/team data, [[sources-md-curation]] for the Sources.md file mechanics, and the open issues in context-v/issue-resolution/ ([[Limiting-or-Omitting-Investor-Judgement]], [[Competitive-Research-Generated-But-Not-In-Prose]], [[Including-Comparable-Exits-Valuations-IPOs]]) for known failure modes the new firm's first run will hit. - [Migrate `studies/open-specs-and-standards/` into its own pseudo-monorepo](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/plans/Migrating-Study-to-its-own-Pseudomonrepo/) - [Multi-Agent Orchestration for Investment Memo Generation](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/Multi-Agent-Orchestration-for-Investment-Memo-Generation/): An exploration into using AI supervisors and specialized agents to generate high-quality content and documents. - [PDF Parser Agent Specification](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/specs/Introducing-a-PDF-Parser-Agent/): A small specification for an agent and script to parse PDFs and convert them to markdown with properly formatted citations. - [Portfolio Listing Agent and Current Portfolio Section](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/Portfolio-Listing-Agent-and-Current-Portfolio-Section/): Design notes for the portfolio_listing_agent that builds a Current Portfolio subsection and structured JSON for LP-commit emerging manager fund memos. - [Reconciling Perplexity Citations Against Retrieved Sources](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/plans/Reconciling-Perplexity-Citations-Against-Retrieved-Sources/): Sonar hands us the sources it actually retrieved on every call, and we throw them away — so every URL in every memo is a guess. - [Research Agent Concatenates Multiple Sources Under One Citation ID — And No Validator Catches It](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/issue-resolution/Research-Agent-Concatenates-Multiple-Sources-Under-One-Citation-ID/): `research_enhanced.py` writes several sources onto one `[^N]:` line, so downstream parsers keep the first and silently drop the rest. - [Section Citations Orphaned When Definitions Live in 1-research/](https://splashmemopop-ai.vercel.app/context-v/memopop-orchestrator/issue-resolution/Section-Citations-Orphaned-When-Defs-Live-In-1-Research/): `consolidate_citations.py` reads `### Citations` only inside section files, so defs living in `1-research/` become orphans.