Commercial vs free models for customer-support automation: licenses, terms, and redistribution
A ticket comes in. The model reads history and policy, then decides: answer, or hand off to a person. That's the job.
Four things get lumped under "which model": a paid API bundling inference with support, a free tier that's rate-limited commercial access, open weights whose license may not be open source, and local inference, trading the invoice for hardware. None of that says what you're allowed to do. Read the license first.
The case is the unit, not the token
The unit is a case resolved or safely escalated, nothing smaller. Inputs are ticket history, policy excerpts, account-safe facts, and a list of approved actions. The characteristic failure is a confident policy mistake or an unauthorized account action. A cheap answer that fails validation and eats reviewer time can cost more than a pricier one that finishes once.
Quality gate: resolution accuracy, escalation quality, handling time, policy compliance. Label every failure by cause instead of discarding it: missing evidence, bad reasoning, tool error, unsafe action. Those labels are what make routing useful.
Run both routes on identical evidence and log what each one is:
| Log this | Why |
|---|---|
| Model, revision, license | pins behavior to what you can ship |
| Outcome: pass, retry, abstain, repair | the real cost driver |
Use real IDs and prices in the experiment, not the rule; catalogs shift, quants improve.
License terms decide who gets to be cheap
Commercial wins when contractual support fits the job better than an artifact's obligations do. Not license to default to the priciest API: add a cheaper tier to the comparison and cap output length and reasoning effort first.
Free or open-weight wins when the license permits your use and the deployment matters strategically. Its edge grows with steady, repeatable traffic and shrinks when the model barely fits or needs a specialist to run.
The recurring mistake: picking a model off a price sheet before reading its license. Tie every number to a workload and a time window; price and tokens-per-second are diagnostic, not outcomes. Report cost per case, p95 latency, failure severity, human attention required.
Build the seam you'll need when the vendor changes
Put provider handling behind one adapter, prompts in version control, case state outside any vendor object, and contract-test streaming, tool calls, and errors for every route you ship.
Falling back to local when the API is down is fine if users know something changed. If local capacity runs out, shipping data remotely defeats the point: privacy outranks capability routing.
Re-run the comparison when traffic, prices, licenses, or utilization shift. A choice right at ten thousand cases a month can be wrong at a hundred thousand; free tiers vanish without a changelog entry. "Free" and "commercial" are procurement labels, not engineering ones.
None of this is what most teams ship first. Most wire in the second provider only after the first breaks in production, license review included.