Skip to content

optimizedwf/partsnap

PartSnap · License: MIT Python TypeScript

AI-powered automotive parts identification and diagnostics for independent repair shops.

PartSnap closes the diagnostic-to-parts gap. Snap a photo of a failed part — AI identifies it, matches it to the vehicle's VIN, resolves the OEM part number, checks pricing and availability, and drafts a repair order. OBD-II diagnostics, VIN decoding, recall checks, and DMS integration all in one system.

Built by Adam Normandin at Vector Data.


What it does

Capability Description
Visual part identification Snap a photo at the lift — AI identifies the part, assesses condition, flags urgency
VIN decoding NHTSA-powered VIN decode → exact year/make/model/trim/engine/transmission
OEM part resolution Maps identified parts to OEM numbers with supersession awareness
OBD-II diagnostics Bluetooth adapter → live DTC reading, freeze frame, live data dashboard
Recall & complaint lookup NHTSA safety recall + consumer complaint database for any vehicle
Repair estimates Parts list, real-world labor times, difficulty ratings, related parts
Order drafts Parts counter approval workflow with DMS write-back
Multi-agent chat Routes sales/technical/onboarding/support to specialized AI agents
Shop templates Drop-in bot templates for pi/Claude-powered shop assistants

Architecture

┌──────────┐    Bluetooth     ┌──────────┐     HTTP/WS     ┌──────────────┐
│  OBD-II  │ ◄──────────────► │  Mobile / │ ◄────────────► │  PartSnap    │
│  Adapter │    ELM327        │  Browser  │                │  API (FastAPI)│
└──────────┘                  └──────────┘                └──────┬───────┘
      │                          │                               │
  Vehicle ECU              Web Bluetooth API           ┌─────────┴──────────┐
  CAN bus                  or Native BLE               │                    │
                                                    ┌──▼──────┐    ┌───────▼──────┐
                                                    │ Vision  │    │ NHTSA APIs   │
                                                    │ AI      │    │ (VIN/Recall/ │
                                                    └─────────┘    │ Complaints)  │
                                                                   └──────────────┘

Quick Start

Python API

# Install dependencies
pip install -r requirements.txt

# Set up environment
cp .env.example .env
# Configure AI_PROVIDER and credentials in .env

# Run the API server
python -m uvicorn api.main:app --reload --port 8000

# Open API docs
open http://localhost:8000/docs

Next.js Landing Page

cd landing
npm install
cp ../.env.example .env.local
# Add GEMINI_API_KEY to .env.local
npm run dev

Bot Skills (for pi / Claude)

Copy skills/ and templates/ into your bot workspace, customize templates/USER.md with shop details, and wire up the skills.


API Reference

Core Endpoints

Method Endpoint Description
POST /identify Upload part photo + optional VIN → identified part + OEM number
POST /decode-vin Decode 17-character VIN → full vehicle details
POST /diagnose OBD-II scan (live/emulator/manual) → DTC codes + recommendations
POST /order-drafts Create supervised order draft from identification
GET /order-drafts List order drafts (filterable by status)
POST /order-drafts/{id}/review Approve or reject a draft
GET /exports/orders.csv Export approved orders as CSV
GET /health Service health check

Full interactive docs at http://localhost:8000/docs (Swagger UI).


Repo Structure

partsnap/
├── api/                         # Python FastAPI backend
│   ├── main.py                  # App entry point + all endpoints
│   ├── models.py                # Pydantic data models
│   ├── vision.py                # Provider-agnostic vision identification
│   ├── vin_decoder.py           # NHTSA VIN decode
│   ├── parts_lookup.py          # OEM parts catalog resolution
│   └── obd_scanner.py           # OBD-II adapter interface
├── skills/                      # AI bot skills
│   ├── diagnostics/             # OBD-II codes, parts matching, repair estimates
│   ├── vehicle-data/            # NHTSA VIN decoder, recalls, complaints
│   └── web-search/              # Real-time parts pricing & availability
├── landing/                     # Next.js landing page + chat
│   ├── page.tsx                 # Landing page with feature rows
│   ├── components/ChatHero.tsx  # Chat interface with SSE streaming
│   ├── api/route.ts             # Multi-agent chat API with lead capture
│   └── globals.css              # Dark theme + animations
├── docs/                        # Technical documentation
│   ├── obd-bluetooth-integration.md
│   ├── dms-integration.md
│   └── parts-database.md
├── templates/                   # Deployment scaffolding
│   ├── SOUL.md                  # Bot personality
│   ├── AGENTS.md                # Non-negotiable rules
│   └── USER.md                  # Shop-specific customization
└── .github/                     # CI/CD + community
    ├── workflows/ci.yml          # Lint, typecheck, tests
    └── ISSUE_TEMPLATE/           # Bug report & feature request

AI Provider Configuration

Set AI_PROVIDER in .env to one of:

Provider Required keys Notes
pi None (uses local pi CLI) Recommended for Claude-powered setups
anthropic ANTHROPIC_API_KEY Direct Anthropic API
openai OPENAI_API_KEY GPT-4 Vision
gemini GEMINI_API_KEY Gemini multimodal
openclaw OPENCLAW_TOKEN OpenClaw Gateway endpoint

If unset, auto-detects in order: piopenclaw → API keys.

Supported OBD-II Adapters

Adapter Protocol Price Recommended
OBDLink MX+ BT Classic + BLE ~$100 ✓ Best for shops
OBDLink CX BLE only ~$80 ✓ iOS compatible
Veepeak OBDCheck BLE+ BLE ~$35 Budget option
BAFX Products 34t5 BT Classic ~$25 Android only

See docs/obd-bluetooth-integration.md for full implementation guide.

DMS Integration

Write-back to shop management systems:

  • API-based: Tekmetric, Shopmonkey, AutoLeap, Shop-Ware
  • File-based: Mitchell1, NAPA TRACS

See docs/dms-integration.md for integration details.

Contributing

PartSnap is open source and welcomes contributions. See CONTRIBUTING.md for:

  • Development environment setup
  • Code standards (Python + TypeScript)
  • Pull request process
  • Testing guidelines
  • How to add new skills or API endpoints

License

MIT — see LICENSE for full text.

Built by Adam Normandin at Vector Data.

About

AI-powered automotive parts identification and diagnostics for independent repair shops. Photo-to-part-number, OBD-II diagnostics, VIN decoding, recall checks, and DMS integration.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors