When leadership asks how to evaluate AI tools effectively, they rarely want a feature checklist. They need a framework that works across tools like Cursor, Claude Code, LangChain, and Pinecone and still holds up after the hype fades.

Here is what prompted us to build it. We chose the orchestration layer with the strongest ecosystem because it seemed like the safest long-term bet. Adoption was easy. Getting out was expensive. Eighteen months later, parts of the application had grown around the framework’s abstractions. What looked like a library choice at the beginning had become an architecture decision. Replacing it no longer meant swapping one dependency. It meant untangling framework logic that had become tightly coupled to the framework. We had evaluated maturity but barely considered exit cost. That mistake turned a loose evaluation checklist into the filter we use today.

TL;DR

Every week brings a new AI coding assistant, a new RAG stack, a new “AI-native” everything. A consistent evaluation process keeps AI adoption governed and manageable across teams.
A good AI tool must solve a recurring production problem and remain replaceable without forcing a system rebuild. We model the cost at the scale we expect to reach, and we stop the pilot immediately if security or data portability is weak. The score helps expose the tradeoffs while the decision is still cheap to reverse.

Dimension What it asks 1 (weak) 5 (strong)
Problem fit Does it remove a measurable bottleneck in a recurring workflow? Solves a demo problem Solves a named, recurring workflow pain and improves a baseline we can measure
Maturity Can we operate this predictably as a production dependency? Beta behavior, unstable API, unclear support or deprecation path The vendor has a predictable release process, clear deprecation policies, and a reliable path for production support.
Lock-in How much of our architecture becomes specific to this tool? Proprietary APIs, formats, or abstractions spread into application logic Vendor-specific behavior is isolated; data and configuration remain portable
Data & security posture What data and permissions does the tool get, where does the data go, and how do we control access? No SOC 2, vague data retention policy Documented retention and training policy, appropriate certifications, access controls, auditability, deployment/data-residency options
TCO Real cost at our scale, not the pricing page Pricing looks cheap in isolation, but operating costs grow unpredictably at the target scale. Vendor, infrastructure, operations, review, and support costs scale predictably at the target workload.
Exit cost What does dropping it cost in six months? Deep API coupling, no migration path Replacement is bounded: documented export, isolated integration, limited re-testing and migration work

Lock-in shows how dependent you are on a vendor. Exit cost shows how hard it is to leave.
. Unclear prompt-retention terms are a dealbreaker regardless of demo quality.

Every score needs evidence behind it. “Feels mature” is not a 4. “Portable enough” is not a 4. Before accepting a score, we require evidence that the tool works as expected in production and at our target scale. The number is only shorthand for that evidence.

We leave scores from 2 through 4 intentionally flexible. A 3 usually means the requirement is workable but comes with a material constraint we would have to own. A 4 means the constraint is real but bounded. The reasoning behind the score matters more than the number itself.

We apply the same criteria to every evaluation because portability and exit cost matter from the start.

How Fast the Market Moves

An annual procurement cycle is too slow for this market. A tool that looked like the obvious choice in January can be changed by June. That’s why we don’t treat an AI tool evaluation as a one-time decision. Without regular reevaluation, teams accumulate tools faster than they can govern them. That makes consolidation harder and increases the chance that developers adopt products outside the procurement process. The number of options keeps growing even in the categories we use every day.

  • Coding Assistants (e.g., GitHub Copilot, Cursor, Claude Code)
  • LLM Providers & Serving (e.g., OpenAI, Anthropic, AWS Bedrock, vLLM, Ollama)
  • RAG, Orchestration & Agents (e.g., LangChain, LlamaIndex, LangGraph)
  • Vector Databases (e.g., Pinecone, Qdrant, pgvector)
  • Evaluation & Observability (e.g., LangSmith, Langfuse, Braintrust, promptfoo)

In practice, we isolate code that depends on a vendor and keep business logic outside framework objects. We keep prompts and configuration versions and ensure our data can be exported before we need to migrate. Perfect interchangeability is unrealistic. What matters is knowing where replacement will hurt before the dependency becomes permanent.

Tools that peaked and faded

