The trigger is the dealership's own RSS inventory feed, polled on a schedule. Each item carries year, make, model, trim, VIN, engine, transmission, mileage and roughly eight photo URLs — but not price. I close that gap with a plain HTTP fetch of the listing page and a regex against the site's price field, no headless browser needed. New cars are tracked against already-seen ones in a SQLite table keyed by VIN, with explicit statuses (seeded, pending_review, approved, rejected, skipped_no_photos) so nothing posts twice and the existing back-catalogue was seeded once, silently, before the pipeline ever went live.