A software factory for go-to-market is a revenue engine built the way software is built: the logic written as code, reviewed as diffs, versioned, shipped by a pipeline, and operated by agents instead of by people clicking through tools. The output of the factory is not campaigns. It is capabilities that keep running after the person who built them moves on.
Two things have to be true for the model to work. The engine has to be reproducible, which is an engineering property. And the company has to be legible to the agents operating it, which is a knowledge property. Teams usually get the first and skip the second, then conclude the agents are not good enough.
The software factory approach to GTM #
The test for a factory is reproducibility: could someone rebuild this engine from what is written down, and would it behave the same way. Most revenue stacks fail it. The logic is spread across CRM filters, a workflow tool, three spreadsheets and the memory of whoever configured it, and no artifact describes the whole.
The factory model replaces that with four properties, each of which an engineering team would recognise:
- Declared, not clicked. The account model, the enrichment waterfall, the fit score, the assignment rules, the recurring workflows and the agents are all files on disk. GTM as Code is the full version of this argument.
- Reviewed before it runs. A change to revenue logic is a diff somebody approves, not an edit that takes effect on save.
- Deployed by a pipeline. A plan step shows what would change, an apply step ships it, and the previous version is one command away.
- Tested. Evals on the agent prompts, the way a test suite guards a refactor. LLM evals for revenue agents covers what to measure.
What this buys is not speed on day one. Clicking a workflow together is faster on day one. It buys the second year: a change you can reason about, a rollback that exists, and an engine an agent can operate, because text is the medium an agent is fluent in.
That last property is the one people underrate. An agent working through a browser is a screen-scraper with a good vocabulary. An agent working against declared primitives can read the current state, propose a change as a diff, and deploy it. The same engine is callable from the UI for the people who prefer one, from a CLI, from the API and from an MCP server for the agents, which is what makes a self-service agentic workspace a real thing rather than a slide.
The cost of not having a factory is measurable in hours. Writing up eight months of running more than twenty agents across go-to-market, SaaStr’s Jason Lemkin reports that he and a colleague each spend 15 to 20 hours a week managing them, stitched across six or seven tools with automation glue in between. That is what agent operations look like without infrastructure underneath: the agents work, and two senior people are the runtime.
Providing context to AI agents #
The second requirement is the one that decides output quality, and it is not the model. Lemkin’s summary of the same eight months is blunt about it: the more context the agent has, the better the output. Every team that has shipped an agent into a revenue motion arrives at the same finding from a different direction.
The reason is structural. A model knows how to write. It does not know that your ICP excludes companies under 50 employees unless they are Series A, that “enterprise” means something specific in your pricing, that one competitor wins on deployment speed and you concede it, or that a named account is in a legal review nobody should email into. That is tribal knowledge, and in most companies it lives in Slack threads, a deck, two Notion pages and the head of the person who has been there longest.
Making a company legible to its agents means moving that knowledge somewhere a machine reads at decision time:
| Knowledge | Where it usually lives | What the agent needs |
|---|---|---|
| ICP and disqualifiers | A deck, a Slack thread | A file stating who is in, who is out, and why |
| Personas and their problems | The heads of three reps | One file per persona, in plain words |
| Objections and answers | Call recordings nobody re-listens to | The objection, and the answer that worked |
| Proof points | A case study PDF | The claim, the number, and what evidence backs it |
| Competitors | A battlecard from last year | Where you win, and where you honestly lose |
In Cargo this is a primitive rather than a prompt. Context is a git-backed knowledge base of markdown that syncs into the workspace with one declaration:
import { defineContext } from "@cargo-ai/cdk";
export const context = defineContext({ path: "context" });
Everything under that folder is synced on deploy, a new file is picked up automatically, and the sync is additive, so what a non-technical teammate writes in the UI is not overwritten by the next deploy. Cargo derives a knowledge graph from it and serves that to every agent, play and tool at runtime, which is the property that matters: update the ICP once, and the research agent, the qualifier and the outbound draft all change with it. There is no second copy to keep in step.
Three rules make the difference between context and a document dump.
One claim per file, with a confidence level. A file that says a competitor loses on deployment speed should say how that is known: two customers said so on calls, or one prospect said it once. An agent that cites an anecdote as a fact will do it at scale.
Write the boundaries, not just the pitch. What you cannot do, who you decline, which segments are out of scope. Agents reproduce the shape of what they are given, so an unbounded context produces unbounded claims.
Keep it beside the code that uses it. Context in a wiki drifts from the engine within a quarter. Context in the repo moves in the same pull request as the play that reads it, and a reviewer sees both.
The result is an engine where the knowledge and the execution ship together, and where the honest answer to “why did the agent say that” is a file with a history rather than a guess about the prompt. That is the whole of the software factory idea applied to revenue: not more automation, but an engine somebody can read.
Frequently asked questions #
It is a revenue engine built like software: the account model, the enrichment logic, the fit score, the assignment rules, the recurring workflows and the agents all written as code, every change reviewed as a diff, shipped by a pipeline with a plan step and a rollback, and guarded by tests over the agent prompts. What comes out is durable capability rather than one-off campaigns, and since the whole engine is text, an AI agent can operate it without a browser.
Write the knowledge down in files the agents read at decision time: ICP and disqualifiers, personas, objections with the answers that worked, proof points with their evidence, and competitors including where you lose. Keep the files in the repo next to the logic that uses them, version them, and have the platform serve them to every agent at runtime so there is one copy, not one per tool.
Almost always because they are missing context rather than capability. A model can write; it cannot know your segment boundaries, your pricing vocabulary, the objection that actually kills deals or the accounts nobody should email. Teams running agents at scale report the same conclusion: the quality tracks the context supplied, not the model chosen.
Structured company knowledge first: ICP, personas, positioning, objections, proof points, competitors and explicit boundaries. Then record-level context from the unified data model: product usage, CRM history, enrichment and prior touches. Conversation sources such as call recordings and support threads are useful as the raw material those files are written from, rather than as an unfiltered feed.
One person on the team has to be comfortable with a repository, or content to let a coding agent do that part. Everything else is plain markdown: the ICP file, the personas, the objections. Non-technical teammates have the most leverage at the review step, because they are the ones who know whether what the file claims is actually true.