A well-governed semantic layer gives your organization a foundation it can trust. But the moment you start building GenAI applications on top of that foundation, conversational interfaces, AI-powered data assistants, autonomous agents, a new category of engineering challenges begins to accumulate. Generative AI introduces forms of technical debt that are easy to overlook and fast to compound: agent tools that sprawl beyond what any model can reliably navigate, prompts that balloon into unmaintainable tangles, pipelines that fail opaquely and resist debugging, and feedback loops that exist in principle but never get built in practice. Understanding where this debt comes from, and how to pay it down, is now a core competency for any team shipping GenAI systems.
Where the Time Goes
The lifecycle of a generative AI project looks deceptively similar to traditional machine learning, but the distribution of effort is different. Data collection is often the easy part. Rather than meticulously cleaned training sets, GenAI applications typically need sufficient context for the model, usually unstructured knowledge base documents or manuals, and this material rarely requires extensive cleaning. Evaluation is another matter entirely. It is far more subjective, far more complex, and consequently far more time-consuming. An initial set of evaluation questions rarely covers the full spectrum of queries a real user might pose, so the evaluation set has to grow over time. Because response quality depends so heavily on end-user expectations, engineers spend considerably more time meeting with business stakeholders and product managers to gather requirements, prioritize them, and iterate on feedback.
Monitoring consumes a large share of effort too. Many GenAI applications are real-time systems, virtual support agents, live transcription agents, coding assistants, and these demand real-time monitoring: endpoint monitoring, inference analysis pipelines, and alerting. Because evaluations are inherently subjective, deployment engineers must figure out how to operationalize the collection of subjective feedback inside their inference pipelines. In practice this might mean running LLM-as-a-judge evaluations on responses, or surfacing a subset of responses to domain experts for review. There is a further complication unique to proprietary models. Vendors continuously optimize their models, which means a "model" is effectively a service prone to regressions. Evaluation criteria have to account for the fact that the weights are not frozen the way they are in a self-trained model. Testing, in general, is harder. GenAI applications are enormously complex, and our evaluation and testing frameworks have not yet caught up. Long multi-turn conversations, SQL output that may or may not capture an enterprise's organizational context, and verifying that the correct tools are invoked within a chain are all things that cannot yet be tested reliably.
New Forms of Technical Debt
Beyond the shifting workload, Generative AI introduces categories of technical debt that are not always obvious until they bite.
Tool Sprawl
Tools are a powerful way to extend an LLM's capabilities, but as their number grows they become increasingly difficult to manage. Tool sprawl is more than a discoverability and reuse problem, it can actively degrade the quality of the system. The model must select the right tool from a potentially large set, and when several tools perform roughly similar functions, that selection becomes error-prone. Even after the correct tool is identified, the model still has to parse the user's question into the right parameters, which is especially difficult when multiple tools share similar parameter structures. The cleanest defense is discipline: be strategic and minimal about the tools a team adopts.
Prompt Complexity
State-of-the-art models can handle pages of instructions, but overly complex prompts invite problems such as contradictory directives and stale information. This is especially common when prompts are never revised, only appended to over time by different developers and domain experts. As new failure modes appear or the scope of queries widens, the temptation is to keep bolting on more instructions. A better approach is to break content into several smaller, focused prompts rather than maintaining one sprawling one, clarity, accuracy, and troubleshooting all improve. Frameworks that track prompt versions and enforce expected inputs and outputs help keep things manageable.
Opaque Pipelines
When a response comes back wrong, examining the inputs and outputs of intermediate LLM calls is essential for finding the root cause, and identifying the relevant calls can be time-consuming. Enabling tracing is not enough on its own. Properly instrumenting an application with observability tooling, using a structured framework, is a necessary first step toward making agent interactions transparent. Without it, debugging becomes guesswork, and guesswork compounds into debt.
The Data Flywheel
When user feedback is neglected, quality debt builds up fast. A team that ships without measuring success is running a hope-driven deployment, one that will hold until the model changes beneath them or user behavior shifts. A Data Flywheel offers a structured way to address it: a closed feedback loop that turns system output into system improvement, moving a deployed GenAI application from a static asset toward a learning system. What other frameworks call a Learning Loop, the cycle of measuring outcomes and feeding them back into the system, the Data Flywheel operationalizes in three concrete steps: define success metrics, automate their measurement, and iteratively adjust prompts or pipelines to improve them.
Step One: Define Success Metrics
This step has two stages, establishing clear criteria for success, and then finding the right way to implement them. Effective criteria cannot be derived purely by theorizing about possible failure modes; the actual data has to be examined to understand what you really want from the model's outputs. Implementation can rely on code-based metrics or LLM-based metrics. Simple functions work well for assessing heuristics. For more subjective or complex judgments, LLM-as-a-judge can evaluate a defined metric directly. Aligning the judge's output with your own judgment is the hard part, but providing a few examples significantly improves alignment. As a rule, binary metrics are much easier to align and reason about than graded ones. Validating input data matters just as much as validating output data. A useful lens here is Postel's Law: be conservative in what you send, be liberal in what you accept.
It is worth stepping back to look at evaluation more broadly. Success with AI depends, much like software engineering, on a tight three-step loop: evaluate quality, debug issues, and change the behavior of the system. If the evaluation process is streamlined, all other activities become easier. This is very similar to how tests in software engineering pay massive dividends in the long term despite requiring significant up-front investment.
Step Two: Automate Measurement
The second step keeps defined metrics in step with production data, and it should be as automated as possible. Crucially, you must periodically reassess whether your chosen metrics still align with your goals, because LLM APIs change under the hood and ideal system behavior evolves over time. An agent that regularly analyzes a sample of labeled production data can flag when the metric set needs updating. Production data also drifts, so alignment has to be reassessed continually. The main challenge is ensuring regular human labeling of data for each metric, as important as it is burdensome.
Step Three: Iterate to Improve
The final step combines manual human insight with automated techniques to improve performance based on real-world usage. Prompts and pipelines should be iterated by hand to lift metric scores. With the first two steps in place, it becomes easy to see what performs well in production and what doesn't, and those insights feed directly back into better prompts. Review metric scores regularly to spot patterns or clusters of low-performing instances, and analyze the distribution of input and query data to detect shifts in user behavior. Where possible, the pipeline should also improve automatically in response to the metrics.
The Human Side of the Flywheel
Capturing human feedback is invaluable, and it is time-consuming. Engineers have to schedule time with domain experts, build rubrics to reconcile differences in their assessments, and then evaluate the feedback for actionable improvements. Designing those rubrics and creating different metrics and judges for different scenarios is some of the most painstaking work in the entire process. In-person discussions and workshops are usually required to establish a shared rubric for expected agent behavior, and only once human annotators are aligned can their evaluations be reliably folded into LLM-based judges.
Regularly consulting end users, business sponsors, and adjacent teams is essential. Frequent touchpoints help stakeholders feel invested in shaping the application's quality, turning them from critics into collaborators. Not all feedback carries equal weight, some stakeholders will request features that are premature for an MVP or simply beyond what current LLMs can do. Negotiating priorities and educating everyone on what is and isn't achievable is part of the job, because technical and non-technical people alike do not always have an accurate mental model of what an LLM can handle. Treating GenAI development as a shared learning journey, anchored by regular touchpoints, is a practical way to keep everyone informed and aligned.
Conclusion
The technical debt of generative AI is real, but it is manageable. Keep your toolset lean, your prompts focused and versioned, and your pipelines observable. Build a flywheel that defines success, measures it automatically, and feeds the results back into continuous improvement. And above all, treat the people who use and sponsor your application as partners in the work. The teams that pay down this debt deliberately, rather than letting it compound in silence, are the ones whose GenAI systems will still be trustworthy a year from now. The Data Flywheel described here is a general principle. In the third part of this series, we put it into practice: a concrete evaluation harness for Databricks Genie Agents that implements the full loop, automated question execution, LLM-as-a-judge scoring, MLflow tracking, and turns the flywheel from an idea into a working engineering system.
More articles in this subject area
Discover exciting further topics and let the codecentric world inspire you.
Blog author
Niklas Niggemann
Working Student Data & AI
Do you still have questions? Just send me a message.
Do you still have questions? Just send me a message.