Most of a go-to-market stack should be bought, even now that people are rebuilding theirs over a weekend with a coding agent. The part worth building with agents is smaller than those rebuilds assume, and the line runs through the stack step by step:
An agent earns its upkeep by making a decision your competitor’s agent cannot make, and plumbing hands every buyer the same inputs. Build the plumbing yourself and you get the decision everyone gets, plus the bill for keeping it running. A decision made on your own record is the only kind nobody can sell you, so it is the only kind worth building.
Building is worth it once a team has a record worth reading: enough closed deals, replies and rejected leads that a rule could be written from them. A team without one should buy everything and write its rules down first.
Empact Partners builds these agents, for the B2B software companies we partner with and for our own outbound. As a go-to-market consultancy, we sell the building, so read the verdict knowing that. It also costs us work: most of a stack should be bought, and a team with no record of its own has nothing for us to build on.
Anything a Second Vendor Can Sell You Is Plumbing
The test for any step is whether its output changes with the buyer. An email address is the same address whoever looks it up. So is a company’s headcount, a page scraped this morning, and the answer ChatGPT gives to a question about your category. Here is our own stack, step by step:
| Step | Bought or built | Why |
|---|---|---|
| Finding and verifying email addresses | Bought, from two vendors | The address is the same whoever finds it |
| Mailboxes, domains and sending | Bought | A domain that stops reaching inboxes is pulled the same day |
| Company data, scraped pages, job postings | Bought | A feed stays only while it finds companies the others miss |
| ChatGPT and Google AI Mode answers | Bought | Two vendors returned the same answers |
| Whether an AI answer speaks well of a brand | Bought since September, after we had built it | The same reading for every buyer |
| Whether a company is worth contacting | Built | Calibrated on companies we labeled from our own history |
| What a reply to a prospect should say | Built | Drafts follow rules written from our own conversations |
| Who must never get a cold email from us | Built | Rebuilt from our CRM every day |
| Which questions a partner’s buyers ask AI engines | Built | Set per partner, read by a person before we spend |
We measured the fourth row. The Empact Panel, our own build, buys those answers every week to measure how often AI engines name more than a dozen of our partners. In late September we put the same 555 questions in one partner’s category to two collection vendors.
The two sets of answers matched as closely as one vendor’s answers match when you ask it twice, for the partner and for eight of its nine competitors. The ninth came out lower on one vendor, which is why every report labels the week a vendor changes.
Between 8 and 9 October the vendor we bought ChatGPT’s answers from stopped running web search, and our citation check refused the answers collected after that. The fix was not code. We put the same 100 questions to the other vendor, a side-by-side that cost 54 cents, and moved every panel to it the same day.
The same test decides which plumbing we keep paying for. For our own outbound we bought two signal feeds in October. One sold funding rounds and found no company our free sources had not already found, so it is switched off. The other sold job postings and found two companies nobody else had, so it stays.
The platforms come out of this well. Clay’s own documentation describes its plugin and API as the way a coding agent reaches Clay’s data and the more than 200 vendors in its marketplace, for the same credits as the app. Build your agent to call that, and the upkeep of those 200 connections stays with Clay.
So the only place an agent of yours can decide differently is a step that reads something nobody else holds.
Build Where the Input Is a Record Nobody Can Sell You
The clearest case in our own outbound is the question of who is worth contacting at all. We answer it with a rubric calibrated on 191 companies we labeled ourselves: 101 that became partners or engaged with us, and 90 outside the kinds of companies we work with. On that set, 79 of the 81 companies it qualifies are right.
No vendor sells that labeling, because it is our history. We buy the model that reads each company’s pages against the rubric. The rubric, the labels and the thresholds are ours, and they are the reason the step is worth building at all.
The Panel works the same way. We buy the answers and build about a thousand questions for each market a partner sells in, from its own use cases and competitors. A person reads each set before we pay to collect the answers. We draft replies to prospects from documents we wrote after reading our whole history with 259 companies.
The judge we built, then bought
We got the line wrong once ourselves. Until September the Panel read the tone of each AI answer about a brand with a judge we had built. We replaced it with a bought model that read better against a blind test set, because whether a sentence speaks well of a brand is the same question for every buyer. It was plumbing all along.
Could a rule make the same call?
The sharpest challenge to the build half came in an April thread where a team described an agent that sorts intent signals before reps see them. One reply asked:
“Why would your ICP and stages be “too nuanced to hard code”?” — r/gtmengineering, Apr 2026
The question is fair, and the same reply made the point that automation platforms run rules well and for less. Most of our qualification is code: sectors we do not serve, sanctioned countries, a cap on staff. No rule can read a company’s homepage and say whether it sells software to businesses, so that judgment goes to a model, against our rubric.
If a written rule makes the same call, write the rule, in the platform you already pay for. Clay’s documentation lists scoring and routing among the workflows it runs, and a rule over fields it already holds belongs there.
A Home-Built Agent Is One More System Only Its Builder Can Fix
A narrow build is still a build, and somebody has to keep it alive. Part of that objection is true of us: in September we replaced a bought pipeline board with a CRM of our own. I am the only person who has changed its code, and it took 114 pull requests in its first month.
We built it because the board held stages people typed in. The import carried seven deals at “proposal” that had never been sent one. Our CRM works out a deal’s stage from our own mail, calendar, call notes and campaign replies, records the board never read. Keeping the CRM running is the price of reading them.
The best statement of that price came in May, from a team running a stack it had stitched together itself:
“It works fine but also breaks every time a source API changes, something downstream fails quietly.” — r/gtmengineering, May 2026
What breaks in that sentence is the wiring to the source APIs, the plumbing the team chose to connect and own. That is the half this verdict says to buy, and our own incident record has the same shape:
| What broke | Layer | How it ended |
|---|---|---|
| The ChatGPT answers we buy stopped searching the web, 8 to 9 October | Bought | Moved to the second vendor the same day |
| Four of our sending domains reached the inbox in 0 of 88 tests at Google, 3 November | Bought | Pulled from every campaign that night |
| A paid funding feed found nothing our free sources had missed, October | Bought | Switched off |
| A sync would have shrunk our do-not-contact list if one source went missing, 31 October | Built | Caught in code review and fixed 38 minutes after the commit |
| The Panel counted ads as citations, found in a September audit | Built | One citation reader on every panel, and ads never count |
The bought rows ended in a swap or a cut, because a second vendor sells the same thing. The built rows needed someone who knew what the output was for. A do-not-contact list exists to keep people out of a campaign, so a smaller one is a defect even when nothing throws an error.
The seam between a bought service and your build is yours either way. One email-finding service sent its refusals back to our pipeline as ordinary answers with no address in them, which reads exactly like “no address found.” That check is ours to write, whoever sells the addresses.
So the build stays narrow, and it gets an owner. The Panel has the shape we want: the consultants who run each partner’s panel collect its answers on their own machines and can merge a fix themselves. Our CRM is not there yet. The upkeep is real, so we pay it for one layer per job and buy everything under that layer.
Label Every Step Before Anyone Opens a Coding Agent
Before the weekend build, write down every step your go-to-market work repeats, from finding an address to drafting the follow-up. Mark a step bought if a second vendor could sell you the same output. Every step left has to answer two questions before anyone builds it:
A step that cannot answer both stays bought, however easy the build looks. A step with both is the only kind where an agent can pay for its own upkeep, and it is usually much smaller than the stack anyone proposed to rebuild.
That list is where Empact Partners starts its RevOps work with a partner, and we call the building half marketing engineering:
If your team is about to rebuild its stack and nobody can say which step reads a record only you hold, book a call with me, and we’ll see whether it is work we should do together.
