# ShopProQuote File Map

| Page | HTML | JS | Notes |
|------|------|-----|-------|
| Index/Dashboard | `index.html` | `dashboard.js` | Main dashboard, daily briefing, Repair Orders |
| Appointments | `appointments.html` | `appointments.js` | OCR scan, VIN decode, appointment management |
| Repair Orders | `repair-orders.html` | `repair-orders.js` | RO creation/edit, service lines, parts |
| Customers | `customers.html` | `customers.js` | Customer lookup and management |
| Login | `login.html` | `login.js` | Firebase auth (migrated to PocketBase) |

## Shared Modules (loaded by HTML pages via `<script type="module">`)

| Module | File | Used By |
|--------|------|---------|
| PocketBase adapter | `pocketbase.js` | All pages |
| API utilities | `api.js` | Dashboard, Repair Orders |
| Quote tab manager | `quote-tab-manager.js` | Repair Orders |
| UI utilities | `ui.js` | All pages |
| Settings | `settings.js` | Dashboard, Appointment, RO |
| Customer lookup | `shared/customer-lookup.js` | RO, Appointments |
| Modal manager | `shared/modal-manager.js` | All pages |
| Styles | `style.css` | All pages |

## Key Function Locations

- **Daily Briefing**: `dashboard.js` → `generateDailyBriefing()`, called by inline script in `index.html`
- **AI Write**: `api.js` → `handleAiWrite()`, called from `quote-tab-manager.js` modal handlers
- **AI Suggest**: `quote-tab-manager.js` → inline system prompt, calls DeepSeek V4 Flash
- **OCR Scan**: `appointments.js` → Tesseract.js PSM4
- **VIN Decode**: `main.js` → `handleDecodeVin()`, calls `/api/` → PocketBase
