Three job descriptions can claim one backlog. Marketing ops, GTM engineer, and marketing engineer each promise to fix the routing, build the outbound lists, and put agents to work, and when your sales team says the leads are bad, all three postings sound like the cure.
This page is for the marketing leader with one technical hire approved and no way yet to choose between them. It shows how to tell which of the three you need from the work your team already has, and in what order to staff it.
Empact Partners works from inside the go-to-market teams of B2B software companies, as their consultancy, and since 2020 has built these systems with partners and given each one an owner. That is the revenue operations work of our RevOps workstream: routing, lead data, and the workflows that carry a signup to a closed deal.
The Three Titles Name Three Things To Own After Launch
Ask practitioners what a GTM engineer does and the answer changes with the company’s stage and team. The marketing engineer barely has a definition yet. What holds still is what each role owns once something is live, and written down, the three answers barely overlap:
| Role | Owns once live | Writes to | How it fails |
|---|---|---|---|
| Marketing ops | The record: which tool holds which fact, the fields, the lifecycle stages, the routing | The CRM and the tools wired to it | A good lead lands in the wrong stage or with the wrong person |
| GTM engineer | The pipes into the record: list criteria, enrichment, triggers, the check against the CRM | New accounts, contacts and sequences | Wrong-fit accounts and duplicates enter a clean CRM |
| Marketing engineer | Agents for work a person repeats: research, drafts, reports, measurement | Something a person reads, or one of the two rows above | A confident wrong output that nobody checks |
The record comes first in the table because the other two read it. When a process breaks, marketing ops asks which system should own the fix and how to configure it. GTM engineering asks which accounts the fix should touch, and a decision that changes how hundreds of them are picked or routed is its work rather than a seller’s.
Marketing engineering is what we call building agents for repeated work. At Empact Partners it is how we deliver work across every workstream, with a named consultant directing each agent and owning what it produces. Two of ours run every week:
“Agent” is not a fourth column, though. The prospecting agent we built for SystemOne is an agent, and what it produces is new accounts for outbound, so once it runs it is GTM engineering work, whoever built it. Sort the work by where it lands.
Trace Twenty Bad Leads Back To The Column That Failed
Start from the complaint you already have. A lead sales calls bad went wrong in one of three places, and each place belongs to one column. Counting which one turns an argument between sales and marketing into a staffing decision, and it takes an afternoon:
The last kind is the one teams miss, because nothing in the CRM changed. The error moved into a sentence somebody read and acted on, and a sentence passes a wrong field along in good grammar.
Count the three. The column with the most marks is where the first owner goes, and it may not be the title the job postings are fighting over.
Sort The Backlog By What Each Item Writes To
The trace says where it hurts now. The backlog says what you are about to ask somebody to build, and three questions sort it, in this order:
The first question places the item. The third tells you whether it is owned, and an item with no name beside it is the real vacancy, whatever the title on the posting.
Anything that writes to two places is two items with a seam between them. Split it, put each half in its column, and write the seam down as one sentence with a name in it: before the list tool adds a company, it checks the CRM for the domain, and marketing ops keeps the domain field filled.
Small teams will object that one person holds two columns, and at forty people that may be the only option. The columns still need names, because the person wearing two hats has to know which one a broken thing belongs to before they can fix it.
Every Seam Between Two Columns Needs A Written Rule
SystemOne, the artist booking platform, is the clearest case we have of the columns split across two teams. Their own team runs the CRM and a segmented sales pipeline with outreach going out all the time, so the record is theirs. Their biggest sales motion picks booking agencies one at a time and works each one, and we built a prospecting agent to feed it.
The agent reads public artist profiles, finds out who books each artist, and adds the booking agency to SystemOne’s outbound list. The seam is one rule: before it writes a lead, it loads the contacts their CRM already holds and skips anyone on them. Without it, sales would get agencies they already know, sent back as new.
We added that rule in March, and the same week found two halves of the build reading two different databases, so the scheduled job kept checking artists the app had already checked. The fix took three tries, because the second undid the first, and the third shipped with a note beside it saying why it must stay.
What practitioners on Reddit say about working inside someone else’s stack
“The gap usually isn’t the outbound skills, it’s working inside someone else’s stack. In-house GTME roles care a lot about the CRM side: routing, keeping Salesforce or HubSpot data clean enough that RevOps trusts it, and building things other people will maintain after you.” — r/gtmengineering, Oct 2026
“You would need a clear process for deduplication. [...] But you must get a grip on that or otherwise you chase more and more bad data.” — r/revops, Oct 2026
Both comments describe the seam from the builder’s side. A seam rule has two owners: the record’s owner keeps the list current, and the pipe’s owner keeps the check running. At SystemOne those two owners sit in two different companies, which is why the rule had to be written down at all.
A Background System Needs An Owner Who Reads Its Output
The rule at the seam held. What the agent needed after that was a person reading what it produced, because three times in six weeks it ran on schedule, logged every run as a success, and found nobody.
| When | What the log showed | What was happening | The fix |
|---|---|---|---|
| April | Hourly runs completing for more than twenty days, artists read | No agencies found: told to find contacts, it stopped at thin profiles instead of searching | One verb in the instruction, changed to “search” |
| May 1 | Seventeen runs in a row completing | Nobody read: a fix stepped through the results too fast | One step per full cycle, not per run |
| May 19 to 21 | Forty-one runs in a row, each a success | Nobody read: it had paged past the artists worth reading | A cap on how deep it goes |
None of the three was an error. Every run did what it was told and reported that accurately, which is why an alert on errors would never have fired. The third showed up as a zero in a daily summary, and somebody read it.
The obvious fix is an alarm on empty output, and a builder can add one in an afternoon. An alarm is a message to a person, though. Somebody has to know what a normal week looks like to set it, and somebody has to answer it when it fires. That is the job the postings leave out.
.png)
At SystemOne that work sits with Sharné McDonald, the senior GTM consultant who runs the partnership and maintains the agent. In September the rules that had lived in memory went into the repository: one way to deploy, the limits that set how much each run can do, and a line saying the scheduler’s “succeeded” only means the request was queued.
Whichever title you hire, then, the job description’s first line names what the person reads every week and what they do when it looks wrong. A title without that line hires a builder, and builders move on to the next build.
Fix The Column The Other Two Read From First
The pipes and the agents both read the record. SystemOne’s agent reads their CRM before every lead it writes, a scoring agent reads lifecycle stages, and a board brief reads whatever the fields say. When the record is wrong, everything built on it is wrong too, and it arrives faster and better formatted.
The order that follows is a ruling. If your twenty bad leads mostly failed in the record, marketing ops comes first, before any builder. If they arrived clean and were handled correctly, the list is the problem and GTM engineering goes first. Agents come after both, because they inherit whatever the other two get wrong.
The trace and the sort take an afternoon with a spreadsheet. The part after takes quarters: fixing the record, writing each seam rule, building what the backlog asks for, and having somebody read every output, every week, for as long as it runs.
Empact Partners works in that order. A RevOps engagement starts with an audit of the work a team repeats and the record it lands in, and the record stays in the partner’s hands throughout.
Then one system or agent is scoped to one job, a consultant owns what it produces, and the measure is agreed before the build: hours returned, pipeline moved, or a number the team already reports.
If you have one technical seat to fill and sales still calls the leads bad, grab a time in my calendar, and we will find out together whether this is work for us.

.png)