Max Laktsionau, Forward Deployed Engineer at AdvantageWorks Max Laktsionau 16 min read AI-assisted

How to Choose Between GPT, Claude, Gemini and Open Source

Overhead flat-lay of five printed evaluation sheets on a slate worktop, labelled Task Fit, Latency, Total Cost, Residency and Exit Cost

A model comparison written in March is a historical document by September. The benchmark table that justified it is stale. The model that won has been superseded by its own vendor. And the reasoning that produced the choice was never written down anywhere it could be re-run.

What survives is the contract, the integration, and a quiet assumption nobody wants to re-litigate.

That is the real failure mode in model selection, and it is not solved by picking better. It is solved by deciding differently.

So the thing worth building is not the choice. It is the procedure that produces the choice, and the evidence it ran on. Which criteria actually resolve GPT versus Claude versus Gemini versus open weights, how to weight them against your own workloads, where the money genuinely changes hands between an API and a GPU, and why most organisations that run this exercise honestly stop looking for a winner and start routing. The models on today's leaderboard will not survive the year. The criteria will.

The question that decays, and the one that does not

"Which model is best" has a short half-life. Between February and April 2026 the three leading labs shipped seven frontier models between them, roughly one new state-of-the-art system every 11 days (Digital Applied, 2026), and each release reshuffles the leaderboards the previous decision was built on. Open-weight models have compressed the gap on a similar cadence, trailing the closed frontier by an average of about four months since January 2026 (GMI Cloud, 2026), with other trackers putting the lag closer to seven. Any article that ranks specific models, this one included, has an expiry date.

"How should we decide" behaves differently. The criteria that mattered two years ago still matter. Whether the model does your task well. Whether it responds fast enough under your concurrency. What it costs at your volume, whether your data can legally sit where the model runs, and how expensive it is to leave. Those did not churn. Only the values plugged into them did.

The practical consequence deserves blunt phrasing. If your selection lives in a benchmark screenshot, re-deciding means starting over. If it lives in a weighted criteria sheet with your own evaluation set attached, re-deciding means an afternoon of tests. One of those organisations adopts new models faster than the other, and adopts them for reasons it can defend to an auditor.

What goes on that sheet is the rest of this article.

State your evaluation method before you compare anything

A comparison without a stated method is a preference with a table attached.

Seven criteria cover almost every real decision. Write them down, with how each is judged, before looking at a single provider.

Task fit on your own evaluations. Not leaderboard rank. A set of real inputs from your own traffic, with pass criteria defined before you look at any output. This is the one criterion where public benchmarks mislead, because a model tuned to score well on a public set can behave differently on your domain language, your document formats, and your edge cases.

Latency and throughput at your concurrency. Median latency in a quiet test tells you very little. What matters is p95 under the request pattern you generate, including the burst shape. A model that is fast in isolation and rate-limited at your peak is slow.

Total cost at your volume. Per-token pricing is one input among several. The number that decides is monthly spend at your projected request volume and token profile, against the fully loaded cost of the alternative.

Data residency and compliance posture. Where inference runs, what is retained, what contractual commitments exist about training on your inputs, and which certifications the provider holds. This one is usually pass or fail rather than weighted.

Context window and retrieval fit. How much context the model can use well, which is not always the advertised maximum, and how that interacts with your retrieval design. A larger window sometimes replaces retrieval engineering. Sometimes it just makes each call more expensive.

Operational maturity. Rate limits and how they are raised, uptime history, deprecation and migration policy, support responsiveness, roadmap stability. This is the criterion that never appears in a comparison table and causes the most production pain.

Exit cost. How much work it is to move off this provider in eighteen months. Prompt portability, output-format coupling , dependence on provider-specific features, and how much evaluation you would need to redo.

How you judge each one belongs in a sentence next to it. "Task fit is judged by pass rate on the fifty-item golden set, minimum eighty percent, scored blind" is a method. "We evaluated task fit" is a note to self.

Weighting the criteria for your situation

The criteria are stable. The weights are not, and this is the part almost nobody publishes.

Three printed scoring sheets headed Regulated, High Volume and High Stakes, showing printed criteria weights with one row struck through in ink

Two of the seven are pass-or-fail rather than weighted. Data residency is a threshold: a provider that cannot run inference where your data is legally allowed to be processed is out, and no amount of capability compensates. Apply it first, before any scoring, because scoring a disqualified option wastes the exercise. Operational maturity behaves the same way when the workload is customer-facing.

