← All runbooks
gooseworks-ai / competitor-monitoring-system

Competitor Monitoring System

Set up and run ongoing competitive intelligence monitoring for a client. The runbook tracks competitor content, ads, reviews, social presence, and product moves across multiple channels on a recurring cadence. It produces regular intelligence reports that surface key competitor c

agent claude-codemodel claude-sonnet-4-6snapshot python312-uveval programmatic8 stepsv1.0.0

Deploy Competitor Monitoring System to your jetty.io

One-click installs this runbook into a collection on your Jetty account. You can run it from the Spot dashboard, schedule it, or pipe inputs in via the API.

The shape of the run

8 steps · start to finish.

  1. 1
    Step 1

    Environment Setup

    Verify all inputs and initialize the output directory structure.

    # Verify required inputs
    if [ -z "$CLIENT_NAME" ]; then
      echo "ERROR: CLIENT_NAME is not set"
      exit 1
    fi
    
    if [ -z "$COMPETITOR_LIST" ]; then
      echo "ERROR: COMPETITOR_LIST is not set"
      exit 1
    fi
    
    # Create output directories
    mkdir -p "clients/${CLIENT_NAME}/intelligence/competitor-reports"
    mkdir -p /app/results
    
    echo "Environment ready. Client: ${CLIENT_NAME}"
    echo "Output root: clients/${CLIENT_NAME}/intelligence/"
    
  2. 2
    Step 2

    Define Competitor Watchlist

    Create the competitor tracking file at `clients/<client-name>/intelligence/competitor-watchlist.md`.

  3. 3
    Step 3

    Run Initial Competitive Baseline

    Run the full `competitor-intel` composite skill for each competitor to establish a baseline. This chains reddit, twitter, linkedin, blog, and review scrapers into a single pass.

  4. 4
    Step 4

    Configure Monitoring Cadence

    The following table defines what to monitor, at what frequency, and what signals to watch for:

  5. 5
    Step 5

    Run Monitoring Cycle (max 7 competitors per cycle)

    Each monitoring cycle:

  6. 6
    Step 6

    Iterate on Errors (max 3 rounds)

    If any scraper fails or returns empty results:

  7. 7
    Step 7

    Produce Intelligence Report

    After each cycle, produce a brief intelligence summary:

  8. 8
    Step 8

    Write Summary and Validation

    Write `summary.md` to `/app/results/summary.md`: