#!/usr/bin/env bash set -euo pipefail # VeriPath Audit Pipeline # Usage: ./audit_pipeline.sh "Business Name" "City, ST" [output-dir] # Sequence: multi_scraper.py → audit_engine.py → findings + report in target folder SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" BUSINESS="${1:?Usage: audit_pipeline.sh \"Business Name\" \"City, ST\" [output-dir]}" LOCATION="${2:?Usage: audit_pipeline.sh \"Business Name\" \"City, ST\" [output-dir]}" OUTPUT_DIR="${3:-}" # Scraper deps live in a separate uv project (no pyproject in this dir) export UV_PROJECT="${UV_PROJECT:-$HOME/deps/google-maps-scraper}" # Temporary working dir for this run WORK_DIR=$(mktemp -d /tmp/veripath.XXXXXX) trap 'rm -rf "$WORK_DIR"' EXIT ENGINE_ARGS=("--md") echo "[$(date +%T)] Scraping: $BUSINESS @ $LOCATION" # Step 1: Multi-surface extraction (3rd arg is an output DIR) uv run python3 "$SCRIPT_DIR/multi_scraper.py" "$BUSINESS" "$LOCATION" "$WORK_DIR" SCRAPER_OUT=$(find "$WORK_DIR" -name "*multi_surface*.json" | head -1) if [ -z "$SCRAPER_OUT" ] || [ ! -s "$SCRAPER_OUT" ]; then echo "[FAIL] multi_scraper.py produced no output" >&2 exit 1 fi echo "[OK] Extraction complete: $SCRAPER_OUT" # Persist the raw capture into the run dir (WORK_DIR is wiped on exit; # report_generate / report_gate need it for evidence validation) if [ -n "$OUTPUT_DIR" ]; then mkdir -p "$OUTPUT_DIR" cp "$SCRAPER_OUT" "$OUTPUT_DIR/$(basename "$SCRAPER_OUT")" fi # Step 2: Audit engine if [ -n "$OUTPUT_DIR" ]; then mkdir -p "$OUTPUT_DIR" ENGINE_ARGS+=("--output-dir" "$OUTPUT_DIR") echo "[$(date +%T)] Auditing (output: $OUTPUT_DIR)" uv run python3 "$SCRIPT_DIR/audit_engine.py" "$SCRAPER_OUT" "${ENGINE_ARGS[@]}" echo "[DONE] Findings written to $OUTPUT_DIR/" else echo "[$(date +%T)] Auditing (stdout)" uv run python3 "$SCRIPT_DIR/audit_engine.py" "$SCRAPER_OUT" "${ENGINE_ARGS[@]}" fi # Step 3: report + strict delivery gate (one-command e2e) if [ -n "$OUTPUT_DIR" ]; then echo "[$(date +%T)] Building report" uv run python3 "$SCRIPT_DIR/report_generate.py" "$OUTPUT_DIR" echo "[$(date +%T)] Running delivery gate (strict)" uv run python3 "$SCRIPT_DIR/report_gate.py" "$OUTPUT_DIR" --strict echo "[GATE DONE]" fi