How It Works

An autonomous investment intelligence system built to find mispriced classic BMWs.

The Problem

Classic BMW prices vary 30-60% across platforms. A car selling for $16K on Copart is worth $28K on the enthusiast market. An E46 M3 in Japan sells for $31K — import it to the UK and it's worth $57K. These spreads exist because auction platforms don't understand variant-level value. A "330i" could be a regular sedan or a ZHP performance package worth 2x more.

The Edge

Domain knowledge applied at scale. The system distinguishes 18 specific variants across 5 BMW platforms (E28, E30, E36, E39, E46), identifies misidentified cars via VIN decoding, calculates cross-market spreads in real-time, and sends deal alerts to Telegram and Slack when opportunities surface.

Architecture

DATA SOURCES                    PROCESSING                      OUTPUT

Classic.com ----+               +------------------+            +-- Telegram Alerts
                |               |                  |            |
BaT Auctions ---+---> SQLite ---> Deal Scoring     +---> Web --+-- Slack #bmw
                |      DB       |  VIN Decode      |   Dashboard|
Cars & Bids ----+               |  Mileage Curves  |            +-- JSON API
                |               |  Arbitrage Calc   |
Copart/IAAI ----+               |  Condition Class  |
                |               +------------------+
Goo-net Japan --+
                |               Cron Schedule:
Exchange Rates -+               BaT:    3x/day
                                C&B:    1x/day
Google Trends --+               RSS:    6x/day
                                Analysis: weekly

Data Pipeline

Collection Layer

5 data sources scraped automatically. Playwright browser automation for auction sites (BaT, C&B, Classic.com). REST API for Copart/IAAI via auction-api.app. HTTP for exchange rates and Goo-net Japan export inventory.

Intelligence Layer

6 analysis types. Deal scoring (below-market detection). VIN decoding (M-car identification, salvage history). Mileage-price depreciation curves. Condition classification from listing titles. Transmission premium calculation. Cross-market arbitrage (Japan, salvage, BaT vs Classic.com).

Alert Layer

Real-time notifications. Alerts when a car sells >15% below market, when a reserve isn't met on a valuable variant, when VIN decode reveals a misidentified car, or when new classic BMW inventory appears on BaT. Delivered to Telegram + Slack.

18 Tracked Variants

PlatformVariantsInvestment Thesis
E28 (1982-88) M5, 535i/535is, M535i Peak analog. M5 appreciating +37%. M535i undervalued Euro-only.
E30 (1982-94) M3, 325is, 325i Touring M3 is blue-chip ($89K avg). 325is down 29% — potential buy dip.
E36 (1992-99) M3 US, M3 Evo, M3 Lightweight, 328i Lightweight at $160K. Manual premium +213% over auto. Rising fast.
E39 (1996-03) M5, 540i 6-speed, 530i Sport M5 up 16%. US premium 35% over EU (arbitrage watch).
E46 (1999-06) M3 manual, M3 CSL, 330i ZHP, 330Ci, 328i M3 overtaking E36 in value. ZHP +66% premium for low-mileage.

Tech Stack

Backend: Python, SQLite, Flask, Playwright, playwright-stealth
Infrastructure: DigitalOcean VPS, Nginx, Let's Encrypt SSL, cron scheduling
APIs: NHTSA VIN decoder, auction-api.app (Copart/IAAI), exchangerate-api.com, Google Trends
Notifications: Telegram Bot API, Slack Incoming Webhooks
Frontend: HTML/CSS, Chart.js — no frameworks, no build step
Data: 5,000+ transactions, 400+ auction listings, 18 variants, 5 platforms

Built by

Sensvi

Data engineering, market intelligence, autonomous systems