Skip to content

About

LLM-orchestrated vehicle purchase research framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Auto Valuation Toolkit

A vehicle purchase research framework where an LLM orchestrates Python scripts to scrape, normalize, analyze, and compare used car listings across fragmented data sources. Built for Claude Code.

What this is

16 Python scripts that scrape auction results, dealer listings, and local marketplace inventory into a unified SQLite schema. An LLM reads the CLAUDE.md file, decides which scripts to run, synthesizes results conversationally, and accumulates knowledge across sessions via persistent memory files.

There is no CLI wrapper, no web UI, no standalone app. The conversation is the interface.

What's novel

The scripts themselves are straightforward Python. What's different is the architecture:

  • LLM as orchestrator. The LLM reads CLAUDE.md to understand the toolkit, calls scripts based on conversational context, and synthesizes across sources. No predefined pipeline — the LLM adapts to what the user is asking.

  • Layered LLM context. The project ships with three layers of LLM instructions: CLAUDE.md (core conventions, always loaded), .claude/rules/ (methodology and source-access patterns, always loaded), and .claude/skills/ (schema and script reference, loaded on demand). This is part of the methodology — the instructions are the orchestration layer.

  • Cross-session memory. The memory-examples/ directory shows how the LLM accumulates knowledge between sessions: which cars were evaluated and why they were passed, what the user's priorities are, what was tried and what failed. This is the state layer that makes multi-session research coherent.

  • Source-specific bypass catalog. Each data source has its own bot detection. The hard-won knowledge of what works where (curl + Sec-Fetch for Akamai, --headless=new for Cloudflare, response body capture for Facebook, __NEXT_DATA__ for OfferUp) is shipped as always-loaded rules in .claude/rules/source-access.md.

  • Cross-source normalization. Auction results (sold/DNM with dates), dealer listings (active with mileage), and private-party posts (asking prices with locations) all flatten into one listings table with provenance, transmission, and mileage parsed from natural-language titles. Cross-post deduplication links the same car across platforms.

  • Local-first methodology. Most valuation tools start with national guides. This inverts it — scrape local inventory first, present it first. National auction data is context; local asking prices are actionable.

Data Sources

Source Script Method
Bring a Trailer scrape_bat.py Playwright, DOM extraction
Cars & Bids scrape_cab.py Playwright, --headless=new
Cars.com scrape_carscom.py curl + browser headers (Akamai bypass)
OfferUp scrape_offerup.py Playwright, __NEXT_DATA__ JSON
FB Marketplace scrape_fbmp.py Playwright persistent profile
NHTSA nhtsa_fetch.py Free API, no auth

Setup

# Clone
git clone git@github.com:chadmlarsen/auto-valuation-toolkit.git
cd auto-valuation-toolkit

# Install dependencies
pip install -r requirements.txt
playwright install chromium

# FB Marketplace only: one-time login
# (creates a persistent browser profile)
python -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    ctx = p.chromium.launch_persistent_context(
        '~/.config/playwright-fb-profile', headless=False)
    input('Log into Facebook, then press Enter...')
    ctx.close()
"

Quick Start

Open Claude Code in this directory. It reads CLAUDE.md automatically. Then:

> Let's research Porsche 911s in the Denver area

> Run stats on what we've collected

> I found a 2015 911 Carrera S on OfferUp for $62K with 45K miles. How does it compare?

> Look up VIN WP0AB2A95FS123456

The LLM handles script invocation, result synthesis, and state tracking.

Project Structure

auto-valuation-toolkit/
├── CLAUDE.md                   Core LLM instructions (lean, always loaded)
├── .claude/
│   ├── rules/
│   │   ├── methodology.md      Research discipline (always loaded)
│   │   └── source-access.md    Platform bypass catalog (always loaded)
│   └── skills/
│       ├── schema-reference/   SQLite schema (loaded on demand)
│       └── script-reference/   Script invocation patterns (loaded on demand)
├── scripts/                    16 Python helper scripts
├── memory-examples/            How cross-session knowledge accumulates
└── [Model Name]/               Created per model (not checked in)
    ├── data.db                 SQLite database
    ├── research/               Raw artifacts (PDFs, HTML, screenshots)
    └── valuations.md           Narrative valuation report

Requirements

  • Python 3.9+
  • Claude Code (or any LLM with tool use and filesystem access)
  • Playwright (for browser-based scrapers)
  • curl (for Cars.com)

License

GPL v3

About

LLM-orchestrated vehicle purchase research framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages