DEV Community

Cover image for How to Build a Lead Enrichment Pipeline with Tech Detection
MikeL
MikeL

Posted on • Originally published at detectzestack.fly.dev

How to Build a Lead Enrichment Pipeline with Tech Detection

Your CRM has thousands of leads. Names, emails, company URLs. But without knowing what technologies those companies use, your sales team is shooting in the dark.

Tech stack data transforms cold outreach into relevant conversations. If you're selling a Shopify app, you only want leads running Shopify. If you offer WordPress security, you need WordPress sites.

In this guide, we'll build a lead enrichment pipeline that takes a list of company domains and enriches each one with technology data using the DetectZeStack API.

The Pipeline

  1. Export leads from your CRM (just the domain column)
  2. Batch analyze with DetectZeStack (10 domains per request)
  3. Filter and score leads by technology match
  4. Push enriched data back to your CRM

Step 1: Prepare Your Domain List

Export your leads as a CSV. The only required field is the company's domain:

domains.csv:
company,domain
Acme Corp,acmecorp.com
Globex Inc,globex.io
Initech,initech.com
Enter fullscreen mode Exit fullscreen mode

Step 2: Batch Analyze

The /analyze/batch endpoint processes up to 10 URLs concurrently. Here's a Python script that reads your CSV and enriches each domain:

import csv
import json
import requests
import time

API_URL = "https://detectzestack.fly.dev/analyze/batch"
API_KEY = "your-api-key"
BATCH_SIZE = 10

def enrich_domains(csv_path):
    with open(csv_path) as f:
        rows = list(csv.DictReader(f))

    enriched = []

    for i in range(0, len(rows), BATCH_SIZE):
        batch = rows[i:i + BATCH_SIZE]
        urls = [row["domain"] for row in batch]

        resp = requests.post(API_URL, json={"urls": urls}, headers={
            "X-Api-Key": API_KEY,
            "Content-Type": "application/json"
        })
        results = resp.json().get("results", [])

        for row, result in zip(batch, results):
            techs = [t["name"] for t in result.get("technologies", [])]
            categories = set()
            for t in result.get("technologies", []):
                categories.update(t.get("categories", []))

            row["technologies"] = ", ".join(techs)
            row["categories"] = ", ".join(categories)
            row["tech_count"] = len(techs)
            enriched.append(row)

        time.sleep(1)  # Respect rate limits

    return enriched

results = enrich_domains("domains.csv")
Enter fullscreen mode Exit fullscreen mode

For 1,000 leads, that's 100 API calls — well within the Pro plan's 5,000 monthly limit.

Step 3: Filter and Score

Now filter leads by relevance:

# Find all Shopify stores
shopify_leads = [r for r in results if "Shopify" in r["technologies"]]

# Find WordPress sites without a CDN
wp_no_cdn = [
    r for r in results
    if "WordPress" in r["technologies"]
    and not any(cdn in r["technologies"]
        for cdn in ["Cloudflare", "Fastly", "CloudFront"])
]

# Score leads by tech stack overlap with your ideal customer
TARGET_TECHS = {"React", "Next.js", "Vercel", "Stripe"}

for lead in results:
    lead_techs = set(lead["technologies"].split(", "))
    lead["score"] = len(lead_techs & TARGET_TECHS)

results.sort(key=lambda r: r["score"], reverse=True)
Enter fullscreen mode Exit fullscreen mode

Pro tip: Use the /compare endpoint to compare a prospect's stack against your best customer's stack. High overlap = high-probability close.

Step 4: Push to Your CRM

Most CRMs support custom fields. Once technology data is in your CRM, you can:

  • Create smart lists filtered by technology ("All Shopify + Klaviyo leads")
  • Trigger automated sequences based on tech stack match
  • Personalize email templates with technology references
  • Route leads to the right sales rep based on tech expertise

Real-World Use Cases

SaaS Sales: Find companies using a competitor's product. "I noticed you're using [Competitor] — here's how we compare."

Agency Prospecting: Find sites on outdated tech. "Your site runs jQuery 1.x — we can modernize it."

Platform Partnerships: Find companies in your ecosystem. "You're on Vercel + Next.js — our integration is built for your stack."

Security Services: Identify sites with known vulnerable technologies using CPE data. Offer remediation.

Keeping Data Fresh

Tech stacks change. Set up webhook alerts for real-time monitoring:

curl -X POST "https://detectzestack.fly.dev/webhooks" \
  -H "X-Api-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "important-prospect.com",
    "webhook_url": "https://your-app.com/webhook",
    "secret": "your-hmac-secret"
  }'
Enter fullscreen mode Exit fullscreen mode

Cost Comparison

Enriching 1,000 leads monthly:

Tool Monthly Cost
BuiltWith $995/mo
Wappalyzer $450/mo
DetectZeStack $5/mo

At $5/month for 5,000 requests, you can enrich your entire pipeline for less than a single month of the cheapest alternative. See our full comparison for details.

Get your free API key — 100 requests/month, no credit card required.


What's your lead enrichment workflow? I'd love to hear how you're using tech detection in the comments.

Top comments (0)