Skip to content

Dealership Audit

Repo: savvydealer-adam/dealership-audit · Path: C:/Users/adam/dealership-audit · Owner: Adam Status: Active dev · % Done: 40 · Last commit: 2026-03-30 Deployed: local Streamlit + MCP server (no public URL)

What it is

SEM/SEO and marketing-audit tool for dealer websites. Runs keyword-presence checks via SerpAPI, captures Facebook Ad Library screenshots, pulls GA4 analytics for entire dealer groups, and generates branded PDF reports.

Why it exists

Sales needs a credible "here's what's wrong and what we'd fix" artifact to hand dealers mid-pitch. Dealership Audit produces that in minutes, tied to the prospect's real search footprint and live ad spend — without the generic SEMrush template feel.

How it works

Stack: Python + Streamlit, SerpAPI (google-search-results), Playwright (ad screenshots), GA4 Data API (google-analytics-data), fpdf2 (reports), MCP server exposure. - app.py — Streamlit entry with three audit types in sidebar - src/audit.py, src/audit_storage.py — core audit logic and persistence - src/serp_client.py — SerpAPI wrapper (keyword rank, presence, grades) - src/facebook_ads.py, src/screenshots.py — ad library + Playwright screenshotting - src/ga4_client.py, src/group_audit.py — multi-store GA4 pull - src/pdf_report.py — scored/graded PDF export - mcp_server.py — same audit surfaced as an MCP server so Claude Code can call it - Requires SERPAPI_KEY in .env

What's done

  • Single-store SEM/SEO audit with keyword presence + grades
  • Facebook Ad Library screenshots
  • Branded PDF report generation (stored under saved_audits/, reports/)
  • GA4 group analytics pull (e.g., Taylor Auto Group reports, 2026-03-30)
  • MCP server exposure for agent-driven audits
  • Multi-store pitch generators (Hyundai, Taylor)

What's next

  • Productize into a dealer-facing self-serve audit (currently internal)
  • Swap generated pitch scripts for a more general template engine
  • Wire audits into AI CRM so a prospect record carries its own audit history

Where the code lives

  • Entry: app.py, pages under pages/
  • Audit core: src/
  • MCP: mcp_server.py
  • Generators: generate_*.py
  • Outputs: reports/, saved_audits/, exports/, screenshots/

Integrations

  • SerpAPI — keyword rank + presence
  • GA4 — authenticated analytics pulls (requires credentials/)
  • Facebook Ad Library — ad presence via Playwright
  • MCP (Claude Code) — audit callable as a tool; registered in ~/.claude/mcp.json as dealership-audit

Don't rebuild this — extend it

Any dealer-marketing audit (SEO, ads, GA) belongs here — single source of truth for audit scoring and PDF layout. New metric? Add a module in src/ and surface it via mcp_server.py.