Skip to content

Add SoFi World Cup 2026 outreach campaign scaffolding#3

Draft
gabehak wants to merge 13 commits into
mainfrom
claude/setup-docs-execution-j3c5R
Draft

Add SoFi World Cup 2026 outreach campaign scaffolding#3
gabehak wants to merge 13 commits into
mainfrom
claude/setup-docs-execution-j3c5R

Conversation

@gabehak

@gabehak gabehak commented Jun 2, 2026

Copy link
Copy Markdown
Owner

$(cat <<'EOF'

Summary

  • Adds complete local SEO outreach campaign for LA World Cup 2026 venues near SoFi Stadium
  • Includes Python pipeline scripts (scrape → filter → audit → pitch), lead CSVs, and field guide for in-person outreach
  • Adds copy-paste email drafts for 5 email-target venues (workaround for expired Gmail token)

What's included

  • sofi-campaign/scripts/ — scrape_maps_free.py, filter_leads.py, run_audit.py, run_audit_free.py, generate_pitch.py, normalize_csv.py
  • sofi-campaign/templates/ — pitches_gold_tier.md, email_drafts_ready.md
  • sofi-campaign/FIELD_GUIDE.md — print-ready day-by-day walk-in script (Days 1–5)
  • sofi-campaign/gold_tier_leads.csv, tier1_priority_leads.csv, sofi_leads_qualified.csv
  • sofi-campaign/workflows/n8n_workflow.json — automated 2-hour audit pipeline
  • .env.template

Test plan

  • Python scripts run with --help flag
  • scrape_maps_free.py --city la with valid GOOGLE_PLACES_API_KEY
  • filter_leads.py produces qualified output from raw CSV
  • generate_pitch.py --all generates pitches for all leads

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
EOF
)


Generated by Claude Code

claude added 13 commits May 19, 2026 12:52
Full executable toolkit for the World Cup 2026 local SEO campaign:
- scripts/filter_leads.py — filter Apify Maps scrape to 150-200 qualified leads
- scripts/enrich_emails.py — Hunter.io email enrichment with owner-title prioritization
- scripts/run_audit.py — Firecrawl + Claude audit pipeline with JSON output
- scripts/create_airtable_base.py — one-shot Airtable CRM setup via API
- scripts/load_airtable.py — bulk CSV → Airtable upsert (batched, safe to re-run)
- workflows/n8n_workflow.json — import-ready n8n automation (every 2h, 20 leads/batch)
- schemas/airtable_schema.json — full field/view spec for reference
- templates/email_variants.md — 3 cold email variants + 5-touch follow-up + objection handlers
- SETUP.md — step-by-step execution guide with daily checklists

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
- apify_raw.csv: 20-row sample scrape for immediate pipeline testing
- sofi_leads_qualified.csv: filtered output (15/20 qualified, chains/no-website dropped)
- sofi_leads_enriched.csv: enrichment-ready CSV
- .env.template: fill-in-the-blank API key file to unlock all scripts

All 5 scripts + n8n workflow pass dry-run validation end-to-end.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
- scripts/generate_pitch.py: converts any audit CSV row into a 20-second
  in-person pitch for two branches: Logistics Pain and Revenue Hunger.
  Run `python scripts/generate_pitch.py --all` to get pitches for every lead.
  Prices auto-tier based on estimated_traffic_loss (high=$1497, med/low=$997).
- templates/one_pager_logistics.md: Match-Day Survival Guide — crowd/operations angle
- templates/one_pager_revenue.md: World Cup Visibility Sprint — Maps ranking/revenue angle

Addresses PR comment requesting in-person pitch scripts and two slide-across one-pagers
for the logistics vs revenue branch pivot during walk-in outreach.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
- scrape_maps_free.py: Google Places API (free $200/mo credit) replaces Apify ($4)
- scrape_website_free.py: requests+BeautifulSoup replaces Firecrawl ($13)
- run_audit_free.py: Groq/Gemini/Ollama replaces Claude API ($6)

Full pipeline now runnable at $0 upfront. Providers:
  Groq (groq.com) - free tier, fast Llama-3.3-70b
  Gemini (aistudio.google.com) - free tier, 15 RPM
  Ollama (ollama.ai) - fully local, no API key, no internet needed

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
- scripts/normalize_csv.py: auto-detects StoreLocatorWidgets, Apify, or
  Google Places CSV format and normalizes to pipeline schema. Handles
  split address columns (Address Line 1/2, City, State, Zip → Address).
  Run with --detect to inspect unknown formats before converting.
- scripts/filter_leads.py: now accepts --input/--output flags in addition
  to legacy positional args, enabling direct integration with normalized exports.

