ClawKit Logo
ClawKitReliability Toolkit

Use Case: E-commerce & Lead Gen

price monitoring ยท competitor scraping ยท lead qualification ยท contact enrichment

What you'll build

An agent that monitors competitor pricing daily, alerts when prices drop below yours, scrapes product data into a spreadsheet, and qualifies new leads by enriching them with company size, tech stack, and LinkedIn data.

Scraping ethics: Only scrape public pages where no ToS explicitly prohibits automated access. Respect robots.txt. Add a delay between requests (the browser-control skill does this automatically). For high-volume scraping, use a dedicated scraping API like Apify โ€” see the Apify integration guide.

Skills you need

SkillWhat it unlocksRequired?
browser-controlScrape dynamic pages (React/SPA sites) that a simple HTTP fetch can't readCore
http-requestPull pricing or product data from JSON APIs โ€” faster than browser for API-based sitesCore
structured-extractorExtract specific fields (price, SKU, availability) from page HTML into JSONCore
file-writerSave scraped data to CSV for import into Google Sheets or ExcelRecommended
web-searchFind new competitor pages, product launches, or press releasesRecommended
notion-writerPush qualified leads directly into a Notion CRM databaseOptional

SOUL.md template

SOUL.md โ€” e-commerce agent
# E-commerce & Lead Gen Agent

You monitor competitors, track prices, and qualify leads.

## Identity
- Name: SalesBot
- Role: Competitive intelligence and lead qualification

## Price monitoring rules
- Check competitor pricing pages listed below
- Extract: product name, price, plan name, any promotional pricing
- Compare against our current prices (listed below)
- Alert if a competitor's equivalent plan is more than 10% cheaper than ours

## Our current prices
- Starter: $29/mo
- Pro: $79/mo
- Enterprise: $199/mo

## Competitor pages to monitor
- Competitor A: https://competitor-a.com/pricing
- Competitor B: https://competitor-b.com/pricing

## Lead qualification criteria
A lead is QUALIFIED if:
- Company size: 10โ€“500 employees
- Industry: SaaS, fintech, or e-commerce
- Has a technical role (CTO, VP Eng, Lead Dev) in the contact

A lead is UNQUALIFIED if:
- Company size < 10 employees (too small)
- Industry: government, non-profit, education

## Output format for leads
For each lead: Name | Company | Size | Industry | Role | Score (1-10) | Recommended action

Price monitoring setup

openclaw.json โ€” price monitoring agent
{
  "skills": [
    "official-browser-control",
    "official-http-request",
    "official-structured-extractor",
    "official-file-writer"
  ],
  "model": "claude-sonnet-4-5",
  "soulPath": "./SOUL.md",
  "browser": {
    "headless": true
  },
  "channel": {
    "type": "telegram",
    "token": "YOUR_BOT_TOKEN",
    "chatId": "YOUR_CHAT_ID"
  }
}

Check competitor pricing now

"Visit all competitor pricing pages in my SOUL.md. Extract plan names and prices into a markdown table. Flag any plan cheaper than ours by more than 10%."

Scrape product listings

"Scrape the first 3 pages of https://competitor.com/products โ€” extract product name, price, rating, and review count. Save as ~/data/competitor-products.csv"

Find new competitors

"Search for "project management tool for developers" on Google. List any tools you haven't seen before that appear in the top 20 results."

Lead qualification workflow

Pass a list of leads (from a CSV export, CRM webhook, or paste) and the agent scores and enriches each one:

Qualify from CSV

"Read ~/leads/march-signups.csv (columns: name, email, company). For each lead, find the company's LinkedIn page, check employee count and industry. Score each 1-10 using my SOUL.md criteria. Save the scored list as ~/leads/march-signups-scored.csv"

Qualify a single lead

"Qualify this lead: Sarah Chen, CTO at TechFlow (techflow.io). Find their company size, tech stack from their job postings, and any recent funding. Score and recommend next action."

Enrich existing CRM data

"Read ~/crm-export.csv โ€” it has company names but no employee count or industry. Enrich each row by looking up the company on LinkedIn and Crunchbase. Save the enriched file."

Scheduled competitor reports

Add to openclaw.json โ€” daily price check
{
  "crons": [
    {
      "name": "Daily competitor price check",
      "schedule": "0 8 * * 1-5",
      "task": "Check all competitor pricing pages from SOUL.md. If any competitor has dropped their price more than 10% below ours, send an alert to Telegram with the details. Otherwise send a brief 'no changes' summary."
    },
    {
      "name": "Weekly competitive report",
      "schedule": "0 9 * * 1",
      "task": "Check all competitor pricing pages and their blog/changelog for new product announcements from the last 7 days. Post a competitive intel summary to Telegram."
    }
  ]
}

Common issues

โš  Competitor pricing page is behind a login

If the pricing page requires login, the agent can't scrape it. Use a tool like Google Cache or archive.org for last known prices, or check the pricing via their public API if one exists.

โš  Scraper gets blocked after a few pages

Add a rate limit note to your SOUL.md: "Wait 3 seconds between page loads." For high-volume scraping, switch to the Apify integration which handles rotating proxies automatically.

โš  Lead enrichment returns outdated company data

LinkedIn data accessed via browser can be 30โ€“90 days stale. Specify in your prompt: "Check the job postings page for current company size if the main page doesn't show it." Or use a dedicated enrichment API.

โš  CSV output has inconsistent formatting

Tell the agent exactly which columns you need: "Output CSV with columns: name, company, size, industry, role, score, action โ€” in that order, no extra columns."

Did this guide solve your problem?

Need Help?

Try our automated tools to solve common issues instantly.