16 min read

Engineering leadership in AI products: evaluation, roles, delivery

What changes in a tech lead’s job with AI products: eval as an engineering practice, ownership of the answer, team topology and the CI/CD/CE cycle.

Victor Buzin · Founder & Principal Engineer, AnetLab
16+ years in enterprise development: .NET, AI/LLM systems, RAG, MCP. Author of the material and the practices behind it.

The crisis of determinism

Usually it all starts with a change in the “vibe”. A product that worked perfectly on Friday starts hallucinating on Monday morning. The engineering manager checks the deployment logs — the code did not change over the weekend. The QA lead confirms that all the Cypress tests are green. Meanwhile the support queue is overflowing with complaints: the “smart assistant” has suddenly started recommending competitors’ products or leaking its own system prompts.

The investigation shows that the model provider has shipped a small “optimization” to its API without warning, or that the vector database has reindexed a batch of new documents and semantically distorted the extractable context. Not a single tool in your standard observability stack — Datadog, Sentry or CloudWatch — noticed. The system is “up”, the latency is normal, but the product is broken.

That is the reality of engineering leadership in AI products. In traditional development we live in a comfortable illusion of determinism: given an input X and code Y, the output is always Z. In the world of large language models (LLM) and generative AI, the code often plays a secondary role in determining the behavior of the system.

Leading an AI product team is not just “software development plus a model”. It is a fundamental shift in how we structure teams, define quality and manage delivery. Over years of leading development and QA teams of up to 16 people I noticed that the most painful failures do not come from a bad model choice. They come from trying to apply 2010s leadership frameworks to probabilistic systems in 2024.

Thesis: leading an AI product team differs from running an ordinary development team in three concrete ways: evaluation becomes a first-class engineering task, the system can change behavior without a code deployment, and the operational responsibility is undefined by default. All three require explicit decisions before the problems appear.


Three structural differences

To lead effectively, we first have to name the tectonic shifts that happen when we move from deterministic codebases to probabilistic AI systems. These are not technical nuances but changes in risk management and organizational structure.

1. The evolution of evaluation as a first-class engineering discipline

In standard development, testing is secondary to implementation. We write the code, then write the tests to check it. The tests are binary: they pass or they do not. If something broke — we fix the code. If it passed — we deploy.

In AI products the “code” (a prompt or model parameters) is often trivial — maybe a dozen lines of text. The real “engineering” happens in the evaluation. Evaluation (Eval) is the process of measuring how well an AI system handles a specific task. Unlike a unit test, an Eval is most often a score: 85% relevance, 0.9 faithfulness, or a “vibe check” of 4 out of 5.

As a leader you have to understand this: if you have no reliable evaluation pipeline, you do not have a product; you have a demo.

Leaders often underestimate the engineering effort the Evals require. I have seen teams spend 20% of their time on features and 80% on building the “eval engine”. That engine has to provide:

  • Dataset management: versioning of thousands of “golden” input-output pairs. That requires data versioning infrastructure (DVC, for example) or services that let domain experts annotate the data.
  • Stochastic testing: running the same request several times to measure the entropy and the stability. Since the models are probabilistic, a single run is meaningless. You need to know the standard deviation of your scores.
  • Comparative analysis: running “Model A” against “Model B”. This is the only way to justify the move from an expensive GPT-4 to a cheaper Llama-3.

In my experience leading teams, once we equated “eval engineering” with “product development”, our speed doubled. We stopped arguing endlessly about whether a prompt had become “better” (which is subjective) and started looking at the delta in the accuracy metrics.

2. Behavior changes without a deployment

This is probably the most alarming aspect for a VP of Engineering. In a traditional stack the binary is static until you ship a new version. In an AI product built on top of external providers (OpenAI, Anthropic, Google), the “engine” can be replaced or updated right under you.

Providers often “tune” the models for better safety or performance. Such changes can break the nuances of your prompts that the team polished for weeks. For example, a model that followed the JSON schema perfectly may suddenly become “too helpful” and start wrapping the JSON in markdown blocks after the next provider update.

