Skip to content

Auction Monitoring System (AMP-extended) — Multi-Asset, Multi-Platform

Updated
2026-05-26

Maintained by: chat-MC1 with corrections from Brandon


Summary

Comprehensive auction-monitoring system: continuously scan external auction platforms + marketplaces for any asset that has a place in the truck lifecycle — whole salvage trucks (rebuild pipeline), parts donor trucks (CTP recovery), used water tanks (component inventory), specialty pumps (per-product-line builds), and equipment for adjacent operations (DET trailers when active). Each asset class has its own buy-box, its own evaluation criteria, and its own destination in the value chain.

The substrate is in place (AMP routes import from amp_harness_shim; substrate v1.0 LIVE 5/23). What's missing is continuous discovery across asset classes and platforms plus a decision review surface for Brandon.

No live bids in any phase pre-ratification. Q021 + bedrock-#1 + Brandon explicit per-bid authorization gates remain in force throughout Phase 1-3. Phase 4 (live bidding) requires separate Brandon ratification per asset class.

Asset class taxonomy

The system monitors 5+ distinct asset classes, each with its own buy-box and destination:

Asset class Destination Economic logic Per-unit value
Whole salvage trucks (chassis for rebuild) AMP → SEQ build pipeline Rebuild into water truck; $40-90K retail $15-25K acquisition
Parts donor trucks (not viable for rebuild) CTP directly (part-out) Recover parts value from non-rebuildable chassis $5-15K acquisition; $15-30K parts recovery
Used 2,000 gal water tanks SEQ component inventory Save vs new ($7.5-9.5K); margin upside on builds $1-3K acquisition target
Used 4,000 gal water tanks SEQ component inventory Save vs new ($7.5-9.5K); higher demand $1-3K acquisition target
Specialty pumps (Hale electronic, Genkins GK420E, PTO pumps) SEQ component inventory per product line Per-product-line specific (Tactical Fire, Horse Corral, Wildland) $500-3K depending on type
Other specialty components SEQ inventory per spec need Cab-forward chassis, body parts, specific accessories varies
DET trailers / transport equipment DET when activated Future activation per desert-equipment-transport.md deferred

Economic note: the used-tank pipeline alone is potentially worth $40-64K/month in margin upside ($5-8K/build × 8 builds/month, assuming consistent used-tank availability). Worth aggressive sourcing once platform coverage is in place.

Platform coverage matrix

Platform Whole trucks Parts trucks Tanks Pumps Notes
Copart ✓ Phase 1 ✓ Phase 2 rare rare Salvage; primary truck source
IronPlanet ✓ Phase 2 ✓ Phase 2 ✓ Phase 2 ✓ Phase 2 Heavy equipment; tank-rich
Ritchie Bros ✓ Phase 3 ✓ Phase 3 ✓ Phase 3 ✓ Phase 3 Scheduled auctions; cross-border hypothesis
Facebook Marketplace ✓ Phase 2 ✓ Phase 2 ✓ Phase 2 ✓ Phase 2 Local; bilingual common; messy data
eBay Motors Phase 3+ Phase 3+ Phase 3+ Phase 3+ Commercial vehicle category
GovDeals / Public Surplus Phase 3+ Phase 3+ Phase 3+ Phase 3+ Municipal surplus; fire-department trade-ins
AuctionsPlus Phase 3+ Phase 3+ Phase 3+ Phase 3+ Heavy equipment

Per-platform integration follows the SourceAdapter protocol (Phase 1 deliverable). Each adapter implements discover_lots(asset_class, buybox) -> list[LotStub] + enrich_lot(url) -> dict.

Routing logic — asset → consumer

Every discovered asset gets routed to its appropriate downstream consumer:

Whole salvage truck  →  AMP evaluate_fit  →  build pipeline (if fit=fit)
                                          →  part-out path (if fit=marginal/no_fit)
Parts donor truck    →  CTP part-out queue (directly)
Used water tank      →  SEQ component inventory queue
Specialty pump       →  SEQ component inventory per product line
DET trailer/equip    →  DET queue (held until activation)
Other components     →  SEQ inventory with spec-need tag

Cross-asset opportunities: if AMP finds a whole truck that's borderline (marginal fit), the parts-trucks pipeline becomes the destination automatically — same lot, different ROI calculation. CTP escape-valve logic from cactus-truck-parts.md extends here.

What's already built