This list will change. A tool can lose its edge in a few months, and teams are often slow to admit it. A few examples:

  • AutoGPT and BabyAGI dominated the autonomous agent conversation in 2023 and earned more than 150,000 GitHub stars combined. Neither became a mainstream production dependency for engineering teams. The same autonomy that made the demos exciting also made the output hard to trust without someone checking every step.
  • Devin drew significant attention at launch and quickly reached a high valuation. Independent benchmarks (specifically SWE-bench Verified) later showed much lower real-world task completion than the launch narrative suggested. Cognition’s subsequent acquisition of Windsurf also added uncertainty around the product’s direction.

The release cycle moves too quickly to serve as a useful decision signal. Judge a tool by its workflow fit rather than the attention around its launch.

A changing leaderboard is not the problem by itself. The real problem is realizing too late that the tool’s assumptions are already embedded throughout your system. The examples below show how we try to expose that tradeoff before adoption.

The Filter Applied

The six dimensions are simple on paper. Applying them during a real pilot under deadline pressure is harder. Here is how we scored three actual tool decisions.

Choosing a Coding Assistant: Copilot vs. Cursor vs. Claude Code vs. Windsurf

GitHub Copilot Cursor Claude Code Windsurf
Problem fit 4, strong inline completion, deepest IDE integration 5, full-repo context, agentic edits across files 5, terminal-native, strong for large multi-step refactors 4, agentic IDE, now built on Cognition’s Devin stack
Maturity 5, longest track record, broadest enterprise adoption 4, a fast-moving product from a well-funded company with a large user base 4, newer, with a steady release cadence from Anthropic 3, leadership changes and a 2025 acquisition still leave some uncertainty around product direction
Lock-in 4, available across major editors and IDEs via extensions 3, tied to its own IDE fork 4, CLI-based, editor-agnostic 3, tied to its own IDE fork
Data & security 4, enterprise controls, org-level policy 4, enterprise plan with data controls 4, Anthropic’s enterprise data handling terms 3, worth re-checking terms post-acquisition
TCO 4, predictable per-seat 3, per-seat plus usage tiers that climb fast on heavy agentic use 3, usage-based, can spike on large context sessions 3, per-seat, roadmap and pricing in flux post-acquisition
Exit cost 5, an extension, easy to drop 3, habits and workflow built around its own editor 4, CLI usage ports to other tools reasonably easily 3, same IDE-lock-in issue as Cursor, plus vendor uncertainty
Total /30 26 22 24 19

The scores aren’t really there to tell you which tool is best; they’re there to show what you’re giving up with each one. 

Gartner forecasts that by 2027, over 65% of engineering teams using agentic coding will treat the IDE as optional and shift control, governance, and validation to automated platforms.

It’s worth noting where we disagreed on the numbers. Our team debated whether Cursor deserved a 4 or 5 for Problem Fit. The disagreement was about the workflow we were scoring, rather than the tool itself. A team focused on single-file changes might score it a 4, while a team doing frequent multi-file refactors might give it a 5. That’s the point of the filter: the disagreement forces you to ask whose bottleneck you’re actually solving. Copilot scores best on exit cost and maturity for teams that want AI help without changing editors. Claude Code and Cursor score similarly for teams doing substantial multi-file work. The choice often comes down to a CLI-first or IDE-first workflow. The Windsurf score isn’t a judgment on the product; it reflects signals like the recent acquisition and leadership turnover that matter when assessing maturity and lock-in. That’s exactly what we want the filter to catch.

For a coding-assistant pilot, we would not let each developer test a different kind of task and compare impressions afterward. We run the strongest candidates against the same tasks and include at least one area of the codebase that regularly causes review or debugging problems. Track where the tool saves time and where developers still spend time reviewing or correcting its work. That evidence should drive Problem Fit, not which demo looked fastest.

Choosing a coding assistant is mostly a workflow decision. RAG is harder because the dependency can become part of the application architecture itself.

Choosing a RAG Stack: LangChain vs. LlamaIndex + Pinecone vs. Qdrant vs. pgvector

A RAG stack involves two separate decisions: the orchestration layer and the vector store. A strong orchestration framework can still be the wrong choice if its abstractions leak through the application. A strong vector database can still be unnecessary infrastructure if the workload is comfortably handled inside a system you already operate.

Orchestration: LangChain vs. LlamaIndex vs. Semantic Kernel vs. Haystack

