Module 7: Technical comparison of providers

The full comparison table

You've reached the quick reference capsule. Here we consolidate everything learned in the module (and the whole path so far) into a single view. It's not a capsule to read linearly — it's a capsule to bookmark and return to when you have to decide or explain.

By the end you'll be able to:

  • Have on hand a master table of the 5 providers across all dimensions
  • Recognize in seconds which provider is best for which case
  • Share the table with your team or cofounder as a common reference
  • Adapt the table to your product by adding or removing dimensions according to your context

The master table

Data as of early 2026. The numbers change — use this table as a structural template, not as eternal truth. Replace with your real benchmarks for production.

Executive summary

ProviderTypeSetupTypical P95 latencyCost /M tokensTypical qualityWhen it wins
OpenAIManaged cloud5 min1.5-3s$0.15-$2.50 input⭐⭐⭐⭐⭐Safe default, MVP, high quality
AnthropicManaged cloud5 min1.8-3.5s$3-$15 input⭐⭐⭐⭐⭐Complex reasoning, long contexts
OpenRouterAggregator5 min2-4s$0.07-$15 (variable)⭐⭐⭐⭐Multi-model, fallback, low cost with OSS
LM StudioLocal (GUI)10 min4-8s (local CPU/GPU)$0 operational⭐⭐⭐Local dev, privacy, no API key
OllamaLocal (CLI)15 min3-7s (varies by hardware)$0 operational⭐⭐⭐On-prem production, Docker integration
ModalServerless GPU20 min2-4s (warm) / 15-30s (cold)GPU-second⭐⭐⭐ (OSS model) to ⭐⭐⭐⭐⭐ (if you put a GPT-equivalent)Variable traffic, OSS models without DevOps

By technical dimension

DimensionOpenAIAnthropicOpenRouterLM StudioOllamaModal
Setup5min5min5min10min15min20min
HostingUS / multiUSUS / EU configurableLocalLocal / VPSMulti-region
AuthAPI keyAPI keyAPI keyNo auth (local)No auth (local)Bearer token
Available models~10 (closed)~6 (closed)100+ (open + closed)Open (HF)Open (curated)Any (open)
Streaming✅ SSE✅ SSE✅ SSE✅ SSE✅ SSE✅ with your impl
Function calling✅ Mature✅ Mature⚠️ Depends on the model⚠️ Limited⚠️ Limited✅ with your impl
Strict JSON mode⚠️ Depends on the model⚠️ Limited⚠️ Limited✅ with your impl
Multimodal (vision)✅ gpt-4o✅ Claude 3+⚠️ Some models⚠️ Some⚠️ Some (llava)✅ with your impl
Vendor lock-inMedium-highMedium-highLow (multi-model)LowLowLow (your code)

By economic dimension

