RAG Knowledge Assistants
Assistants that answer from your documents, cite their sources, and say "I don't know" instead of inventing an answer.
An agent is a system that decides which steps to take, calls real tools to take them, and keeps track of what it has done. That autonomy is the point — and the risk. The engineering worth paying for is the part that decides where the agent must stop and ask a human.
Agents suit work that is multi-step, involves several systems, and has enough variation that a fixed script keeps breaking: qualifying and routing inbound enquiries, extracting terms from contracts and filing them, reconciling records between a CRM and a finance system, triaging support tickets with context from documentation and history, or preparing a draft that a person reviews and sends.
They are the wrong answer for work that is genuinely deterministic. If the rules fit in a flowchart and rarely change, a scheduled job or a workflow engine will be cheaper, faster and far easier to debug. I will say so rather than build the more interesting thing.
An agent is only as good as the tools you give it. Each tool is a function with a schema, a contract and a blast radius, and it deserves the same care as a public endpoint:
create_draft_invoice beats run_sql. Broad tools invite creative misuse.Every workflow gets an explicit map of which steps are reversible and which are not. Sending an external email, moving money, deleting records, publishing content and signing anything are checkpoints by default: the agent prepares the action, presents exactly what it intends to do, and waits.
This is not a limitation to be engineered away later. It is what makes the system deployable to people who will be accountable for its output, and in practice it is what gets an automation project approved at all. As confidence builds, individual checkpoints can be relaxed with evidence behind the decision.
Real workflows pause. They wait on an approval overnight, hit a rate limit, or encounter a third-party API that is down. The agent therefore needs durable state rather than a variable in memory: where it is in the workflow, what it has already done, what it is waiting for.
Alongside that: retry policy with backoff for transient failures, a step budget so a confused agent cannot loop indefinitely and bill you for the privilege, dead-lettering for runs that need a human, and a full trace of every decision, tool call, argument and result. When something goes wrong at 2am, that trace is the difference between a ten-minute diagnosis and a shrug.
Agentic automation is mostly integration work. The agent needs to reach your CRM, your CMS, your ticketing system, your document store, your database and your messaging platform — with proper authentication, rate limiting, error handling and sandbox environments for testing.
Over fourteen years of building on Drupal, WordPress, PHP, Python and Node.js backends, most of my time on these projects goes into that integration layer rather than the agent logic itself. That is the correct ratio, and a proposal that implies otherwise is underestimating the job.
See this in practice: Agentic Workflow Automation
Three layers. The agent only has tools you explicitly gave it, each with validated inputs and least-privilege credentials. Irreversible actions are approval checkpoints where a human sees the exact intended action first. And every run has a step budget and full trace, so a confused agent stops rather than looping and can be diagnosed afterwards.
Those excel at deterministic flows: when X happens, do Y. An agent is worth the extra complexity only when the sequence genuinely varies — when the next step depends on judgement about unstructured content. Plenty of automation is better served by conventional tooling, and mixing the two is common: rule-based orchestration with the agent handling one genuinely ambiguous step.
The workflow persists its state, retries with backoff for transient failures, and after a threshold routes the run to a dead-letter queue with the full trace attached so a person can resume or intervene. Work is never silently lost, and the agent does not invent a result to keep moving.
Shadow mode. The agent runs against real inputs and records what it would have done, without executing anything. You review those proposed actions against what your team would have done. Only when the agreement rate is convincing does execution get enabled, and even then it starts on a narrow slice of volume.
Yes, provided there is an API, a database, or a scriptable interface. Most engagements involve a mix of well-documented SaaS APIs and older internal systems needing more careful handling. The integration layer is typically the largest part of the build, which is worth planning for honestly at the start.
Describe the problem in your own words — I will tell you what I would actually build, and what I would not.
Start a conversation