# Exotic Vehicle Scout — Implementation Notes Specific implementation details for the Apex Track Experience vehicle database cron job. ## Database **Location:** `/root/portal-mockup/vehicles.json` (dev/mockup copy) and `/var/www/static/vehicles.json` (live, served via core.itpropartner.com/vehicles.json) **Schema:** `{Make: {Model: {Year: HP, ...}, ...}}` - Makes are top-level keys (capitalized: "Ferrari", "Mercedes-AMG") - Models are sub-keys (capitalized: "296 Speciale", "Mustang GTD") - Years are string keys (not integers): `{"2025": 819, "2026": 819}` - Years span from 2015 onward (the database covers 2015+ per initial requirement) **Duplicates exist:** There are TWO copies — `/root/portal-mockup/vehicles.json` (flat format with single-line years, ~234 lines, simpler) and `/root/docker/docuseal/data/vehicles.json` (pretty-printed, ~2,277 lines, comprehensive). The DocuSeal copy is the canonical one. ## De-duplication Check Pattern In Python: ```python import json v = json.load(open('/root/portal-mockup/vehicles.json')) def is_in_db(make, model): """Check if a make+model combination exists in the vehicle database.""" if make in v: models = v[make] if model in models: return True # Also check partial matches (e.g., 'Mustang GTD' vs 'Mustang GT') matches = [m for m in models.keys() if model.lower() in m.lower()] if matches: return True return False ``` For partial matches, be precise: "Corvette ZR1X" vs "Corvette ZR1" — these are DIFFERENT models. Use python to list ALL models under a make and manually review ambiguous cases. ## Prior-Report Cross-Reference Use `session_search(query="exotic-vehicle-scout", limit=5, sort="newest")` to find prior cron runs. Each run delivers a full report with a table of findings. Extract those findings and check each one against the live DB: ```python # For each prior report's claimed new-find list: for item in prior_findings: still_missing = not is_in_db(item['make'], item['model']) # If still missing, include in the "accumulated" section ``` ## Key Sources for Vehicle Research - **Exa Search (MCP via `web_search_exa`)** — best single source for niche/boutique brands (Zenvo, Denza, McMurtry). Semantic search catches what keyword search misses. Returns publication dates for recency filtering. Set `numResults=10`. Use natural-language page descriptions, not keyword lists. - **Goodwood Festival of Speed entry lists** (July, annual) — catches boutique/hypercar debuts - **motor1.com** — good factory-style coverage of all industry events - **CarThrottle** — catches niche/meme-worthy debuts (Ruf B8, Apollo Evo) - **roadandtrack.com / thedrive.com** — performance-focused journalism - **Manufacturer press sites** — for official HP figures (ferrari.com, pagani.com, audi-mediacenter.com, lamborghini.com/news, ford.com/performance) - **carscoops / carnewschina** — Chinese-market vehicles (BYD/Denza, Xiaomi, Nio) - **caranddriver.com/future-cars** — aggregated future vehicle guide ## Known Model Name Variations When checking the DB, you need to account for inconsistencies in model naming: - "Corvette Stingray" != "Stingray" — always use full manufacturer model names - "M5" in DB currently ends at 2024/617hp — the 2025+ G90 generation (717hp) needs separate entries - "GT 63 S 4-Door" is in the DB but "GT 63 S E Performance Coupe" (2-door, 805hp) is NOT - "Ioniq 5 N" vs "IONIQ 5 N" — capitalization differs but python dict check is case-sensitive; check `.lower()` on both sides ## Apex Track Experience Event - Date: September 19, 2026 - Invites: Any vehicle 500+ HP regardless of body style or drivetrain - Registration form: DocuSeal-based, fetches make/model from vehicles.json dropdown - Known gaps: "custom/homebuilt" option needed for prototype/low-volume builds ## Database Corrections (Known) - Aston Martin Valhalla: DB says 998 hp, actual is 1,064 hp (1,079 PS) - BMW M5 (G90): 2025+ entries at 717 hp are missing (DB ends at 2024/617hp) - Polestar 6 (884 hp, 2026): missing — DB only has Polestar 1