GTM Engineer.

Experience

Download resume (PDF)

GTM Engineer

–Present

AxisCare

Remote

  • Own HubSpot-centered revenue architecture across Clay, Gong, Apollo, Aircall, and Chili Piper, translating business requirements into integrations, internal tools, and automation.
  • Build and maintain 20+ production HubSpot systems with REST APIs, webhooks, and Node.js, covering routing, record synchronization, deduplication, reconciliation, monitoring, and runbooks.
  • Built outbound sourcing, enrichment, ICP scoring, routing, and queue infrastructure that supported approximately $13.5M in pipeline and $2.7M in closed-won outbound ARR within two years.
  • Built an AI-assisted prospecting and qualification pipeline that added approximately 600 net-new companies in three months and revalidated approximately 10,000 companies, with human approval before CRM updates.
  • Built a Fathom-HubSpot workflow to match meetings and consolidate notes and associations, using hash markers to prevent repeat appends and dry-run validation before enabling writes.
  • Shipped a self-service app that generates an 18-slide board deck and Excel analysis from HubSpot, reducing preparation from two working days to about 24 minutes, including human review.

Sales Operations Specialist

–

REVGEN

Remote

  • Owned sales operations, reporting, and data infrastructure for 15 concurrent B2B client accounts and 70 managed sales representatives.
  • Delivered Salesforce configuration and consulting across custom fields, permissions, dashboards, and sales workflows; built Google Sheets performance reporting and enriched prospect data for Salesloft.

Selected independent project

Development environment

GTM Control Tower

Salesforce development-org project using Agentforce, Flow, and Apex for lead triage and operator-approved ownership changes, with permission checks and idempotency.

Technical skills

CRM and GTM: HubSpot, Salesforce, Airtable, Apex, Flow, Agentforce, Clay, Apollo; architecture, data modeling, routing, governance

Engineering: Python, JavaScript/Node.js, REST APIs, webhooks, SQL, PostgreSQL, Snowflake, n8n, Zapier, Git

AI and Analytics: Codex, Claude Code, LLM workflows, structured outputs, human review, forecasting, attribution, Looker, Metabase, Excel

Education

B.S. Psychology

University of Pittsburgh at Johnstown

Project notes

Independent projects in active development. These examples use synthetic records or dated development-system results.

GTM Control Tower: which leads can safely enter the CRM?

Messy exports can contain duplicate people, invalid emails, missing owners, and conflicting lifecycle stages. Control Tower applies explicit rules and keeps unresolved records out of the destination-ready set.

Try it: run the 64-row cleanup and inspect its decisions. The batch becomes 57 contacts after seven duplicate rows merge: 46 are ready and 11 remain held. Compare original values, changes, and remaining hold reasons, then download the same results.

Resolve a hold: the self-hosted correction walkthrough shows three fictional records, a recorded correction reason, and before/after history. Changing an email rechecks duplicates across the batch; a partial correction leaves unresolved problems held.

Compare with CRM: the self-hosted comparison uses exact email matches and CRM IDs for updates. Before creating a record, it also checks name, email, phone, state, and company against a recent complete CRM snapshot. Possible matches stay held for review, even when Salesforce would accept them. The match review shows supporting evidence and scores from 0–100, not probabilities; it never merges or links people automatically. Follow a real development-CRM import: fictional attendees, verified duplicate holds, creates and updates, a repeat without new writes, and update rollback in HubSpot and Salesforce. Actual screenshots and dated results distinguish the original run from the later hold check.

Design decision: an unresolved record stays visible for review. The browser example uses a fixed routing rule and a supplied expected stage; it does not infer historical truth or write to a CRM.

Separate Salesforce development-org evidence · Source and setup

Pomade: turn account data into inspectable research

Research results need context before they become sales inputs. Pomade combines a data grid, reusable recipes, source-linked answers, and deliberate export or CRM actions.

Try it locally: follow the credential-free, three-row workflow. Nine formula actions produce two passing rows and one that needs review. Clear a person's name and rerun: the failed formulas keep that row in Review. Edit a checked input and export before rerunning: its status is Draft, even while earlier outputs remain visible.

Design decision: an old result must not look freshly checked after its input changes. Keep raw responses, sources, and uncertainty available for review; successful execution and a citation do not establish factual accuracy. This local example uses synthetic records and no external writes. Hosted access remains private.

Separate September 7 provider benchmark and its limits · Source and current limits

Hot Potato: explain who receives an inbound lead

Routing should account for an eligible existing owner, rep availability, and assignment weights. The engine makes those rules inspectable and reuses the decision for a repeated request ID.

Inspect it: the routing and retry walkthrough links to source and passing checks. Follow the failure case: an older owner update fails, a newer assignment succeeds, and the old retry is skipped. PostgreSQL checks also verify that concurrent owner writes finish in order, using synthetic provider callbacks.

Design decision: a delayed retry must not undo a newer queued assignment. The guard orders this application's writes; it does not detect independent edits inside the CRM. The website animation plays preset fictional results without calendar checks or bookings. Historical rule snapshots are not implemented.

Public application and setup

Additional project: Dander.