The rest get weighted by workload profile. Three profiles cover most of what a mid-market or enterprise organisation runs.

Criterion

Regulated internal tooling

High-volume customer-facing

Low-volume, high-stakes reasoning

Task fit on your evals

Medium

High

Highest

Latency and throughput

Low

Highest

Low

Total cost at volume

Low

Highest

Lowest

Data residency

Disqualifier

High

High

Context and retrieval fit

High

Medium

High

Operational maturity

Medium

Disqualifier

Medium

Exit cost

High

Medium

Low

Read the columns rather than the rows. A regulated internal tool tolerates latency nobody would accept in a product, so speed stops differentiating and residency does the deciding. A high-volume customer-facing workload inverts that: a fractional cost difference per call compounds into the largest line on the bill, and rate limits become an availability risk rather than an inconvenience. Low-volume high-stakes work, the contract analysis and the incident diagnosis, is where paying several times more per call is obviously worth it and quality is the only thing being bought.

Fill this in for your own workloads before you look at any provider. Weights chosen after seeing the options are rationalisation with a table attached.

Where each provider actually wins right now

This section ages faster than anything else here. Read it as a snapshot, then re-run the criteria above.

The frontier proprietary models from OpenAI, Anthropic and Google have converged more than the marketing suggests. On broad general capability the practical differences for most business tasks are smaller than the difference between a good prompt and a careless one. Where they diverge is specialisation and ecosystem: coding and long-form agentic work, multimodal breadth, integration with an existing cloud estate, and the unglamorous operational details of rate limits, enterprise agreements and regional availability. (That last group is where most of the real friction lives, and it is the part nobody demos.)

Open-weight families have changed the shape of the decision more than any single frontier release. The relevant fact is a narrower one than "open has caught up". A mid-sized open model now clears the quality bar for a large share of production workloads, particularly classification, extraction, summarisation and routing. Those workloads are also the high-volume ones, which is exactly where cost and residency pressure is highest.

Smaller models deserve more attention than they get. A great deal of enterprise work does not need frontier reasoning, and the industry has been rediscovering that a smaller model, fine-tuned or well-prompted on a narrow task, is often faster, cheaper and more predictable than a large general one.

Three habits keep this section from becoming a liability:

  • Attach a date to every capability claim you record internally, so it is obvious when it went stale.
  • Never let a provider comparison outlive its evaluation set. If the evals have not been re-run, the comparison is a memory.
  • Distinguish "wins on our evals" from "wins on a leaderboard". They agree less often than you would like.

Open source, open weight, and source-available are three different things

Almost everything called an open-source LLM is not one, and the distinction has legal consequences rather than merely semantic ones.

Three printed software licence sheets headed Open Source, Open Weight and Source Available, with clause groups boxed in ink and arrows in the margin

Open source in the sense the term normally carries would mean the training code, the training data, and the weights are all available under a licence that permits use, modification and redistribution without restriction. Very few widely used models meet that bar.

Open weight means the trained parameters are downloadable and runnable, while the training data and often the training pipeline are not. This is what most people mean when they say open-source LLM. You can self-host it and fine-tune it. You cannot reproduce it, and you cannot fully audit what it learned from.

Source-available means the weights come with a licence that restricts something material: commercial use above a scale threshold, particular application categories, competitive use, or redistribution terms. The model is downloadable and the licence is not open in any conventional sense.

Why this matters on a Tuesday afternoon in a procurement review:

  • Legal will ask which licence, and "it is open source" does not survive the question. The licence name does.
  • Some licences impose obligations that attach to your product, not just your infrastructure.
  • Acceptable-use terms in several open-weight licences restrict application categories that a regulated business might be in.
  • The audit story differs sharply. Open weights let you inspect behaviour but not provenance, which matters for some compliance regimes and not others.

Record the actual licence name against every candidate model. That single field prevents most of the downstream surprises, and it costs nothing to capture while you are already evaluating.

What self-hosting actually costs

The open-versus-proprietary argument is usually conducted on principle and settled by arithmetic. The arithmetic is not complicated. It is rarely finished, because the API side of the comparison has one line item and the self-hosted side has seven.

A data-centre aisle between two rows of server racks with GPU sleds, overhead fibre cable trays and status LEDs along the rack faces

The table below is a structure rather than a quotation. The values depend entirely on your volume, your model size, your region and your existing team, so fill it in with your own numbers before drawing any conclusion.

