A Technical Guide by Leon Basin | basinleon.com


TL;DR

You don’t need a $50k/year tech stack to build serious revenue intelligence. This guide shows you how to assemble a complete GTM system using free tools: n8n for orchestration, free enrichment APIslocal LLMs, and Python glue code. Total cost: $0. Total capability: enterprise-grade.


The Problem: GTM Tools Are a Tax on Growth

Every Series A founder knows this pain: you need revenue intelligence, but the SaaS vendors want $2k/month per seat. By the time you’ve bought:

  • CRM ($150/user/mo)
  • Enrichment ($500/mo)
  • Outreach automation ($200/user/mo)
  • Intent data ($1,000/mo)
  • Analytics ($300/mo)

…you’re spending $20k/month before closing a single deal.

The alternative: Build the 80% yourself, buy only what you can’t replicate.


The Architecture

The $0 GTM Stack has three layers:

  1. Signal Ingestion — Google Sheets, Webhooks, RSS feeds, LinkedIn Export
  2. Enrichment + Scoring — Hunter.io, Clearbit, GitHub API, Local LLM
  3. Output Layer — Executive Brief, Cold Email, CRM Update, Slack Alert

All orchestrated by n8n — self-hosted, unlimited executions, visual workflows.


Layer 1: Signal Ingestion

What We’re Building

A unified intake layer that captures signals from wherever your prospects live.

Free Tools

ToolPurposeCost
Google SheetsManual lead entry, importsFree
n8n WebhooksAutomated triggersFree (self-hosted)
RSS FeedsNews/blog monitoringFree
LinkedIn Sales Nav ExportContact listsFree with trial

Code Snippet: URL Ingestion

# logic/ingest.py
import requests
from bs4 import BeautifulSoup

def fetch_text_from_url(url: str) -> str:
    """Ingest article content from any URL for signal extraction."""
    response = requests.get(url, timeout=10)
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Try article tag first, fall back to body
    article = soup.find('article')
    if article:
        return article.get_text(separator='\n', strip=True)
    return soup.body.get_text(separator='\n', strip=True)

Layer 2: Enrichment + Scoring

What We’re Building

Automated data enrichment that fills in company/contact details, then scores for priority.

Free APIs

APIWhat It Gives YouFree Tier
Hunter.ioEmail finder25/mo
ClearbitCompany dataLimited lookups
GitHub APITech stack signals5k req/hr
Apollo.ioContact data50 credits/mo

The Scoring Engine

# logic/prompt_engine.py
def score_lead(company_data: dict) -> float:
    """
    Score a lead based on signal strength.
    Returns 0.0-1.0 confidence score.
    """
    score = 0.0
    
    # Firmographic signals
    if company_data.get('employee_count', 0) > 50:
        score += 0.2
    if company_data.get('funding_stage') in ['Series A', 'Series B']:
        score += 0.3
    
    # Intent signals
    if company_data.get('recent_job_posts', 0) > 5:
        score += 0.2
    if company_data.get('tech_stack_match', False):
        score += 0.3
    
    return min(score, 1.0)

Layer 3: Output Generation

What We’re Building

LLM-powered content generation that turns enriched data into actionable artifacts.

Options (All Free)

ToolUse CaseCost
Ollama + Llama 3Local LLM generationFree
OpenAI (tier 0)Cloud LLM$5 free credit
Claude (free tier)Alternative LLMLimited

Executive Brief Generator

# logic/generator.py
def generate_executive_brief(company: dict, signals: list) -> str:
    """Generate a McKinsey-style executive brief from signals."""
    prompt = f"""
    Generate a one-page executive brief for {company['name']}.
    
    Key Signals:
    {chr(10).join(f'- {s}' for s in signals)}
    
    Format:
    1. Executive Summary (2 sentences)
    2. Key Opportunities (3 bullets)
    3. Recommended Action (1 sentence)
    4. Risk Assessment (1 sentence)
    """
    return call_llm(prompt)

The n8n Workflow

Workflow Steps

  1. Trigger: New row in Google Sheet OR webhook
  2. Enrich: Call Hunter + Clearbit APIs
  3. Score: Run Python function node
  4. Branch: If score > 0.8, proceed
  5. Generate: Call local LLM for brief
  6. Output: Update CRM + send Slack alert

Running the Demo

Quick Start (5 minutes)

# Clone the starter repo
git clone https://github.com/BasinLeon/basin-signal-engine
cd basin-signal-engine

# Install dependencies
pip install -r requirements.txt

# Run the pipeline with sample data
python scripts/run_pipeline.py --input master_resume.md

# Output: outputs/brief.json + outputs/audio.mp3

Cost Comparison

CapabilityEnterprise Stack$0 Stack
CRM$150/user/moGoogle Sheets (free)
Enrichment$500/moHunter + Clearbit free tier
Automation$200/user/mon8n self-hosted
AI Generation$100/moOllama (free)
Total$950+/mo$0

What’s Next

This stack got me 160% pipeline growth at a Series A startup. The secret wasn’t the tools—it was the architecture: unified signal ingestion, deterministic scoring, and LLM-powered output.

To go deeper:


Questions? DM me on LinkedIn or email lbasin23@gmail.com with subject “Signal received.”


Discover more from Signal. Architecture. Revenue.

Subscribe to get the latest posts sent to your email.

2 responses

  1. The Builder’s Advantage: Why I Code My GTM Stack – Signal. Architecture. Revenue. Avatar

    […] → The $0 GTM Stack: Building Enterprise-Grade Revenue Intelligence […]

    Like

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from Signal. Architecture. Revenue.

Subscribe now to keep reading and get access to the full archive.

Continue reading