Component Path State
AMP package D:\Projects\auction-manager-pro LIVE, 132/132 tests pass
Substrate adoption routes/lots.py:33 imports from amp_harness_shim Done 5/23
Copart lot enricher chrome_enricher.py Read-only via Brandon's logged-in Chrome session
Lot ingest lifecycle.ingest_lot() + POST /lots Working; manual entry today
Buy-box specs BuyBox dataclass in fit.py Generic 2K + 4K + Horse Corral 1500 wired
Fit evaluator fit.evaluate_fit() Working
Pricing pipeline pricing.estimate_*() Working: retail / repair / transport / build cost
Bid path lifecycle.place_or_escalate_bid() via amp_harness_shim HOLD_FOR_REVIEW by default; passes bedrock-#3 + Q021
Decisions endpoint GET /decisions/pending Returns pending bid recommendations
Static-scan Q021 gate tests/test_q021_live_bid_gate.py Refuses place_bid / submit_bid etc. in src/

What's missing (the integration work)

  1. Continuous listing discovery. Today ingest_lot is manual — someone POSTs a Copart URL + AMP enriches. Need a polling loop that scans Copart search results matching buy-box criteria + ingests new lots automatically.
  2. Multi-platform. Only Copart wired. Need IronPlanet, Auction.com (mentioned in canonical), Ritchie Bros (per RB VP visit hypothesis).
  3. Decision review surface. /decisions/pending returns JSON; Brandon needs a dashboard view to approve/reject/comment.
  4. Pre-bid photo analysis. Canonical doc flags "Auction photos systematically stage damage minimization" as planned-not-built. Run lot photos through Claude vision to flag damage minimization patterns BEFORE bid recommendation.
  5. Per-product-line profit floors. Q021 set $47K floor (from generic-commercial math). Horse Corral max margin is $25K — would render horse-corral invisible to autonomous sourcing. Need per-product-line floors before broad bid recommendation goes live.

Phasing (revised per scope expansion 2026-05-25)

Phase 1 — Copart continuous discovery + decision review surface + per-asset-class data model (this week, 3-5 days)

SE-App: - Extend chrome_enricher.py to scrape Copart search results pages (currently only fetches lot-detail pages by URL). Brandon's logged-in Chrome session is the source. - Build a polling loop: every 15-30 min, query Copart for new lots matching buy-box geography + truck class + price range - For each new lot: ingest_lotevaluate_lot → write to amp_decisions table (HOLD path; no bid placement) - Run as nssm service: extend existing claude-amp (port 8810) to include the polling loop OR new service claude-amp-discovery

WDM: - Dashboard view at copperstatetruckparts.com/amp/ (or similar) showing pending decisions: lot photo + key specs + AMP's recommendation + cost-in + projected margin - "Approve" / "Reject" / "Hold for me to review" buttons - "Approve" doesn't trigger live bid; queues for Phase 4 explicit authorization

IT: - Confirm Brandon's Copart account credentials accessible via Chrome session (existing pattern) - No new account work for Phase 1

