Signal-led GTM Pipeline
Takes raw intent signals (website visits, G2 activity, ad clicks), finds the right people at those companies, enriches contact data, analyzes the buying journey, and routes everything into the right sales campaign. The pipeline runs as a single AI agent using bash for all deterministic steps, with AI reasoning reserved exclusively for Step 7: campaign classification.
What you need
  • Supabase
  • Claude Code
  • Exa
  • Fullenrich
  • Intent signal providers of your choice
The 9-Step Pipeline
1
Step 1: Pull Unactioned Intent Signals
What: Query Supabase for unprocessed intent signals not actioned in the last 90 days.
  • Filter: actioned=eq.false
  • Batch: Groups of 30
  • Optimization: jq-strip unused fields (~60% token savings)
Tool: Bash (curl GET)
2
Step 2: Assign SDR Ownership
What: Check for existing owner; if none, assign via round-robin.
  • If account_owner exists, skip assignment
  • Write assignment back to Supabase immediately
Tool: Bash (curl PATCH)
3
Step 3: Update HubSpot Company Record
What: Find company by domain and sync the sdr_owner field.
  • Search by domain; update dropdown field
  • Skip if company not found
Tool: HubSpot MCP / Bash
4
Step 4: Find Decision Makers via EXA
What: Search for 3–4 decision makers using EXA's people search.
  • POST to EXA /search with category: "people"
  • Double filter via jq (isCurrentEmployee + company match)
Tool: Bash (curl POST)
5
Step 5: Enrich Contacts via Fullenrich
What: Submit all discovered contacts in one bulk request.
  • Bulk call with batch ID for webhook matching
  • Map EXA fields to Fullenrich format
Tool: Bash (curl POST)
6
Step 6: Poll for Enrichment Results
What: Wait for async webhook and read results from Supabase.
  • Sleep 90s, then poll every 30s
  • Safety timeout: 5 minutes
Tool: Bash (polling)
7
Step 7: Analyze Journey & Classify Campaign
What: Analyze Factors.ai journey; assign one of 7 campaigns.
  • Route priority: Ad channels → G2 → Deanon → Deep Engagement → Fragmented → Default
  • AI outputs campaign name + justification
Tool: Bash + AI Reasoning
8
Step 8: Write CSV Output
What: Combine all data into a standardized CSV per contact.
  • Columns: Company fields repeated per contact
  • Wrap comma-heavy fields in double quotes
Tool: Bash (heredoc/echo)
9
Step 9: Mark Records as Actioned
What: Set actioned=true for fully processed accounts.
  • PATCH per domain (individual success tracking)
Tool: Bash (curl PATCH)
Cross-Cutting Concerns
Error Handling
Fail forward. One bad account never blocks the pipeline. Failed accounts remain unactioned for retry on the next run.
Token Cost Management
Principle: If AI doesn't need to reason about a field, hide it.
Batch & Agent Logic
30 accounts/batch, 200 account cap per run. Bash handles orchestration (zero hallucination); AI handles reasoning. jq mediates all context windows.
Need help running this all-in-one, managed?