AI systems and agents work covers task-bounded agents that use tools, retrieval-augmented assistants answering from your own knowledge, document and voice processing, model integrations inside existing products, and the evaluation and guardrail layer that makes any of it safe to run unattended.
Most AI projects that fail do so for the same reason: the task was never bounded. An open brief to build an assistant that handles customer queries produces something that demos well and cannot be operated, because nobody defined what it may do, what data it may read, what it must refuse, or what happens when it is uncertain. A narrow agent that completes one workflow reliably is more valuable and considerably cheaper than a broad one that mostly works.
The engineering that matters is mostly around the model rather than in it. Which data sources are approved and how permissions are enforced before retrieval. Which tools the system may call and which require a person to approve. What the output contract is, and what validation runs before anything is displayed or acted on. How uncertainty is surfaced instead of hidden behind confident phrasing. And what the deterministic fallback is when the model is wrong, because it will be.
Cost behaves differently from ordinary software and needs planning as such. Model usage is recurring and scales with success rather than being paid once, so the useful measure is cost per completed task rather than per request — a cheaper model that fails a third of the time and triggers retries is not cheaper. Provider models are also deprecated on their own schedule, so versions get pinned and a regression suite kept, or behaviour changes underneath the product without warning.