GTM Automation Systems

Three GTM plays.
One reusable engine.

This is the delivery asset behind my GTM automation work. The same shared plumbing powers top-of-funnel signal capture, inbound routing, and stale-pipeline reactivation, with fixture-backed demo mode so anyone can see the workflow without wiring external APIs first.

Not a generic no-code platform. A fast, opinionated system I can retarget to a client's motion quickly.

Same operating pattern, different trigger.

Each play starts with a different signal, but they all move through the same four-step system: intake, enrichment, qualification, and routed output.

01

Capture

LinkedIn engagement, inbound hand raises, or stale lead exports enter the system.

02

Enrich

Apollo adds company and contact context so the workflow is operating on usable GTM data.

03

Qualify

Profile-driven ICP and routing logic decide what is worth queuing and what should be rejected.

04

Route

Drafts, queue rows, and summary artifacts get produced for a human to review or push forward.

Three outcomes, three workflows.

The point is not that every company needs all three. The point is that I can take the same system and adapt it to a client’s motion fast.

Top-of-Funnel

LinkedIn engagement to outbound queue

Capture people engaging with a relevant LinkedIn post, enrich them, qualify them, and draft outreach for the ones that fit the ICP.

  • Trigger: LinkedIn post engagers
  • Core path: PhantomBuster -> Apollo -> ICP -> drafts
  • Output: Enriched lead detail queue for review
Conversion

Inbound hand-raise router

Take demo requests, contact forms, and event hand raises already collected in Sheets, then prioritize and queue the best-fit follow-up.

  • Trigger: Demo, contact, and event rows
  • Core path: Sheets -> Apollo -> routing -> drafts
  • Output: Qualified follow-up queue with status updates
Recovery

Lead recycle reactivation

Re-qualify stale Apollo or CRM exports, draft a reactivation message, and put the right leads back into motion instead of leaving them cold.

  • Trigger: Stale pipeline exports
  • Core path: Sheets -> re-qualify -> reactivation draft
  • Output: Reactivation queue with priority and notes

Fixture-backed runs, no external setup required.

I added demo mode to the repo so the workflows can be inspected immediately. The artifacts below come from local fixture runs, not mocked screenshots.

LinkedIn 2 drafts
$ npm run demo:linkedin Summary: 7 likers -> 4 pre-filtered -> 3 ICP matches -> 2 drafts Morgan Park | VP Sales | SignalStack Priya Shah | Head of Marketing | CloudLoop
Inbound 2 queued
$ npm run demo:inbound Summary: 4 processed -> 3 qualified -> 2 queued Taylor Smith | Demo request | High Casey Nguyen | Webinar registration | Medium
Recycle 2 queued
$ npm run demo:recycle Summary: 4 processed -> 3 qualified -> 2 queued Alex Morgan | Proposal | High Maya Patel | Discovery | Medium

What is shared vs what changes.

The system is opinionated on plumbing and flexible on trigger. That is the useful abstraction layer. I do not try to force every automation into one fake universal shape.

  • Shared engineProfiles, enrichment, qualification, drafting, local review output
  • Per-play logicSignal source, routing rules, prompt framing, queue format
  • Retargeting surfaceICP, company size, industry, offer, next-step motion

See the implementation.

The repo includes the live automations, fixture-backed demo mode, tests, and the full README walkthrough. That is the technical proof behind this page.

I can adapt one of these to your motion quickly.

If you run GTM for a SaaS company and want to move faster on signal capture, inbound follow-up, or stale-pipeline reactivation, this is the kind of system I stand up fast.