LangChain offers the strongest ecosystem and maturity, but its abstractions can increase exit costs as requirements evolve. LlamaIndex suits retrieval-heavy systems; Semantic Kernel fits Microsoft/.NET teams; Haystack keeps lock-in lower through a thinner pipeline abstraction.

Keep framework-specific logic isolated so the orchestration layer remains replaceable.

Vector stores: Pinecone vs. Weaviate vs. Qdrant vs. Milvus vs. pgvector. Compare vector stores against your actual workload before choosing a provider.

Pinecone Qdrant pgvector
Problem fit 4, purpose-built, low ops overhead 4, strong filtering, open source 3, strong while vector retrieval remains an extension of an existing Postgres workload; weaker once retrieval becomes a scaling problem of its own
Maturity 5, managed, widely deployed 4, growing fast, solid production track record 5, inherits Postgres’s own maturity
Lock-in 2, proprietary managed service, no self-host 4, open source, self-hostable or managed 5, it’s a Postgres extension; your data never leaves your existing database
Data & security 4, SOC 2, enterprise controls 4, SOC 2 available on managed tier 5, inherits whatever Postgres controls you already run
TCO 3, usage-based pricing grows with index size 4, open source option removes the vendor fee entirely 5, no new infrastructure line item if you already run Postgres
Exit cost 2, migrating a large index off Pinecone is real work 4, standard export, self-host fallback 5, it’s already your database
Total /30 20 24 28

Instead of asking which vector database wins, ask whether retrieval has become complex enough to deserve its own database. If Postgres already handles retrieval well, pgvector keeps the stack simpler. Move to a dedicated store once the retrieval workload exceeds what Postgres can comfortably handle.

Before choosing a store, test it against the workload you expect to run in production.

Once you settle on retrieval, decide who will run model serving: a provider or your team.

Choosing Serving Infrastructure: Managed API vs. Self-Hosted

This comparison looks at operating models rather than individual products. Bedrock, Azure OpenAI, and Vertex AI do not have identical constraints, and neither do vLLM and Ollama. The score shows what you take on when your team, rather than the provider, has to run the stack.

Managed API (Bedrock / Azure OpenAI / Vertex AI) Self-hosted (vLLM / Ollama)
Problem fit 5, zero ops, instant access to frontier models 3, strong for cost-sensitive, high-volume, or air-gapped workloads; weaker for teams that need frontier model quality
Maturity 5, enterprise SLAs, regional availability 4, vLLM is production-ready at large scale, while Ollama is better suited to development and prototyping.
Lock-in 3, cloud-specific IAM, billing, and API surface 5, you own the weights, the serving layer, and the deployment target
Data & security 4, enterprise data-handling contracts (Bedrock, Azure OpenAI, Vertex all offer no-training-on-your-data terms) 5, nothing leaves your environment; the only option for air-gapped or classified workloads
TCO 3, predictable per-token, but expensive at sustained high volume 3, cheaper per-token at scale, but you’re paying for GPUs and the engineers to run them whether or not they’re busy
Exit cost 3, swapping providers means re-testing prompts against a different model’s behavior 4. Swapping the serving layer is easier than swapping the hardware investment
Total /30 23 24

The scores are close because the better option depends on how your team plans to run the stack. A managed API (AWS Bedrock, Azure OpenAI, Google Vertex AI, or Groq for latency-sensitive inference) wins for teams that want access to frontier models without an ops team. Self-hosting via vLLM or Ollama makes more sense when data residency is non-negotiable or when sustained volume makes GPUs cheaper than metered tokens. For self-hosted setups, Hugging Face is a common source for open-weight models.

The break-even point depends on more than token price. Self-hosting starts to pay off when utilization stays high, and the team has the operational capacity to run the stack. Otherwise, a lower unit price can mask a more expensive system.

Running the Filter, Not Just Reading It

On paper, this is six rows in a spreadsheet. In practice, one person owns the evaluation and the evidence behind it. We assign a single owner to each build-versus-buy evaluation because committee scoring tends to blur the trade-offs.

Before the pilot, the owner defines the workflow problem and baseline, then sets the target workload and hard gates.

The evaluation should match the size of the decision. A disposable proof of concept needs far less scrutiny than a tool expected to run for years.