SLW workflow:
  python scripts/normalize_csv.py stores_export.csv apify_raw.csv
  python scripts/filter_leads.py --input apify_raw.csv

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
Real LA restaurant data covering:
- 8 Persian/Iranian restaurants (Westwood) — Belgium v Iran June 21 spike
- 3 Turkish restaurants (Westwood/Culver City) — USA v Turkey June 25 spike
- 6 SoFi-adjacent (Inglewood/Westchester) — all 8 matches
- 14 supporting targets (West LA, Culver City, Marina del Rey, El Segundo)

Chains/low-quality filtered out (McDonald's, Applebee's, Chili's, Buffalo Wild Wings,
Wingstop — 7 dropped, 31 qualified from 38 input rows).
Neighborhoods fixed from generic 'Other' to real LA area names.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
tier1_priority_leads.csv:
  8 Ground Zero venues identified near SoFi/Hollywood Park:
  - Tom's Watch Bar (Hollywood Park — premium, steps from gate)
  - The MEETING SPOT (Hollywood Park — outdoor terrace, social hub)
  - Legends Sports Lounge (Prairie Ave — stadium south entrance)
  - Common Space Brewery (Hawthorne — ALREADY hosting watch parties)
  - N17 The Lane (Culver City — daily TICKETED watch parties, best upsell)
  - The Original Farmers Market (Official Fan Zone Jun 18-21)
  - FIFA Fan Festival LA (LA Memorial Coliseum — vendor angle)
  - Union Station Fan Zone (Jun 25-28 — transit captive audience)

templates/pitches_tier1.md:
  Venue-specific pitches, email subjects, and pricing rationale for each.
  Common Space + N17 flagged as hottest leads (already invested in tournament).
  Total Tier 1 close potential: $10,484 from 7 venues.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
FIELD_GUIDE.md: print-ready day-by-day field guide for walk-in outreach.
Includes exact pitches, objection handlers, close asks, and email templates
for all 8 venues. Organized by drive route (Palmdale → Hawthorne → Culver City
→ Hollywood Park → Inglewood → Westwood).

Corrections:
- N17 The Lane: updated to correct address 12821 Washington Blvd Culver City CA 90066
- Anatolia Turkish: updated to Muma Kitchen (fmr. New Anatolia), 1942 Westwood Blvd
- Common Space pitch updated with confirmed June 11 Mexico vs South Africa event intel

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
gold_tier_leads.csv: 12 highest-value LA targets with corrected contacts:
  - N17 phone corrected to (310) 569-7358
  - Legends address corrected to 10612 Prairie Ave + (323) 942-8457
  - 4 categories: Official FIFA hubs, Premium watch parties, Soccer venues, Public fan zones

templates/pitches_gold_tier.md: venue-specific pitches for all 12 targets.
  - Hotel Ziggy, Regent Theater, Ye Olde King's Head, Santa Monica Pier added
  - Strategy notes: mall venues = email marketing dept, theater GBPs = easy wins
  - Surrounding venue strategy for Coliseum + Burton Chace Park
  - 15-venue master contact sheet, total close potential $20,456

scripts/scrape_maps_free.py: added --city flag with 7 host city profiles:
  la, nyc, dallas, bayarea, seattle, boston, miami
  Run same pipeline against any 2026 World Cup host city.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
5 copy-paste emails for Farmers Market, Santa Monica Pier, Stonewood
Center, Manhattan Village, and Union Station. Includes subject lines,
send order by urgency, and 3-day follow-up template. Workaround for
expired Gmail token — accessible on any device via repo.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
31 qualified leads (81.6% of 38 raw) filtered from apify_raw.csv.
Neighborhoods: Westwood (8), West LA (5), Inglewood (3), Culver City (3),
Westchester (2), Marina del Rey (2), El Segundo (2), Other (6).

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
index.html — full marketing landing page (dark theme, mobile-first):
  pricing tiers ($997/$1,497/$1,997), how-it-works steps, FAQ,
  fake Maps 3-pack visual showing the problem, booking CTA

onepager.html — print-to-PDF one-pager for walk-in pitches:
  two-column problem/fix, 4-step process, pricing table,
  print button, QR code placeholder for cal.com link

Both link to cal.com/REPLACE_WITH_YOUR_LINK — swap in real booking URL.

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
3-script pipeline: pull_comments.py → analyze.py → export_json.py

pull_comments.py:
  YouTube Data API v3, configurable video/comment count,
  rule-based category tagging, CSV output

analyze.py:
  Claude Haiku AI analysis (falls back to rule-based),
  5-tab Excel workbook: Overview, Insights, Tools, Reply Queue, Raw

export_json.py:
  CSV → data.json for dashboard, sentiment/category aggregation

site/index.html:
  Self-contained dashboard (no build step), Chart.js charts,
  Overview / Insights / Tools / Comments tabs, search, load-more,
  loads demo data by default, live data from data.json when deployed

Deploy: drag site/ onto netlify.com/drop for instant live URL

https://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants