Office hours: Build your self-driving GTM engine·Oct 29, 9:00am PT, onlineRegister→
Cargo
  • ProductAgentsReduce manual effort and close more deals with AIPlaysAutomate every stage of lead management so you can move fasterToolsAutomate repetitive tasks so your team can focus on what drives impactData ModelsUnify, organize, and activate your revenue dataAppsCustom interfaces for your team, wired to your live GTMTerritoriesModel your team, territories, and capacity in one placeContextOne shared knowledge base for your team and agents
    Add-onsChrome ExtensionSell faster, right in your browserButtonTrigger AI agents inside your CRMFormTurn any tool into an embeddable formSlackTag Cargo in Slack. It does the GTM workGitHubPlan on every pull request, deploy on merge
    MoreProjectsDefine your entire GTM in codeCLIUse Cargo from your terminalMCPUse Cargo from Claude and ChatGPTDeveloper resourcesCargo API docs, OpenAPI spec, auth docs, webhooks, MCP serverAPI ReferenceExplore the Cargo APIDocumentationLearn how to use CargoIntegrationsConnected to your entire GTM stack
  • VeriffHow Veriff replaced MuleSoft with Cargo under NetSuite, Stripe and SalesforceAugmentHow Augment Code routes developer sign-ups to reps in under an hourWeights & BiasesHow Weights & Biases ships a new purchase signal in 2 days on CargoSee all
  • Pricing
  • Cookbooks
  • Blog
Sign in
Blog

Building a Software Factory for Go-to-Market

22 Sept7min read
AurelienAurelien

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:

KnowledgeWhere it usually livesWhat the agent needs
ICP and disqualifiersA deck, a Slack threadA file stating who is in, who is out, and why
Personas and their problemsThe heads of three repsOne file per persona, in plain words
Objections and answersCall recordings nobody re-listens toThe objection, and the answer that worked
Proof pointsA case study PDFThe claim, the number, and what evidence backs it
CompetitorsA battlecard from last yearWhere 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:

typescript
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.

~/run-it-on-cargo/

Build this workflow instead of reading about it.

Cargo is the GTM infrastructure your coding agent builds on: enrichment, scoring, routing and outreach, defined in code and run in production.

Start building
AurelienAurelienSept 22, 2026
On this page
  • The software factory approach to GTM
  • Providing context to AI agents
  • Frequently asked questions

Stay Informed with our
weekly Newsletter

Related articlesSee all articles
GTM Engineering
CI/CD for Go-to-Market: What It Means and How to Set It Up

CI/CD for GTM means every change to enrichment, scoring, routing and sequences ships as a pull request that is planned, checked, approved, deployed on merge, logged and reversible. What each software CI/CD step becomes for go-to-market, and how to set it up on Cargo.

AurelienAurelien·Nov 3, 2026
GTM Engineering
Require Approval Before a High-Impact Go-to-Market Change Goes Live

How Cargo holds a go-to-market pull request that would send or spend more than set limits until a reviewer adds the cargo:approve-impact label: the thresholds, what counts as high impact, who should approve, and what the gate does not catch.

AurelienAurelien·Nov 3, 2026
GTM Engineering
Test a Go-to-Market Change Before It Reaches Production

How to test a change to enrichment, scoring, routing or outreach before it runs on every lead: check the project offline, dry run an action, read the plan on the pull request, ship the play switched off and pilot it on 50 records, evaluate agents, and use a second workspace as staging.

AurelienAurelien·Nov 3, 2026

Build the self-driving GTM engine

Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.

Start building
Cargo
Backed byY CombinatorSOC 2 Type IICertified
LinkedinX

Product

AI AgentsPlaysToolsData ModelsAppsTerritoriesContextEnrichmentRoutingIntegrationsPricing

Add-ons

Chrome extensionButtonFormSlackGitHub

Build

DocsDeveloper resourcesCargo API docsCargo OpenAPI specCargo auth docsCargo webhooksCargo MCP serverProjectsClaude Code

Resources

ReportsBlogCustomer storiesCookbooksGTM skillsGTM EngineeringGlossaryCompareCargo x ClayCargo x WorkatoCargo x n8nCargo x DeeplineCargo x DefaultCargo x LeanDataCargo x UnifyCargo x ValleyCargo x Gojiberry

Company

ManifestoCommunityEventsJobsPartners DirectoryPartner Program

Legal

SecurityTerms of servicePrivacy PolicyRefundsDPASupport
© 2026 Cargo
 ////////    ///////    ////////     ////////    ///////
///         ///   ///   ///   ///   ///         ///   ///
///         ///   ///   ///   ///   ///         ///   ///
///         /////////   ////////    ///  ////   ///   ///
///         ///   ///   /// ///     ///   ///   ///   ///
///         ///   ///   ///  ///    ///   ///   ///   ///
 ////////   ///   ///   ///   ///    ///////     ///////

$ npm install -g @cargo-ai/cli