Lossless Changelog
product

MemoPop AI

lossless-group/memopop-aimain

2026-08-23 · 3 entries2026-08-21 · 1 entry2026-08-08 · 2 entries2026-08-06 · 2 entries2026-06-14 · 1 entry2026-06-09 · 1 entry2026-06-08 · 1 entry2026-05-28 · 1 entry2026-05-26 · 1 entry2026-05-23 · 1 entry2026-05-22 · 2 entries2026-05-17 · 1 entry2026-05-11 · 1 entry2026-05-08 · 1 entry2026-05-06 · 1 entry2026-05-04 · 1 entry2026-05-03 · 1 entry2026-05-01 · 6 entries2026-04-30 · 1 entry2026-04-27 · 3 entries2026-03-24 · 1 entry2026-03-23 · 5 entries2026-03-17 · 2 entries2026-03-10 · 2 entries2026-01-28 · 1 entry2026-01-27 · 1 entry2025-12-27 · 1 entry2025-12-16 · 1 entry2025-12-09 · 3 entries2025-12-06 · 2 entries2025-12-05 · 1 entry2025-12-02 · 1 entry2025-11-30 · 3 entries2025-11-28 · 5 entries2025-11-27 · 2 entries2025-11-26 · 7 entries2025-11-23 · 3 entries2025-11-22 · 3 entries2025-11-21 · 2 entries2025-11-20 · 1 entry2025-11-19 · 1 entry2025-11-18 · 4 entries2025-11-17 · 1 entry2025-11-16 · 4 entries2025-11-17 · 11 commits · 11,689 code · 1,020 changelog2025-11-22 · 13 commits · 5,591 code · 2,115 changelog2025-11-28 · 14 commits · 9,828 code · 1,450 changelog2025-11-30 · 13 commits · 5,455 code · 792 changelog2026-03-10 · 14 commits · 5,442 code · 3,635 context · 506 changelog2026-03-23 · 13 commits · 4,934 code · 696 context · 999 changelog2026-05-03 · 19 commits · 11,423 code · 384 context · 1,510 changelog2026-05-08 · 15 commits · 2,974 code · 1,453 context · 470 changelog2026-08-20 · 13 commits · 2,663 code · 765 context2026-09-08 · 14 commits · 3,130 code · 719 context2026-09-10 · 16 commits · 4,267 code · 730 context · 1,283 changelog
Jan 20252026Sept 2026
  • colour = whenJan 2025 → Sept 2026

583 commits · +276,329 lines across this project and its sub-projects

Code
181k66%
Context
67k24%
Changelog
28k10%
89 entries ·5 from MemoPop AI itself

The Slide Stenographer — One Document Per Slide, and the Archive Renamed Around It

The deck analyst batches five slides per call and merges them, which destroys slide identity by design. A second agent keeps the slide as the unit: render, transcribe verbatim, emit typed content, one markdown file each — plus date resolution, deck lineage, and a renamer that puts a portfolio archive on convention.

Michael Staton
  • Slide-Stenographer
  • Deck-Analysis
  • Claude-Vision
  • Document-Taxonomy
  • Date-Resolution
  • Deck-Lineage
  • +2

Chart and Imagery Collectors — Cropping What Text Cannot Carry

Two collectors run over transcribed slides and isolate the parts a reader has to see: charts with their axes and legends intact, and any visual that communicates a concept. Decoration is named and skipped. A deck-level index makes the result reusable without opening a single slide document.

Michael Staton
  • Visual-Collectors
  • Chart-Extraction
  • Imagery
  • Claude-Vision
  • ImageKit
  • Slide-Stenographer
  • +1

Curation you can leave and come back to

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.

Michael Staton
  • Memopop-Native
  • Source-Curation
  • Tauri
  • Autosave
  • Accessibility
  • X-Frame-Options
  • +1

A Source-Approval Surface in Memopop Native — Curation Before the Run, Not After

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.

Michael Staton
  • Memopop-Native
  • Source-Curation
  • Tauri
  • Svelte-5
  • SearXNG
  • Transport-Seam

Membership, Not Reachability — Constraining Memo Citations to an Approved Source Set

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.

Michael Staton
  • Source-Curation
  • Citation-Discipline
  • Codified-Sources
  • Anti-Hallucination
  • Allowlist-Enforcement
  • SearXNG
  • +1

