Add SoFi World Cup 2026 outreach campaign scaffolding#3
Draft
gabehak wants to merge 13 commits into
Draft
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
$(cat <<'EOF'
Summary
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.pysofi-campaign/templates/— pitches_gold_tier.md, email_drafts_ready.mdsofi-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.csvsofi-campaign/workflows/n8n_workflow.json— automated 2-hour audit pipeline.env.templateTest plan
--helpflagscrape_maps_free.py --city lawith valid GOOGLE_PLACES_API_KEYfilter_leads.pyproduces qualified output from raw CSVgenerate_pitch.py --allgenerates pitches for all leadshttps://claude.ai/code/session_01QVzqnWZeHepnkrRQLWRugw
EOF
)
Generated by Claude Code