Before adoption, we model cost at the scale we expect to reach and test the migration path where portability matters. We also record the evidence behind each score. If two people disagree, write down why rather than averaging the scores.

Every adopted tool gets an owner and a review date, and that owner gets the final call. The person closest to the day-to-day workflow has more useful evidence than the most senior person in the room.

Hard Stops

The score only matters after a tool clears the basic requirements for your environment. If a tool fails a requirement that matters in your environment, stop the pilot before the total score gives you a reason to rationalize the risk.

  • No eval story. If a vendor cannot show how it measures quality with an eval harness or regression suite, it is asking you to trust vibes.
  • No usable export path. If portability matters and the tool cannot export your core assets in a standard format, you have already taken on the exit cost.
  • Per-seat pricing can become a hard stop when the economics fall apart at your target scale. Fine at 5 users, brutal at 50; model the cost at your target headcount before the pilot, not after the invoice.
  • Unexamined model lock-in. If the framework only works with one model family, make that dependency explicit and score the cost of changing it. Do not discover the coupling after the model is deprecated or stops fitting the workload.
  • The demo-to-production gap. Autonomous coding and app-builder demos are designed to look production-ready within minutes. None of that shows how the tool will handle your real codebase.
  • Unclear security boundaries are a hard stop for every tool. Certifications are useful, but they do not answer what data the tool receives, how long it keeps it, or how it is handled. If we cannot map the data flow and the authority we are granting the tool, the pilot is not ready for production data.
  • No real pilot. If a vendor will not let you test the tool on your actual codebase before purchase, stop before you score it.
  • Coding-specific: For coding assistants, generated-code security is a separate application risk. Vendor data protection is only part of the security story. Generated code also needs its own review and security controls. The Veracode 2026 GenAI Code Security Report (covering over 100 models) reports an average security pass rate of 56% for generated code. Even the best models still fail nearly one in three security tasks.

Passing those gates only tells us the tool is acceptable under today’s assumptions. AI dependencies change after procurement, sometimes faster than the systems built around them.

When to Re-Evaluate

We rerun the filter every quarter and rescore tools before renewal whenever the previous evaluation is stale.

Outside the quarterly review, three things should trigger an immediate re-evaluation:

  1. If a vendor changes its per-seat or usage pricing, re-score TCO. Period.
  2. Model deprecation. If the underlying model is retired or replaced, retest Problem Fit against the new model.
  3. Security incident. Any breach, policy change, or compliance lapse on either side should trigger an immediate review of the Data and Security score.

A pricing change buried in a changelog matters only if someone catches it and reruns the score.

A rescore matters only when it can trigger action, including limiting adoption or replacing the tool. Otherwise, a quarterly review becomes paperwork around a dependency nobody is actually willing to change.

Frequently Asked Questions

  • RAG: Build or buy?

    Start with how much orchestration the application actually needs. A mature framework is worth the overhead when it removes complexity you would otherwise have to build and operate yourself. A thinner application layer can be the better choice when the retrieval flow is simple and adopting the framework would introduce more abstraction than capability. The same rule applies to the vector store. If retrieval still fits comfortably within the Postgres workload you already run, pgvector can keep the system simpler. Move to a dedicated vector database when retrieval develops requirements that justify operating one.

  • How do you avoid AI vendor lock-in?

    Score lock-in and exit cost before the pilot, while switching tools is still cheap. Prefer open standards and self-hostable fallbacks when you can. If a tool scores below 3 on exit cost, treat it as a time-boxed bet rather than a default choice.

    Gartner warns that AI lock-in is moving beyond code into models and governance. It recommends requiring multimodel support and data portability early in the RFP process.

  • When should you skip the filter?

    Skip the full filter for a one-time spike or short-lived prototype because a six-dimension review would cost more time than the decision is worth. Use the full filter for anything you expect to be still running six months from now. If you already know you’re deleting it in two weeks, just build the thing.

  • What if a vendor refuses a real pilot?

    Treat a vendor’s refusal to run a real pilot as a hard stop when the tool will touch production data or become a long-term dependency. For cheap, low-risk tools with no data exposure, use a lighter version of the filter.

  • What if the team is already sold on the tool?

    If people are already building habits around a tool before you score it, run the filter anyway and discuss the result openly, even if the score comes back low.