On top of that, in RAG (Retrieval-Augmented Generation) systems your knowledge base is dynamic. A single “bad” document uploaded to the vector database can “poison” the semantic space, making the model extract outdated information and hallucinate.

Leadership in this context requires building Defensive Observability. You have to assume that the behavior of the system drifts constantly. That means:

  • Semantic monitoring: using embeddings to track whether the meaning of your model answers drifts over time. If your average embeddings start deviating from the “golden” ones, you have prompt drift.
  • Guardrails: deploying real-time checking mechanisms (LlamaGuard or your own classifiers) that intercept the answers before they reach the user.
  • Automatic fallbacks: if the confidence score of the main model (or the score of an external validator) is too low, the system has to switch automatically to a deterministic path or to a more reliable model (“slower but safer”).

3. Undefined operational responsibility

By default, responsibility in an AI product is a vacuum. Take a simplified stack: a user request hits a React frontend, goes through a C#/.NET backend, kicks off a RAG pipeline in Python, pulls data from an Azure AI Search index and finally calls the OpenAI GPT-4o API.

Who is responsible when the answer comes out rude or wrong?

  • The frontend engineer says the UI displayed correctly whatever the API returned.
  • The backend engineer says the API handled the request correctly and passed it to the model.
  • The data scientist says the model is the best on the market and the few-shot examples are correct.
  • The SRE says the latency and the uptime are within the SLA.

And yet the product does not work for the user.

Leading such teams requires defining the Model-Prompt-Data nexus. This is a new area of responsibility that sits at the seam between the backend, Data Science and QA. Without clear decisions about who owns the content of the answer (not only its transport), you will run into endless blame-shifting in the postmortems. In larger teams I had to introduce a “Model Ops” role to close that gap.


Team topology for AI-centric products

The structure of your team dictates the architecture of your system (Conway’s Law). For AI products I have found that the standard structure often creates bottlenecks, because it treats AI as an “imported library” rather than as a key architectural component.

The rise of the AI engineer

An important step for a leader is acknowledging the role of the AI engineer. This is not a renamed data scientist. A data scientist creates models; an AI engineer builds with models.

The AI engineer understands the whole lifecycle: from prompt engineering and chain-of-thought orchestration to vector database tuning and evaluation. These are the professional “model tamers”, the bridge between the mathematical complexity and the practical requirements of the product. Often they are former full-stack developers who developed a deep intuition for the behavior of LLMs.

Scaling the team: from 5 to 16 people

While scaling engineering organizations I noticed that the topology has to evolve as it grows.

  • The “one person in the field” phase (1-5 people): at this stage everyone is an AI engineer. The focus is the POC. The boundaries are blurred. The risk here is “prompt technical debt”, when dozens of unversioned instructions are hardcoded into the backend.
  • The “embedded” phase (6-15 people): as you grow you may end up with 3 product squads. I recommend embedding one AI engineer into each unit. That guarantees the AI features are not “bolted on the side” but become the central part of the user journey.
  • The “platform” phase (16+ people): at this scale duplication becomes critical. Team A uses Pinecone, Team B uses Weaviate. Team C uses GPT-4, Team D uses Claude. At this level you have to introduce an AI Platform Team.

The decision a leader has to make at this stage is what exactly the AI engineer does in your team and who is accountable for the result when the model is wrong. Until that is written into the roles and the acceptance criteria, every such conversation turns into a dispute about responsibility instead of a review of the architecture. Fix the Golden Set, the owner of the reference set and the quality threshold below which a release does not ship — and most of the disputes disappear on their own.

I remember managing a unit where we had four different RAG implementations. Semantic search was reinvented four times. Moving those implementations into a single platform team, “Search and Enrichment”, noticeably reduced the cloud spend and — most importantly — unified the evaluation metrics.

The mission of the platform team:

  1. Uniform model access: a proxy layer for rate limiting, caching and cost tracking.
  2. A standardized eval framework: a shared library and dashboard for running evaluations across the company.
  3. Vector management: a centralized service for indexing, chunking and extracting corporate knowledge.