Cost line

Managed API path

Self-hosted path

Inference compute

Per-token price, scales linearly with usage

Reserved or on-demand GPU capacity, paid whether or not it is used

Idle capacity

None, you pay per call

Real and often large, since capacity is sized for peak

Serving and scaling infrastructure

Included

Your responsibility, plus the engineering to run it

Model operations headcount

Minimal

The dominant line for most organisations

Evaluation infrastructure

Needed either way

Needed either way, plus regression testing across model updates you now own

Fine-tuning and iteration

Priced per job, if offered

Cheaper per experiment, more expensive to set up

Upgrade path

Provider ships it

You plan, test and execute every upgrade

Three observations hold regardless of the specific numbers.

The crossover is a question of volume rather than philosophy. At low and moderate request volumes, the managed API is almost always cheaper once headcount is counted honestly, because the fixed costs of self-hosting are large and the variable cost of the API is small. At sustained high volume with a predictable load shape, the economics invert, because reserved capacity running near full utilisation is efficient and per-token pricing is not.

Utilisation is the hidden variable. Self-hosting looks cheap when modelled at full GPU utilisation and expensive when modelled at the utilisation you will achieve. Model both, and treat the gap as the real risk in the estimate.

Headcount is the line people leave out, and it is usually the one that decides. Running your own inference is an ongoing operational commitment rather than a deployment. If that capability does not already exist in the organisation, the honest cost of self-hosting includes building it.

Write the assumptions next to every input. A cost model whose assumptions are invisible cannot be challenged, and one that cannot be challenged will not survive its first surprise.

Managed API, VPC, or on-premises

Deployment topology is where compliance resolves, and it gets confused with the open-versus-proprietary question constantly. They are separate axes.

Managed API. Lowest operational burden, fastest to start, least control over where inference happens. Region selection and contractual data commitments do a lot of work here, and the enterprise tiers of the major providers have moved substantially toward what regulated buyers ask for.

Cloud VPC deployment. The model runs inside your own cloud tenancy, whether that is a proprietary model offered through a hyperscaler's platform or an open-weight model you deploy yourself. Data stays inside your network boundary. Operational burden sits between the other two options.

On-premises. Full control, full responsibility, highest fixed cost. Necessary for a narrow set of requirements: air-gapped environments and certain sovereignty regimes.

Here is the misconception that costs the most money. "We need open source for data privacy" is usually false. The underlying requirement is almost always that data must not leave a boundary, or must not be retained, or must not be trained on. A proprietary model deployed inside your own cloud tenancy satisfies that, and so does a contractual commitment plus regional pinning for a large share of use cases. Open weights are one route to a residency requirement among several. Choosing them for a constraint a VPC deployment would have satisfied means paying the self-hosting bill indefinitely for nothing.

Separate the requirement from the implementation. Write down the actual constraint, ask which topologies satisfy it, and only then ask which models are available in those topologies.

Why the answer is usually hybrid

Run the weighting exercise across a real portfolio of workloads and a single provider rarely wins every column. That is the finding, not a flaw in the exercise.

A whiteboard with a hand-drawn routing diagram: a Router box with arrows to Frontier API, Open Weight and VPC, annotated by workload type

A typical shape looks like this. Frontier proprietary models handle the low-volume, high-stakes reasoning where quality is the only thing that matters and cost per call is irrelevant. A cheaper model, often open-weight and often smaller, handles the high-volume extraction, classification and routing that makes up the bulk of request traffic. Anything touching data that cannot leave a boundary runs in a VPC or on-premises deployment, whichever the constraint demands. Each workload gets the model its own weighting selected, rather than every workload inheriting one organisational preference.

This is also the honest answer to the vendor-lock-in question. Multi-provider capability buys an option more than it buys a discount. An organisation that already routes to two providers can move a workload in days. An organisation coupled to one moves in quarters, knows it, and therefore tends not to move at all.

The cost of routing is real, and any argument for hybrid that skips it is selling something:

  • An abstraction layer over provider APIs, which someone has to own and keep current as provider interfaces change.
  • Per-provider evaluation, because a prompt that performs well on one model frequently does not transfer cleanly to another.
  • Observability that works across providers, so cost, latency and quality are comparable rather than reported in three incompatible shapes.
  • Prompt and output-format portability as an explicit design constraint rather than an afterthought.
  • More surface area to secure, monitor and keep compliant.