Onboarding Tooling and Discovered-Pattern Backlog from a Week of Firm Setups

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.

Michael Staton
  • Onboarding
  • Agent-Skills
  • DocSend
  • Issue-Resolution
  • Specs
  • CLAUDE-Discipline
  • +1

Codify the VC analysis taxonomies the memo synthesis depends on — competitive, market capture, timeline scenarios — and propose the grill-me checkpoint

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.

Michael Staton
  • Agent-Skills
  • Competitive-Analysis
  • Market-Sizing
  • Growth-Scenarios
  • Investment-Memo
  • Grill-Me
  • +3

alpha-jwc Wired In as a Firm-Private Submodule

Alpha JWC Ventures becomes the sixth firm wired into the orchestrator under the established io/<firm>/ 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.

Michael Staton
  • Submodule
  • Firm-Private
  • Onboarding
  • Alpha-JWC
  • MemoPop

Naming the Gap Between Enrichment and Coverage

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.

Michael Staton
  • Citation-Coverage
  • Agent-Topology
  • Naming
  • Codified-Sources
  • MemoPop
  • Planning

URL Validation Grows a Body

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.

Michael Staton
  • Anti-Hallucination
  • Citation-Validation
  • URL-Validation
  • Source-Quality
  • Soft-404
  • Paywall-Detection
  • +2

The Analyst Gets the Pencil

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.

Michael Staton
  • Trustworthy-Citations
  • URL-Validation
  • Source-Curation
  • Human-in-the-Loop
  • Codified-Sources
  • Sources-Md
  • +2

Open in Obsidian, Actually — Vault Detection and a Cleaner Deal Header

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.

Michael Staton
  • DealWorkspace
  • Obsidian
  • URI-Scheme
  • Tauri
  • Sidecar
  • Header-Layout
  • +2

MemoPop's splash speaks all three discovery protocols — llms.txt, sitemap.xml, robots.txt

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.

Michael Staton
  • llms-txt
  • LLM-Discovery
  • SEO
  • GEO
  • Sitemap
  • Splash-Page
  • +1

The Orchestrator Learns to Find a Team

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.

Michael Staton
  • Firecrawl
  • Pydantic
  • Team-Extraction
  • Web-Crawling
  • LinkedIn
  • Structured-Output
  • +1

Splash upgrade — three-mode theming, peer-walking discovery, context-v archive, and Pagefind

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.

Michael Staton
  • Splash-Page
  • Three-Mode-Toggle
  • Two-Tier-Tokens
  • Pagefind
  • Context-V
  • Pseudomonorepo
  • +2

memopop-site Ships — GitHub Pages Live with a Submodule-Powered, Cross-Project Changelog Hub

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.

Michael Staton
  • GitHub-Pages
  • Astro-5
  • Astro-Content-Collections
  • Git-Submodules
  • GitHub-Actions
  • Bun-Workspaces
  • +7

The Crew Shows Up — Live Character Indicators on the Run Panel

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.

Michael Staton
  • JobView
  • Character-Cast
  • Agent-Personification
  • Svelte-5
  • Live-State
  • Markdown-Frontmatter
  • +2

Brand Setup Lands — Paste a URL, Get a Populated Config

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.

Michael Staton
  • Brand-Setup
  • Claude-Tool-Use
  • Anthropic-SDK
  • Multi-Step-Modal
  • Onboarding
  • Svelte-5
  • +5

memopop-native Bootstrapped — Tauri 2 + Svelte 5 Inside the Bun Workspace

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.

Michael Staton
  • Tauri
  • Tauri-2
  • Svelte-5
  • Bun
  • Bun-Workspaces
  • Vite-8
  • +4

Settings + Firm Picker — First End-to-End Through the Transport Layer

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.

Michael Staton
  • Tauri
  • Svelte-5
  • Runes
  • Transport-Layer
  • LocalTransport
  • IPC
  • +4

Full Onboarding Journey Lands — Outline Gallery, Firm Creation, Deal Capture

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.

Michael Staton
  • Tauri
  • Svelte-5
  • Runes
  • SvelteKit
  • Onboarding
  • Outline-Gallery
  • +6

Summary

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

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

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.

Summary

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.

Traction Extractor

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.

Resume Workflow Implementation

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.

Overview

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

This session focused on building and refining a comprehensive export/conversion system for investment memos, enabling professional PDF generation with Hypernova Capital branding.