← All runbooks
gooseworks-ai / capabilities-signal-scanner

Signal Scanner

Detect buying signals across TAM companies and watchlist personas, then prepare reviewed signal records for downstream activation. The runbook enforces a dry-run-first workflow so signal counts, affected records, Apify spend, and proposed lead-status changes are inspected before

agent codexmodel gpt-5.5snapshot python312-uveval programmatic7 stepsv1.0.0

Deploy Signal Scanner 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

7 steps · start to finish.

  1. 1
    Step 1

    Environment Setup

    1. Create /app/results and verify the configured scanner file exists.
    2. Verify SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are present.
    3. If Apify-backed signals are enabled in the config, verify APIFY_TOKEN is present.
    4. If LLM content analysis is enabled, verify ANTHROPIC_API_KEY is present.
    5. Write a setup stage into /app/results/validation_report.json.
    mkdir -p /app/results
    test -n "$SUPABASE_URL"
    test -n "$SUPABASE_SERVICE_ROLE_KEY"
    test -f "$CONFIG_PATH"
    
  2. 2
    Step 2

    Inspect Config and Scope

    Read the config JSON and confirm `client_name`, `signals.*`, and `scan_scope` match the requested run. Summarize enabled signal types, estimated Apify usage, and whether the scan is limited by tier, status, or lead status.

  3. 3
    Step 3

    Run Dry-Run Scan

    Run the scanner with `--dry-run` first. Use `--test` for initial validation unless the operator explicitly requested full scope.

  4. 4
    Step 4

    Present Findings and Require Approval

    Present dry-run results to the user before any write. Do not run the scanner without `--dry-run` until the user explicitly approves the exact config and scope. Write `/app/results/approval_record.json` with the approval status, timestamp, and requested scope.

  5. 5
    Step 5

    Execute Approved Scan

    Only after approval, run the scanner without `--dry-run`. Never pass `--yes` on a first run; reserve it for pre-approved scheduled scans where the user has already validated signal detection logic.

  6. 6
    Step 6

    Validate Database Effects

    Confirm inserted `signals`, `enrichment_log` entries, company signal snapshots, and person `lead_status` changes match the approved dry-run expectations. Flag discrepancies in `summary.md` and set `overall_passed=false` when writes exceed the approved scope.

  7. 7
    Step 7

    Iterate on Errors (max 3 rounds)

    If setup, dry-run parsing, scanner execution, or database validation fails, apply a targeted fix and repeat the affected step for max 3 rounds. Stop before write execution if failures involve credentials, ambiguous config scope, unexpected paid enrichment volume, or missing appro