That overhead is why hybrid is a decision rather than a default. It pays off when the portfolio is heterogeneous, which for most organisations past the pilot stage it is. It does not pay off for a single workload, and building a routing layer before there is anything to route is a common and expensive mistake.

Design for portability from the start. Add providers when a workload justifies one.

Test it on your own workload

Everything above is a framework until it meets real inputs. The evaluation set is what converts it into a decision, and it does not need to be elaborate.

A torn-edge printed evaluation form with an empty scoring table, three rows ticked and one crossed in black ink, beside a dark ceramic mug on a slate worktop

Build a golden set from actual traffic. Thirty to a hundred real inputs, covering the common cases and the edge cases you already know hurt. Real inputs, not invented ones, because invented inputs are unconsciously written to be answerable.

Define pass criteria before you look at any output. Write down what a correct response must contain and what disqualifies one. Doing this afterwards means grading against whatever the first model happened to produce.

Score blind where you can. Strip provider identity from outputs before review. Expectation shapes scoring more than most engineers believe it does.

Run every serious candidate through the same set, including the smaller and cheaper models. The frequent and useful surprise is that a cheaper model clears the bar on a workload where the expensive one was assumed to be necessary.

Re-run quarterly and whenever a provider ships a major release. This is the step that makes the framework compound rather than decay. The golden set is the asset, and it gets more valuable every time it is used.

Record the result, the date, and the criteria weights alongside it. That record is what turns the next decision into an afternoon instead of a project.

Red flags we keep running into

Patterns from multi-model deployments, in rough order of how often they cause damage.

The decision was made on a benchmark and never tested on real traffic. Nearly universal in first deployments. The model that ranks highest on general capability is frequently not the best fit for a narrow, repetitive production task, and nobody discovers this until the quality complaints arrive.

Rate limits found in production. Provider quotas surface during the first real traffic peak rather than during evaluation. Ask about limits and the process for raising them before committing.

Portability treated as a later problem. Prompts written against one provider's quirks, outputs parsed in a provider-specific shape, provider-only features used casually in core paths. Each is small. Together they are the migration.

Cost modelled on a demo rather than a load shape. Estimates built from a handful of test calls miss retries, long contexts, system prompts on every request, and the multiplication that comes from chaining calls together.

Self-hosting chosen for a requirement a VPC deployment would have met. The most expensive version of this mistake, because the operational cost is paid indefinitely for a constraint that had a cheaper solution.

No owner for the evaluation set. The set is built during selection and never re-run. Six months later nobody can say whether the choice is still right, and the next decision starts from zero.

A pilot that quietly became production. The temporary single-provider integration hardens, the abstraction that was going to be added never is, and the organisation discovers its architecture by trying to change it.

Where to start

Pick one real workload. Write the seven criteria and their weights for it before looking at any provider. Apply the disqualifiers first, build a small golden set from real traffic, and run every candidate including the cheap ones. Model the cost with the assumptions written next to the inputs. Record the result with a date on it.

That takes days rather than months, and it produces the one thing a benchmark screenshot never will: a decision you can re-run, defend, and hand to someone else.

If it would be useful to run this against your own workloads with people who have done it before, that is what our Discovery Sprint is for. One week, your actual traffic and constraints, and a written selection framework plus a roadmap at the end of it.

Frequently asked questions

Choose with weighted criteria applied to your own workloads, not with a benchmark ranking. Seven criteria decide almost every case: task fit on your own evaluation set, latency and throughput at your real concurrency, total cost at your volume, data residency and compliance, context and retrieval fit, operational maturity such as rate limits and deprecation policy, and exit cost.

Apply the pass-or-fail criteria first. Data residency is normally a disqualifier rather than a weighted score, so a provider that cannot run inference where your data is legally allowed to be processed drops out before any comparison happens. Then weight the rest by workload profile, because a high-volume customer-facing feature and a low-volume contract-analysis tool weight cost and quality in opposite directions.

The output of the exercise should be a written criteria sheet plus a golden evaluation set built from real traffic. Model rankings change every few months. The criteria and the eval set do not, which is what makes the next decision an afternoon rather than a project.

Only above a high and volume-dependent threshold, and only if you already have the operations capability to run inference. Below that threshold, managed APIs are usually cheaper once staffing is counted honestly.

