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 underpages/ - 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.jsonasdealership-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.