← all posts
// economics · commercial-models

Commercial vs free models for customer-support automation: latency, throughput, and queues

Free wins on latency, until it doesn't. A model warm on your own hardware answers without leaving the building; an API call crosses the WAN, queues behind whatever else that fleet runs, and comes back. Local wins that race only when it's the sole thing waiting on the GPU.

Say "commercial versus free" and you've bundled three arguments into one sentence. A paid API is inference wrapped in a service you don't operate. A free tier is that same service, cheaper, worse guarantees, still commercial once it breaks. An open-weight model is neither: an artifact whose license may or may not be open, and local still costs electricity and maintenance. You've moved the invoice from tokens to a power bill and your own attention.

What actually gets measured

The unit that matters: a case resolved correctly, or escalated safely. The input is ticket history, policy text, safe account facts, and a short list of approved actions. The failure you fear isn't a slow answer, it's a confident wrong one: a policy misquote stated with certainty, or an unapproved account action. A cheap generation that fails validation and eats ten minutes of a reviewer's day was never cheap.

Cold start, first token, sustained generation, load behavior, and tail latency are separate properties, not one number called "speed." Run the free side as an open-weight or free-tier model in a narrow workflow, the commercial side as an API picked for multilingual reasoning and tool use. Use the real model revision and today's price, but keep both out of the permanent rule: catalogs reshuffle, free allowances vanish, quantizations improve.

The stopwatch trap, and who earns the work

Timing a warm, batch-of-one local model against a provider's published average and calling the gap "latency" is comparing two weather reports. Attach every number to a workload and a time window. Grade failures by cause: missing evidence, an ignored instruction, malformed output, wrong reasoning, a failed tool call, an unsafe action. Those labels are what let you route with confidence, closer to a local-first cascade than one provider chosen once.

Commercial capacity earns its keep on bursty, global traffic, where elastic scaling saves real work. That's no argument for sending everything to the flagship model: put a cheaper commercial tier in, and cap reasoning effort before your budget does. Local earns its keep on steady, narrow, repeatable traffic, clearing the latency bar without a queue, an edge that fades once the model barely fits or needs a runtime one engineer understands. Spare GPU capacity isn't free if some other job loses its slot for it.

Leave yourself a door out

Put anything provider-specific behind one adapter, and store prompts and schemas in version control, not a vendor's thread object. The instinct behind a 99-percent cost architecture applies: a routing decision only holds if its cost and failure mode are visible. Contract-test streaming, tool calls, structured output, errors, and token accounting on every route. Make the fallback explicit. If the commercial API drops and local becomes the answer, say so. If local capacity runs out, don't quietly ship account details to a remote provider. Privacy rules run before capability routing. No exceptions.

None of this stays settled. A setup at ten thousand tickets a month can be wrong at a hundred thousand; a model that choked last year might work now behind a better quant, and a free tier can vanish overnight. Re-check whenever traffic, versions, prices, or your review habits move.

I'd still run the cheaper path for the steady stuff and save the elastic one for spikes, and that's partly instinct: I haven't measured every model and workload combination there is, and neither have you.

#commercial-models#open-models#cost