How It Works
The TrimIndex Score is a composite rating built from six independent dimensions. Every number is derived from primary data sources — government databases, EPA testing, and aggregated owner reports — with no editorial guesswork.
Each dimension contributes a weighted percentage to the composite score. Weights reflect how much that attribute affects long-term ownership satisfaction for a battery-electric vehicle. Users can adjust weights via sliders — the adjusted composite is recomputed client-side and shareable via URL.
State of health curve modeled from fleet data, warranty terms, and chemistry type. AI modifier adjusted by owner reports of degradation.
Forum and Reddit sentiment score aggregated across classified owner excerpts, calibrated against class peers.
EPA-certified range and kWh/100mi mapped to percentile bands within the same model year. AI modifier adjusted by real-world owner reports.
NHTSA complaint density per month (recalls, complaint rate, DO_NOT_DRIVE advisories), adjusted by owner build-quality sentiment.
OTA update cadence, feature completeness, and software-dimension complaint rate. AI modifier from tech-specific forum sentiment.
Age-adjusted depreciation: % difference between original MSRP and current composite market value (KBB + J.D. Power). Greater depreciation from MSRP = higher Value score. Above-MSRP pricing scores near zero.
Four dimensions use a hybrid approach: a deterministic formula baseline plus a bounded AI modifier (±8 points maximum). The AI modifier is applied by the rate-dimension skill running via the Claude CLI at scan time.
Evidence requirements prevent hallucination: a modifier of ±3 or more requires at least 2 cited sources (complaint IDs, forum threads, recall campaigns). A modifier of ±6 or more requires 3 sources. Low-data vehicles are capped at ±3. The AI never overrides hard data — it can only shade within the allowed band.
Full recall and complaint databases, updated daily. Provides recall campaign details, complaint narratives, DO_NOT_DRIVE and PARK_OUTSIDE advisory flags, and vPIC vehicle specifications.
Official EPA-tested range (miles) and efficiency (kWh/100mi) per vehicle trim. Fetched once per model year from fueleconomy.gov.
Original MSRP and Fair Purchase Price per trim, scraped via Firecrawl. Used to compute the Value dimension and market delta.
Consumer Verified score (0–100, from owner surveys) and Verified Fair Price at model level, denormalized across all trims. Displayed as independent third-party validation alongside the TrimIndex Score.
Owner excerpts classified by dimension and sentiment using the classify-sentiment skill. Sources include r/electricvehicles, r/teslamotors, r/BoltEV, r/BMWI4, and 10+ model-specific forums. ~2,300 classified excerpts per canary scan.
The Value dimension is pure math — no AI involved. It compares the original MSRP to the current composite market value from KBB and J.D. Power:
The age adjustment prevents penalizing vehicles that have depreciated normally — a 5-year-old car is expected to be worth 40–60% of MSRP. The curve is calibrated against class-average depreciation rates.
Every dimension score is calibrated against class peers sharing the same body type. This prevents a pickup truck from being penalized relative to a compact hatchback with different baseline expectations. Class benchmarks are recomputed at each scan from all scored vehicles in the fleet.
Scores are recomputed monthly via an automated pipeline. NHTSA data refreshes daily. Each rescan runs the full pipeline: NHTSA ingestion → EPA specs → KBB/J.D. Power pricing → forum sentiment classification → hybrid dimension scoring → intelligence synthesis. Score history is retained — you can see if a vehicle improved or degraded over time.
Each hybrid dimension displays a confidence level: High (10+ evidence sources), Medium (5–9), Low (2–4), or Insufficient (<2). When confidence is insufficient, the AI modifier is not applied — only the deterministic formula baseline is used. New or rare vehicles default to the formula score until enough owner data accumulates.