Skip to content

Lease Scraper

Repo: savvydealer-adam/lease-scraper · Path: C:/Users/adam/lease-scraper · Owner: Adam Status: Live · % Done: 85 · Last commit: 2026-03-26 Deployed: https://lease-scraper-952362582307.us-central1.run.app/

What it is

FastAPI service that generates customer-facing lease offers per dealer. Pulls inventory from the Savvy Incentive API, matches against per-make rate configs, runs lease calcs, and outputs HTML + CSV per store.

Why it exists

Dealer websites need current, accurate lease offers built from real inventory + real factory rates — not scraped from OEM sites or stale spreadsheets.

How it works

Python + FastAPI + Playwright + Pydantic on Cloud Run. - Savvy Incentive API is the canonical source for inventory + incentives (NOT Google Sheets — that was stale) - Selling price formula: MSRP − discount (the API's sellingPrice field is wrong; do not use) - Per-make rate configs (JSON) gate on current: true — stale rates are filtered out, never shown - DealerRunConfig.correct_vdp_domain overrides wrong VDP URLs from the API - Dashboard at / with last-updated timestamps (red >24h)

What's done

  • 4 live pipelines: Alan Jay Ford Sebring (33), Alan Jay Ford Wauchula (12), Alan Jay Nissan Sebring (31), Jarrett Ford Charlotte (155)
  • 3-level overrides for term, mileage, down payment
  • Calculator + comparator modules
  • Full dashboard routing

What's next

  • April Q2 FMC rates pending — pipeline waits on fresh rate config
  • Open: $7 Ford rebate discrepancy vs OEM source
  • Add more makes (Chevy, Toyota, etc.) once Ford/Nissan stable

Where the code lives

  • cli.py — CLI entry + dealer run
  • calculator.py / comparator.py — math
  • config.py — dealer + make rate configs
  • PROJECT-STATUS.md — current state + architecture decisions

Integrations

  • Consumes Savvy Incentive API (canonical inventory + incentive source)
  • Complements savvydealer-inventory-tracker for full competitor intel
  • Offers feed dealer website lease-special pages

Don't rebuild this — extend it

Add a new dealer by writing a DealerRunConfig and a make rate config JSON — the pipeline handles the rest.