DimensionOpenAIAnthropicOpenRouterLM StudioOllama (self-host)Modal
Cost modelPer tokenPer tokenPer token$0 + hardware$0 + hardware/VMGPU-second
Initial free tierLimited trialCreditsCreditsN/AN/A$30/month
Cost for 10K req/month~$5-50~$15-100~$1-30$0$0 (local)~$10-30
Cost for 1M req/month~$500-5000~$1500-15000~$100-3000$0 (doesn't scale this way)~$720 (1 GPU)~$300-1500
Warm pool / fixedN/AN/AN/AN/AYes: VM 24/7Optional with min_containers
Cost predictabilityHigh (per token)High (per token)HighN/AVery high (fixed)Medium (depends on usage)
Cost optimization availableCaching, small modelsCaching, prompt batchingSwitch to a cheaper modelN/AOptimize batchingQuantization, GPU sizing

By operational requirements

RequirementOpenAIAnthropicOpenRouterLM StudioOllamaModal
Needs external API key
Needs a credit card✅ (after free tier)
Works offline
DevOps neededMinimalMinimalMinimalMinimalMedium-highMinimal
Human maintenanceNear zeroNear zeroNear zeroLowMediumLow
Autoscaling✅ Auto✅ Auto✅ Auto❌ (manual)✅ Auto
Cold startsNoNoNoNoOnly on startupYes (mitigable)
Enterprise support / SLA✅ Plans✅ Plans⚠️ Limited⚠️ Pro plans

By compliance / privacy requirements

RequirementOpenAIAnthropicOpenRouterLM StudioOllamaModal
SOC2 Type IIVerifyN/AN/A
HIPAA BAA✅ (plans)✅ (plans)Verify⚠️ You control it⚠️ You control itVerify
GDPR✅ (local)✅ (local)
EU data residency⚠️ Configurable⚠️ Configurable⚠️ Per provider✅ (local)✅ (local)✅ with EU region
No data retention for training✅ default✅ defaultDepends on provider
On-premise possibleLimited (Bedrock)

The "what I use each one for" table

Quick mapping of use case → primary recommendation + alternatives:

Use casePrimary recommendationAlternativesWhy
MVP with a tiny budget ($0)LM Studio or Ollama localOpenRouter free tierNo paying and you learn
Quick MVP to validateOpenAI GPT-4o-miniAnthropic Claude 3.5 Haiku5min setup, high quality, low cost at low volume
High-volume B2C productOpenRouter with Mistral/MixtralSelf-hosted if volume >2M req/monthLow cost, acceptable quality
Premium B2B productOpenAI gpt-4o or Anthropic Claude 3.5 SonnetModal with Mixtral 8x22BQuality matters more than cost
Medical / legal assistantAnthropic Claude (reasoning)OpenAI gpt-4oPrecision + reasoning
Multi-language chatbotOpenAI or AnthropicOpenRouter with a specialized modelRobust multilingual support
Nightly batch analysisOpenRouter with MistralModal with quantizationLow cost, latency doesn't matter
Burst traffic (events)ModalOpenAI with external autoscalingServerless scales automatically
Mandatory on-prem privacyOllama self-hostedLM Studio on dedicated machinesData never leaves
Local dev / experimentationLM Studio (GUI) or Ollama (CLI)Modal with free tierNo cost, fast iteration
Multi-provider fallbackOpenRouterYour Unified Client (M08)Automatic failover
Edge / IoT with a lightweight LLMOllama on device + a small modelLM Studio with phi-3Local, no network

Quick decision diagram

Privacy/on-prem constraint?
├── YES → Ollama or LM Studio (local)
└── NO ↓

Expected monthly volume?
├── < 50K req/month → OpenAI GPT-4o-mini or Anthropic Claude Haiku
├── 50K-500K req/month ↓
│   ├── Quality critical → OpenAI gpt-4o or Anthropic Claude Sonnet
│   ├── Cost critical → OpenRouter Mistral
│   └── Burst traffic → Modal
└── > 500K req/month ↓
    ├── GPT-4 quality mandatory → OpenAI (more rate limit)
    ├── OSS acceptable, constant → Self-hosted Ollama
    └── OSS acceptable, variable → Modal with autoscaling

How to use this table in a decision conversation

Bad pattern: "Modal is better because it has autoscaling."

Good pattern: "For our traffic of 200K req/month with 3× bursts during business hours, Modal comes out to ~$300/month and OpenAI to ~$200/month. The cost difference is marginal ($100/month); quality decides: with GPT-4o-mini we get 86% on our eval set, with Mistral 7B we get 69%. If you need the 86%, OpenAI; if 69% is enough, Modal gives us model control. I recommend OpenAI given our SLA."

The difference: the second is a technical decision with numbers.


Common traps when using comparison tables

Trap 1 — "I trust a blog's table." Blog tables age. Prices change, models come and go. This table is a template. Replace it with your benchmarks before committing.

Trap 2 — "Little stars are a metric." "⭐⭐⭐⭐ vs ⭐⭐⭐⭐⭐" isn't measurable information. Those little stars in this table are indicative for getting started; your real decision goes with numbers.

Trap 3 — "A single table decides everything." A table is input. The decision includes: team familiarity, enterprise support, legal contracts, the provider's roadmap. The table narrows down, it doesn't decide.

Trap 4 — "I don't consider combining providers." Your product can use OpenAI for complex reasoning + Modal for cheap high volume + Ollama local for dev. The choice doesn't have to be one-size-fits-all.


Exercise

Adapt this table to your product. Specifically:

  1. Remove dimensions you don't care about. If you don't do multimodal, delete the row. If you don't need HIPAA, delete that one.
  2. Add dimensions you do. Do you care about Spanish support? Latency from your specific region? Compatibility with your API gateway?
  3. Replace the generic numbers with benchmarks you measured in capsules 02-04.
  4. Mark your top 3 with a one-line explanation each.
  5. Paste it into your repo (docs/llm-providers.md) or the team's Notion.

This is shared team infrastructure. When a PM asks "do we use OpenAI or Anthropic for X feature?", the table is the first answer.


Summary

You have:

  • ✅ A master table structured by technical, economic, operational and compliance dimensions
  • ✅ A use-case → primary recommendation + alternatives mapping
  • ✅ A quick decision tree for a conversation with stakeholders
  • ✅ Recommendations on how to use tables in technical discussions

Checkpoint: if you open this capsule 6 months later and can decide in 30 seconds which provider to evaluate for a new case, the table is doing its job.


Next capsule

08 — Project: decision tool. We close the module by building an automated Python tool that takes a requirements profile as input (volume, target latency, budget, constraints) and emits a recommendation with justification. It's the executable materialization of everything learned in M07.


Resources

  1. Artificial Analysis — Provider Comparison — updated public comparative benchmarks.
  2. LLM Performance Leaderboard (Vellum) — quality benchmarks.
  3. LMSys Chatbot Arena — paired human-eval comparison.
  4. Awesome LLM Ops — curated list of tools.