SE-Infra: - Per-platform rate limit predicate (don't slam Copart with too many requests/min) - Already-in-place harness gates fire on every ingest → audit log surfaces every lot evaluated

Phase 2 — IronPlanet + Ritchie Bros + FB Marketplace, all asset classes (2-5 weeks)

This is the big expansion. Add three platforms and full asset-class coverage simultaneously since the per-asset evaluator + SourceAdapter abstraction from Phase 1 makes per-platform-per-asset combinations cheap.

SE-App: - IronPlanet adapter — heavy equipment platform; tank-rich; commercial truck inventory. Same chrome-enricher pattern; Brandon's logged-in IronPlanet session. - Ritchie Bros adapter — scheduled auctions; cross-border conduit hypothesis per ctp-mx-ritchie-bros.md. Different polling cadence (scheduled events vs continuous listings). - Facebook Marketplace adapter — local; bilingual common; messy data. Per-asset-class search queries. Chrome-attached to Brandon's logged-in FB session. Geographic filtering critical (only lots within reasonable transport distance, e.g., <500 mi from Phoenix). - Per-asset-class evaluators — extend fit.evaluate_fit to handle tanks, pumps, parts-trucks (each gets its own evaluator function with class-specific criteria; not just truck-style buy-box). - Cross-asset routing — a discovered lot gets routed to its asset class first; whole-trucks get marginal-fit fallback to parts-truck destination.

IT: - IronPlanet account credentials if Brandon doesn't have one already - Ritchie Bros account if applicable - FB Marketplace uses Brandon's personal FB session (existing Chrome integration)

chat-MC1 (strategic): - Ratify per-asset-class buy-box specs as Brandon clarifies them (probably iterative via the suggest-correction workflow on /strategy/amp-integrations.html) - Per-platform polling cadence (Copart frequent, IronPlanet daily, Ritchie Bros event-driven, FB Marketplace 2-3×/day)

Phase 3 — eBay Motors + GovDeals + Public Surplus + pre-bid photo analysis (4-8 weeks)

SE-App: - eBay Motors adapter (commercial vehicle category) - GovDeals + Public Surplus (municipal surplus; fire-department trade-ins; potentially great Wildland-Mop-Up sources) - Pre-bid photo analysis using Claude vision: detect damage-minimization patterns (cropping, lighting, angle bias) and flag elevated-risk lots before they reach Brandon

chat-MC1 / Brandon: - Per-product-line profit floors (Horse Corral, Tactical Fire, Wildland Mop-Up) — ratify before any product-line-specific bidding goes live - Per-asset-class profit floors (tanks, pumps need different floors than whole trucks)

Phase 4 — Live bidding (gated; LATER)

Requires separate Brandon ratification. Sequence: - Brandon approves a specific bid via dashboard (per-bid authorization) - AMP places via platform API or browser automation - HOLD_FOR_REVIEW fires + Q021 banned-name scan + bedrock-#1 daily monetary cap predicate - Audit log captures full chain: lot ingested → fit evaluated → recommendation produced → Brandon authorized → bid placed → outcome recorded

Bedrock alignment

  • #1 (Aggregate harm cap): every bid declares monetary_impact_cents; daily-cap predicate fires at $45K aggregate per the conservative-fallback math in amp-harness-shim. Phase 1-3 has $0 monetary impact (no bids placed).
  • #2 (No harm to customers): AMP doesn't interact with customers; this principle is N/A here.
  • #3 (Reversibility): Phase 1-3 actions are all reversible (ingest, evaluate, recommend). Phase 4 places bids — irreversible at moment of placement. HOLD_FOR_REVIEW is the structural protection.
  • #4 (Truthfulness): AMP recommendations include uncertainty signals (price confidence, damage assessment confidence). No false-confidence projections.
  • #5 (Scope): AMP stays in auction-sourcing lane. Doesn't email customers, doesn't decide product strategy.
  • #6 (Source preservation): Original auction listing data preserved verbatim alongside AMP enrichment. Brandon can always see what the platform showed vs what AMP interpreted.
  • #7 (Continuity): All decisions logged to amp_decisions + audit log; restart-safe.

Open questions (chat-MC1 strategic ratification)

  1. Per-product-line profit floors. Q021 = $47K (generic-commercial). Horse Corral max margin = $25K. Need per-product-line floors before Horse Corral lots are recommendable. Brandon ratifies via Q021 amendment.
  2. Polling cadence per platform. Copart updates throughout the day; IronPlanet has slower turnover; Ritchie Bros has scheduled auctions. Per-platform schedules tunable; chat-MC1 + SE-App propose, Brandon ratifies.
  3. Geographic filter. Phoenix-area lots get transport cost advantage. DET activation (currently dormant per desert-equipment-transport.md) changes the geography math. Today: filter to <500 mi from Phoenix; revisit at DET activation.
  4. Live-bidding go criteria. What conditions trigger Phase 4? My recommendation: Phase 1-3 running clean for 4 weeks + 100+ HOLD_FOR_REVIEW decisions reviewed by Brandon + per-product-line profit floors ratified.

What you'll see on dashboards as this lands

  • /substrate/ — audit log volume grows substantially (every Copart poll = 1+ audit rows for each lot evaluated)
  • /amp/ (Phase 1 deliverable) — pending decisions queue, per-lot detail view, approve/reject UI
  • Brandon's email/MM — alerts when high-confidence lots match buy-box (notification threshold configurable)
  • /strategy/ — this doc gets corrections via annotation as Brandon iterates buy-box specs

Strategic context

Brandon's corrections

  • [pending]

Version history

  • v0.1 (2026-05-25): Initial scoping per Brandon's "start the auction integrations functionality" directive; MC1-Code authored as Tier 4 cross-arm initiative