Published crossover estimates vary widely because they compare different things. Analyses that benchmark self-hosting against frontier proprietary pricing tend to put break-even in the low millions of tokens per day, while analyses that compare against hosted open-model API providers such as Together AI or Groq push it far higher, into the tens of millions of tokens per day or more, because those providers already run optimised infrastructure at thin margins. Treat any single published number as a starting assumption rather than a result.

The lines most cost comparisons omit are the ones that decide it:

  • Idle GPU capacity, since you size for peak and pay regardless of use
  • Serving and scaling infrastructure
  • Evaluation and regression testing you now own
  • Upgrade work you now plan and execute yourself
  • Model-operations headcount, usually the dominant cost

Model your own utilisation twice, once at full and once at the level you will realistically achieve, and treat the gap as the risk in the estimate.

They differ in what you receive and what the licence permits, and the distinction has legal consequences rather than merely semantic ones.

  • Open source means the weights, the training code, and enough detail about the training data to rebuild and audit the model are all available under a licence permitting use, modification and redistribution. Very few widely used models meet that bar.
  • Open weight means the trained parameters are downloadable and runnable while the training data and usually the training pipeline are not. This is what most people mean by an open-source LLM. You can self-host and fine-tune it, but you cannot reproduce it or fully audit its provenance.
  • Source-available means the weights ship with a licence that restricts something material: commercial use above a scale threshold, particular application categories, or redistribution.

The Llama Community License is the well-known example of the third category, permitting commercial use but requiring a separate negotiated licence for companies above 700 million monthly active users, whereas Apache 2.0 imposes no such cap.

Record the actual licence name against every candidate model rather than the word "open". Procurement and legal will ask, and some licences impose obligations or acceptable-use restrictions that attach to your product rather than just your infrastructure.

Usually not. Data residency is a deployment-topology question, not an open-versus-proprietary question, and conflating the two is one of the most expensive mistakes in this decision.

The underlying requirement is almost always that data must not leave a defined boundary, must not be retained, or must not be used for training. A proprietary model deployed inside your own cloud tenancy satisfies the boundary requirement, and contractual commitments plus regional pinning satisfy a large share of the rest. Open weights are one way to meet a residency constraint, not the only way.

There are genuine cases where self-hosting is the answer, notably air-gapped environments and certain sovereignty regimes. Outside those, choosing open weights for a requirement that a VPC deployment would have satisfied means paying the ongoing operational cost of self-hosting indefinitely for no compliance gain. Write down the actual constraint first, then ask which deployment topologies satisfy it, and only then ask which models are available in those topologies.

Most organisations past the pilot stage end up with more than one, because a single provider rarely wins every criterion across a real portfolio of workloads. The common shape routes frontier proprietary models to low-volume, high-stakes reasoning where quality is the only thing being bought, a cheaper or smaller model to high-volume extraction, classification and routing, and anything under a residency constraint to a VPC or on-premises deployment.

Multi-provider capability is also the practical answer to vendor lock-in. It is an option rather than a cost play: an organisation already routing to two providers can move a workload in days, while one coupled to a single provider moves in quarters and therefore tends not to move at all.

The overhead is real and worth stating plainly. Routing means an abstraction layer someone owns and keeps current, per-provider evaluation because prompts do not transfer cleanly between models, cross-provider observability so cost and quality are comparable, prompt and output-format portability as a design constraint, and more surface area to secure and monitor. That cost is why hybrid is a decision rather than a default. Design for portability from the start, then add a provider when a workload justifies one, rather than building a router before there is anything to route.

Re-evaluate on events rather than on a calendar, with a scheduled floor. The events that should trigger a run against your golden set are any change to a prompt, a model version, or a retrieval configuration, plus any major release from a provider you use or considered. Beyond that, a quarterly re-run catches drift that no single change explains.

Guidance on evaluation practice converges on treating the golden set as versioned alongside code, with a regression threshold that blocks a change which degrades quality. Sampling a small percentage of production traffic continuously and scoring it automatically is the standard complement, because it surfaces drift between formal evaluation runs.

The set itself needs maintenance or it silently stops representing your workload. Add real production failures as they occur, record the date each case was added so you can see the age distribution, prune cases that test behaviour you deliberately removed, and refresh from recent traffic. A golden set left untouched for six months while prompts, models and usage all changed is measuring a workload you no longer have.

Editorial statement

This article was produced with AI assistance and has undergone human review and editorial control. Max Laktsionau holds editorial responsibility for its content within the meaning of Article 50(4) of Regulation (EU) 2024/1689.