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 runcalculator.py/comparator.py— mathconfig.py— dealer + make rate configsPROJECT-STATUS.md— current state + architecture decisions
Integrations¶
- Consumes Savvy Incentive API (canonical inventory + incentive source)
- Complements
savvydealer-inventory-trackerfor 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.