# Changelog of Copart Intelligence (`gallant_illustration/auction-intelligence`) Actor

- **URL**: https://apify.com/gallant_illustration/auction-intelligence/changelog.md
- **Full Actor documentation**: https://apify.com/gallant_illustration/auction-intelligence.md

## Changelog

All notable changes to the Copart Intelligence Apify Actor.

### 1.0 — 2026-05-18 — Initial public release

First public release after Phase 1 dev + private dry-run validation.

#### Filters

Real-time monitor for Copart auction lots. All filters are optional and AND together; multi-value fields are OR'd within themselves.

- **Vehicle**: `makes` (40 brands suggested + custom free-text), `models` (free-text), `yearMin`/`yearMax`, `odometerMax`.
- **Vehicle type / category**: 15 `vehicleTypes` (Automobile, Motorcycle, Boat, RV, …), 12 `bodyStyles` (Sedan / SUV / Pickup / …), 11 `fuelTypes` (Gas / Diesel / EV / Hybrid / …), 7 `driveTrains` (FWD / AWD / 4×4 …).
- **Vehicle attributes**: `engines` (free-text, case-sensitive), `transmissions` (Automatic / Manual), `cylinders` (0 / 3 / 4 / 6 / 8 / 10 / 12), `colors` (free-text — capability beyond Copart's own UI, which has no color filter).
- **Condition**: 25 `damageCodes` (Front End / Hail / Minor / Rollover / …), 3 `titleGroups` (Clean / Salvage / Nonrepairable), 6 `sources` (Repossession / Theft Recovery / Fleet / …), `runsAndDrivesOnly` toggle.
- **Location**: unified `location` field — 216 Copart yards (US + Canada) + 55 US states / Canadian provinces, mixed freely in one multi-select (state codes auto-expand to all yards in the state).
- **Sale date**: `saleDatePreset` quick window (`today` / `tomorrow` / `next_7_days` / `next_30_days`) OR custom `saleDateFrom`/`saleDateTo` range (preset wins if both set).
- **Auction state**: `salePlatforms` (include) / `excludeSalePlatforms` (exclude — e.g. drop higher-fee Purple Wave), `excludeOnApproval`.
- **Price & budget**: `currentBidMin`/`currentBidMax` (client-side post-fetch filter — Copart's Solr has no server-side bid field), `buyItNowOnly` (server-side).
- **Inventory features**: `features` (12 Copart "Featured items" toggles), `newlyAddedWithinDays` (inventory-add date, 1–30), `classicsYearsOld` (override 25-year Classics threshold).
- **Identifier search**: `vin` (17-char), `lotNumbers` (single lot per run), `freeFormQuery` (full-text) — at most one per run (shared Copart search slot).

#### Delivery

- **Dataset output**: every matching new or updated lot written as a row. Verbosity controlled by `outputFormat` input (`compact` default / `full` / `minimal`).
- **Webhook delivery**: optional POST per lot with HMAC-SHA256 signature (`X-CopartIntelligence-Signature`). 3 retries + per-filter DLQ for failed deliveries; auto-disable after 5 consecutive failures.
- **Sort**: `sortBy` with 9 Copart-UI-parity presets (auction date / odometer / year / make / model / item # / buy-it-now / current bid / sale light).

#### Pricing

Pay-per-event:

- `lot_new` — $0.05 per new lot found.
- `lot_updated` — $0.02 per lot whose change-hash changed since the previous run.

#### Behavior

- Per-filter state via Apify Key-Value store (`copart-state-<filterHash>`). Cross-run idempotency: same filter input never re-charges for the same unchanged lot.
- Per-filter run lock — concurrent runs of the same filter exit cleanly instead of double-charging.
- `maxResultsPerRun` cap (default 500, max 10000) — protects against runaway charges on broad filters.
- `includeUpdated` toggle (default true) — set false to pay only for `lot_new`.

#### Not in 1.0 (Phase 2 backlog)

- Multi-lot lookup per run (`lotNumbers` currently accepts a single value).
- `location_distance` (nearest-ZIP) sort — needs geo-coordinate resolution.
- `CVT` transmission value (only Automatic / Manual BMW-confirmed in 1.0).
- Lifecycle terminals — only `lot_new` / `lot_updated` are emitted; `sold` / `withdrawn` are not surfaced.
- Has-keys / secondary-damage-exclude input filters (both fields are present in the output, but not yet as filters).
- Field-level diff serialization (would let webhook payloads say `"currentBid changed from 1500 to 1800"`).
- Telegram / Stripe billing integration (cross-promo to SaaS surface).