Moving from traditional development

One of the hardest tasks for a leader is helping the existing engineers adapt. An experienced .NET developer can feel uncomfortable in front of the “black box” of an LLM. As a leader you have to position AI development as systems engineering.

It is still inputs, outputs, throughput and error handling. The only difference is that the “logic” is written in natural language (prompts) and checked through a statistical sample (evals). My most successful transitions happened when we stopped treating AI as “magic” and started treating it as a “server with high entropy”. We started writing “unit tests for the outputs of an LLM”, using regular expressions for the formats and other models for the semantics.


Quality in AI systems: more than ordinary QA

When leading a QA team for an AI product, the first thing I do is get rid of the idea of 100% test coverage. It does not exist in a probabilistic world. Instead we move to a multi-level evaluation pyramid.

Level 1: Deterministic barriers (unit tests)

They are still needed. Did the API return the expected JSON structure? Does the markdown renderer cope with the model output without crashing? Does the PII filter work? Use the traditional frameworks (C#, Python, JS). This is the foundation. If your unit tests are flaky, the AI evaluations will turn into noise.

Level 2: The eval engine (LLM-as-a-judge)

In a team of 16 people we had a dedicated “Quality Engineering” subgroup focused only on Level 2. They did not write tests in Selenium; they wrote eval scripts.

We use metrics like RAGAS (RAG Assessment):

  • Faithfulness: was the answer formed only from the provided context? (The main defense against hallucinations).
  • Answer relevancy: does the answer match the intent of the question? (Prevents “lazy” answers like “I don’t know”).
  • Context recall: did we find in the knowledge base all the information needed for the answer?

Another powerful tool is G-Eval, where you prompt a large model (GPT-4o, for example) with a detailed rubric (for example “rate the politeness and the technical accuracy of the answer on a scale from 1 to 5”) to check the outputs of a smaller model. This gives feedback almost instantly.

Level 3: Human-in-the-loop (HITL) and “golden datasets”

The highest quality level is the gold dataset. A curated list of “perfect” interactions, verified by people.

As a leader you decide: who are those people?

  • For a coding assistant — senior engineers.
  • For a medical application — doctors.
  • For a general-purpose chatbot — a crowdsourcing team.

The practical conclusion: the role of “the one who is responsible for the quality of the answer” cannot be blurred. If it is not in the org chart, in practice it falls on whoever last edited the prompt — and that is the worst possible place for it.

Embedding the manual review processes into the engineering tooling is a necessity, not a luxury. We once set up a system where every time a user clicked “dislike” in production, the prompt, the context and the answer went straight to a Slack channel for the developers to analyze. Such a “short feedback loop” is the only path to AI quality.

Red teaming and preventive security

Finally, you have to run red teaming. This is the process of trying to “hack” the model. We looked for not just “bad words” but “indirect prompt injections” — when an attacker puts a malicious instruction into a document that the RAG system later picks up. If your team does not think about security at the prompt level, they leave the front door open.


Delivery: the new CI/CD/CE cycle

Traditional CI/CD pipelines focus on “build, test, deploy”. In AI we add “evaluate”. We call this CI/CD/CE.

The prompt engineering pipeline

Prompts are code. They have to be versioned. Never use a “latest” tag for a production prompt. Every prompt has to be tied to a specific model version and a specific eval suite version.

When an engineer wants to update a prompt:

  1. Branch: create a git branch.
  2. CI: run the deterministic tests (schema validation, PII checks).
  3. CE (Continuous Evaluation): the pipeline runs the eval engine on the golden dataset (500 test cases, for example).
  4. Review: if the average faithfulness score drops from 0.92 to 0.88, the PR is blocked.
  5. Merge: only then does the change reach the main branch.

Shadow deployments and canary releases

You should never just “flip the switch” to a new model. Even if it is “GPT-5”, it will have different failure patterns.

I am an advocate of shadow deployments:

  • For 10% of the users we run the “new prompt” in parallel with the “old one”.
  • We do not show the user the result of the “new prompt”.
  • We log the output and run it through the automated evals in real time.
  • We compare the results. If the new prompt wins on the metrics over 1000 requests, we move to a canary release (5% of real users).

Semantic versioning of models and data

The traditional SemVer (v1.2.3) is not enough. You have to version the knowledge index. If you updated the vector database, you have effectively changed the “memory” of the model. That has to trigger a full re-check of all the key prompts. As a leader you have to enforce the rule: “a change of the context is a breaking change”.


The trade-offs of engineering leadership

Leadership in AI is the discipline of balancing three forces: capability, cost and constraints.

1. The smart vs latency trade-off

A 175-billion-parameter model is smarter than an 8-billion-parameter one, but it is 10 times slower and 20 times more expensive. As a leader you have to resist the urge to always use “the coolest” model. Often a three-step chain of thought on a small fast model (GPT-4o-mini, for example) is more effective and cheaper than a single step on a huge model. This is called “Compound AI”, and it is the future of efficient systems.

2. Vendor hype vs reality

Model providers will try to convince you that they “solved the hallucination problem”. They have not. They will claim that their “long context window” means RAG is no longer needed. They are wrong (the performance inside a context window degrades as it fills up — the “lost in the middle” phenomenon). Your role is to be the chief skeptic. Always trust your evals more than the vendor marketing.

3. Data privacy vs feature delivery speed

Using the best models often means sending data to a third-party API. For many corporations that is unacceptable. You have to weigh the speed of OpenAI/Anthropic against the long-term investment in hosting your own Llama-3 or Mistral models on private infrastructure (Azure AI Studio or AWS Bedrock). When I led large teams, we often started with the API to find product-market fit and then migrated to self-hosted models for cost and privacy control.


Artifact: the responsibility matrix

Use this matrix to clarify the roles. A “Undefined-and-Risky” mark in any row is an immediate alarm signal for your roadmap.

Function Dedicated role Shared Vendor Undefined-and-Risky
Model choice (licensing/privacy) Platform Lead Dev & Legal [ ] [ ]
Prompt engineering AI Engineer Backend Eng [ ] [ ]
Vector DB optimization Data Engineer Platform [ ] [ ]
Eval framework development Quality Eng AI Engineer [ ] [ ]
Golden dataset curation Product Owner QA / Experts [ ] [ ]
Token budget and cost tracking Engineering Dir FinOps [ ] [ ]
Hallucination monitoring SRE / DevOps AI Engineer [ ] [ ]
Guardrails logic (security) Security Lead AI Engineer [ ] [ ]

Frequently asked questions (FAQs)

1. How do you keep up with the pace of AI research? You don’t. Your team has to focus on Applied AI. Track the major model releases (once a month) and the architectural shifts (once a quarter), but do not let the engineers spend the whole day on ArXiv. Concentrate on the tools that improve your evaluation cycle and the performance of RAG.

2. Do we need to fine-tune or is prompting enough? In 95% of cases, quality prompting, clean RAG and few-shot examples in the context are more effective and cheaper than fine-tuning. Tune the model only if you need to teach it a completely new language (a proprietary DSL, for example), or if you need to squeeze the maximum out of a tiny model (1B-3B parameters) for radical savings.

3. How do you avoid “AI for the sake of AI”? This is a huge risk. Always ask: “does this probabilistic solution give 10 times more value than a deterministic one?” If a simple IF/ELSE or a regular expression solves 80% of the task — use code. Leave the LLM for the complexity that code cannot handle: nuances, synthesis and semantic analysis.

4. How do you hire for these roles? Do not look for “AI” in the resume as the first filter. Look for systems thinkers. A strong backend developer who is interested in probability, statistical distributions and observability will beat an “AI expert” who never deployed production code for 10 thousand users. Look for the people who ask “how are we going to test this?” before “which model are we taking?”.



CTA: Ready to scale your AI team without losing control? Get in touch with me for a consultation or an audit of the team topology.

Read also

Request

Discuss the task

Leave your name and email — I reply within one working day. If the task is urgent, write directly toproject@anetlab.ru.