"""scrapers — Phase 3B DealFinder source adapters.

Cada scraper devuelve list[dict] con campos compatibles con deals_db.insert_deal:
    source, deal_type, address, city, state, zip, county,
    listing_price, starting_bid, estimated_arv,
    beds, baths, sqft, year_built, lot_sqft,
    photos_urls, listing_description, case_number, auction_date

Plus el scraper anota:
    - record_scraper_run() al inicio
    - insert_deal() per result
    - record_firecrawl_usage() si consumio credits
    - finish_scraper_run() al final con metricas

Stack:
- Playwright local primero (gratis) — para sitios sin anti-bot pesado
- Firecrawl fallback — solo cuando Playwright se bloquea
- Cada scraper documenta cual usa en su docstring
"""
