# DeepSeek vs Local Ollama — Cost Comparison

## Per-Scan Cost (Appointment Screenshot Extraction)

| | DeepSeek V4 Flash | Local qwen2.5:14b (Ollama) |
|---|---|---|
| OCR step | Free (browser Tesseract.js) | Free (browser Tesseract.js) |
| LLM input tokens | ~2,000 tokens | ~2,000 tokens |
| LLM output tokens | ~400 tokens (non-thinking) | ~400 tokens |
| **Per-scan cost** | **$0.0004** | **$0.0015** (GPU power) |
| **Scans per dollar** | ~2,500 | ~667 |
| **Annual (daily)** | ~$0.15 | ~$0.55 |

## Token Breakdown

Typical appointment screenshot (10 appointments):
- System prompt: ~1,200 tokens (extraction rules, OCR artifact fixes, VIN recovery)
- OCR text: ~800 tokens (raw text from 10 appointment rows)
- Output JSON: ~400 tokens (structured appointments array)
- Total: ~2,400 tokens

## Pricing (DeepSeek V4 Flash, June 2026)

| | Per 1M tokens |
|---|---|
| Input (cache miss) | $0.14 |
| Output | $0.28 |

Note: Cache hits are rare for one-off scan requests. The system prompt is large (~1,200 tokens) and repeatable across scans, so cached input could drop cost 95% if DeepSeek's KV cache covers it.

## Thinking Mode

V4 Flash defaults to **thinking mode** (adds ~200 internal reasoning tokens to output). Disabling via `thinking: {type: "disabled"}` keeps costs at the lower rate. The appointment extraction task is straightforward structured parsing — thinking adds cost with no accuracy benefit.

## Privacy Trade-off

- **DeepSeek**: Customer names, phone numbers, VINs, and vehicle details are sent to DeepSeek's cloud API servers
- **Ollama**: All data stays on the local GPU (RTX 2080 Ti FE, 11GB VRAM)
- Cost difference is negligible at ~$0.40/year — the deciding factor is privacy preference
