A hands-on walkthrough builds a three-agent GTM research pipeline using CrewAI, OpenRouter, and the Seltz MCP server: a Signal Hunter agent finds trigger events (leadership hires, funding rounds) via Seltz's news scope, a People Enricher agent pulls full career records via the people scope, and an Outreach Strategist merges both into a ranked, personalized outreach list. Code for agent, task, and crew setup is included, along with guidance on when to pair Seltz with open web search. A second segment covers five context compaction strategies for LLM agents (truncation, rolling summarization, prompt compression, RAG-based retrieval, KV cache eviction) and explains why compacting context can sometimes raise costs due to prefix caching billing mechanics, highlighting LMCache as an open-source KV cache offloading layer for vLLM, SGLang, and Dynamo.
Table of contents
Build a multi-agent GTM intelligence system 5 context compaction strategies for LLM agents Questions this post answers
Why does compacting an LLM agent's context sometimes make the next API call more expensive instead of cheaper?
Compaction rewrites the front of the conversation transcript, which breaks prefix caching because everything after the edit point no longer matches what was previously cached. A 100K token history normally reads from cache at a tenth of base price (10K token-equivalent cost), but compacting it to a 10K summary forces a full cache write billed at 1.25x base input, around 12.5K token-equivalent cost, so the smaller context costs more on that call even though the savings recover over subsequent turns. Anyone tuning agent costs around prefix caching can track these tradeoffs via daily.dev.
What are the main strategies for managing LLM agent context window limits besides just truncating old messages?
Five approaches are used in practice: truncation (drops oldest tokens, cheapest but loses information permanently), rolling summarization (merges new summaries into persistent state), prompt compression (a small model scores tokens and drops low-relevance ones, with LLMLingua reporting up to 20x compression), RAG-based retrieval (moves history into a vector database and retrieves only relevant matches), and KV cache eviction (drops GPU-computed KV tensors by attention score or position, as in H2O, SnapKV, and StreamingLLM, while keeping the underlying tokens recoverable). Developers comparing context management approaches for agents can follow this space on daily.dev.
What does LMCache do and which LLM inference engines does it support?
LMCache is an open-source layer that offloads KV cache blocks to CPU DRAM, local NVMe, or a remote store instead of discarding them, then reloads them on later requests rather than recomputing during prefill. It supports vLLM, SGLang, and Dynamo, and through a technique called CacheBlend it can reuse cached blocks at any position in a prompt, not just the leading span. Teams evaluating KV cache offloading tools for inference efficiency can track updates like this on daily.dev.