Agentic AI Development Services in India
Agentic AI development services in India for teams in the US, UK, Canada, Australia and New Zealand. We build tool-calling agents with real termination rules, evaluation suites, tracing and approval gates, and we tell you when a plain workflow would have done the job cheaper.
What Is Agentic AI, and When Should You Not Build One?
An agent is a model in a loop with tools. You give it a goal, a set of functions it may call, and a stopping condition. It picks a tool, reads the result, decides what to do next, and repeats. Everything else people attach to the word is decoration on that loop.
The reason this matters commercially is that the loop buys you one specific thing: the path through the work is chosen at runtime instead of at design time. If you cannot say why your problem needs a runtime-chosen path, you are about to pay a large premium for nothing.
The loop is the product, and the loop is what breaks
In a single-shot LLM call, you control the input and you see the output. In an agent, the model writes its own next input. A retrieval tool returns a document that changes the plan. A validation tool fails and the model tries a different argument. Six turns later the context window holds four tool results, two errors and a plan the model has quietly revised twice, and it is producing an answer no one designed.
That is not a reason to avoid agents. It is the reason agent work is engineering, not prompting. The parts that decide whether your agent survives contact with production are the tool contracts, the state that persists between turns, the conditions under which the loop ends, and the trace that lets you reconstruct what happened at 02:00 on a Sunday. The prompt matters. It matters considerably less than people expect.
Three questions that decide whether you need an agent
We ask these in the first call, and roughly a third of the time the honest answer sends the project somewhere cheaper.
First: does the sequence of steps depend on data you only see at runtime? Invoice reconciliation genuinely does, because whether you need to fetch a goods-received note depends on whether the purchase order matched. Generating a weekly summary email does not. Second: is the space of valid actions large enough that enumerating it is impractical? A support agent that may touch eight internal systems in any order qualifies. A form-filling flow with four fixed steps does not. Third: can you tolerate a variable number of model calls per unit of work, both in cost and in latency? If your product has a two-second budget and a fixed cost per transaction, the loop is the wrong shape.
When a workflow engine beats an agent, and we will say so
Plenty of the work sold as agentic AI is a directed graph with an LLM at two or three nodes. That is a good architecture. It is testable, its cost is predictable, its latency is bounded, and when it fails you know which node failed. If your process is stable, put it in a workflow and use the model for the judgement steps only: classify this ticket, extract these fields, draft this reply, decide whether these two records are the same company.
We build a lot of those, and we count them as successes. The failure we want to avoid on your budget is the one where a team spends four months on a multi-agent architecture to automate a process that a state machine and three well-prompted calls would have handled with a tenth of the operating cost and none of the debugging pain. If your problem is that shape, that is what we will propose, and the LLM integration route is usually the faster path to it.
The Problem You Are Actually Trying to Solve
The requests we receive rarely arrive as "build me an agent". They arrive as a description of humans doing structured work that nobody enjoys.
Two analysts spend most of their week opening tabs. One reads a support ticket, checks the order in the admin panel, checks the shipment status in a carrier portal, checks whether the customer is on the plan that includes priority handling, then writes four sentences. Another matches supplier invoices against purchase orders and chases the twelve percent that do not reconcile. A third reviews vendor security questionnaires by finding the answer somewhere in a policy library that has grown to nine hundred pages. None of that work is hard. All of it is sequential, context-heavy and slow, and it does not scale by hiring because the training curve is months long.
What it costs you is usually not the salary. It is the queue. Tickets sit for nineteen hours because the person who understands billing is asleep. Month-end closes three days late because reconciliation is serial. A deal slips because the security questionnaire took eleven days to come back. Those are the numbers worth putting in the business case, and they are the numbers we ask for in discovery, because they decide whether the project is worth doing and what "good" looks like when it ships.
There is a second problem underneath, and it is the one that kills most internal agent projects. Somebody built a convincing prototype in a fortnight. It worked in the demo. Then it met the real ticket queue, where twenty percent of inputs are ambiguous, three of the eight tools it needs are undocumented internal endpoints, and one of them returns HTTP 200 with an error message in the body. The prototype had no evaluation set, so nobody can say whether the fix made it better. That is the state we are most often called into, and the first month is usually spent building the measurement that should have existed first.
What an Agentic AI Engagement Includes
Discovery and task decomposition
We start by watching the work, not the systems. Someone from your side walks us through fifteen or twenty real cases end to end, including the awkward ones they would rather not show. Out of that comes a decomposition: which steps are deterministic lookups, which need judgement, which need authority a machine should not have, and where the process currently branches on something undocumented. The deliverable is a written task map with a per-step decision on automate, assist or leave alone. It routinely shortens the project, because two of the eight steps turn out to be a database query.
The tool layer
Most of the build is tools, not prompts. Each tool gets a typed schema, a narrow scope, validation on both the arguments and the response, an idempotency story, and an error contract that tells the model something actionable instead of leaking a stack trace into the context window. Where your systems have no clean API, this is where the effort concentrates, and it looks a lot like ordinary enterprise integration work with a stricter contract on the edges.
The agent loop and state
Orchestration, memory, and the rules that end a run. This includes what persists between turns and what is deliberately discarded, how the run is checkpointed so a crash does not restart the work from zero, and how a paused run resumes after a human approves a step three hours later.
The evaluation harness
A set of graded cases drawn from your data, with an outcome-level scorer instead of a text-similarity one. It runs in CI. It is the single artifact that determines whether you can change anything about the system after launch without holding your breath, and it is the first thing we build after the tool layer.
Guardrails and approval paths
Input filters, output validation, tool-level permissions, and explicit human approval on the actions that carry irreversible consequences. Approval is a design decision per tool, not a global setting, and the list of what needs it is agreed with you in writing.
Observability
Every run emits a trace: the turns, the tool calls with arguments and results, the token counts, the latency per step, the cost, and the terminal state. Traces are queryable and retained. This is not a nice-to-have. It is the only way to answer "why did it do that" and the only sane input to your next round of evals.
Deployment, runbook and handover
Infrastructure as code in your accounts, a rollout plan that starts supervised, dashboards for cost and success rate, alerts on the failure conditions we defined together, and a runbook that tells your on-call engineer what to do when the agent starts failing at 04:00. Handover includes a working session where your team ships a change to the agent while we watch and say nothing.
Which Agent Framework Should You Use?
There is no correct answer, only a correct answer for your control requirements, your team's language, and how much of the machinery you want to own. Here is where we land on each, including where each one is the wrong choice. If you want the longer comparison, weigh the trade-offs against your own control requirements before committing to a framework.
LangGraph
A graph over explicit state, from the LangChain team. You define nodes and edges, the state object is yours, and the runtime handles persistence and resumption. The features that earn it a place in production work are checkpointing, interrupts for human approval, and the ability to replay a run from a saved state to reproduce a bug.
Choose it when the process has a shape you can draw, when steps need approval, and when you need a run to survive a deploy. It is the framework we reach for most often on regulated or money-touching workflows for exactly that reason. Where it is wrong: an exploratory prototype where the shape is unknown, because you will spend your time refactoring the graph. It also carries the LangChain ecosystem's abstraction weight, and a team new to it will spend the first fortnight reading source code to find out what a wrapper actually does.
OpenAI Agents SDK
A deliberately small set of primitives: agents, handoffs between agents, input and output guardrails, sessions, and tracing that works out of the box. It is a pleasant place to start because it does not ask you to adopt a worldview, and the tracing means you can see the run from the first day rather than the first month.
Reach for it when you are on OpenAI models, want handoff patterns without building them, and value getting to a traced, evaluable agent quickly. It is the wrong tool for heavy multi-provider routing, or a workflow that needs durable, days-long execution with approvals. It is also the option most likely to make you an unwilling participant in one vendor's roadmap, which matters if your procurement team asks about model portability.
Claude Agent SDK
Anthropic's agent harness, built out of the machinery behind Claude Code. Its distinctive pieces are subagents with separate context, hooks that let you intercept the loop deterministically, permission modes for tool use, and automatic context compaction on long runs. Tools arrive through the Model Context Protocol, which means a tool server you write once can be used by other MCP-aware clients.
Choose it for long-running work over a filesystem or codebase, for anything where you want a deterministic hook in place of a polite instruction, and where context compaction on multi-hour runs is a real requirement and not a hypothetical one. It is the wrong shape for short, high-volume, latency-critical calls, where the harness is more machinery than the job needs.
CrewAI
Role-based multi-agent orchestration. You define agents with roles, goals and backstories, give them tasks, and run them in a sequential or hierarchical process. It gets a non-trivial multi-agent demo working faster than anything else on this list.
It earns a place in prototypes, internal tooling, and cases where the role metaphor genuinely matches the work. It struggles in production systems that need fine-grained control over what enters the context window, precise cost accounting per step, or resumption after failure. The abstraction that makes it fast to start also puts distance between you and the actual model calls, and that distance is expensive when you are debugging a cost spike.
Microsoft AutoGen
An event-driven runtime with a conversational multi-agent layer on top. Group chat and reflection patterns are first-class, and the asynchronous message-passing core is genuinely well designed for agents that run concurrently rather than in a line.
Use it when you have a real multi-agent problem with concurrency, when you are already inside the Microsoft and Azure ecosystem, or when you want to experiment with agent-to-agent protocols. It is overkill on a single-agent workflow, where the conversational framing adds turns, tokens and unpredictability that buy you nothing.
No framework
A loop, a tool registry, your own state object, and direct calls to the provider API. This is a legitimate production choice and we ship it regularly. You own about three hundred lines of orchestration code that you fully understand, you upgrade on your schedule, and nothing sits between you and the request payload when you are chasing a cost problem.
Choose it when the agent has fewer than about six tools, when the control flow is simple, and when your team would rather maintain their own code than someone else's abstraction. Where it is wrong: when you need durable execution, resumable approvals or distributed multi-agent coordination, at which point you are about to rebuild a framework badly.
The pieces that sit underneath, whichever you pick
The Model Context Protocol has become the practical standard for exposing tools and resources to agents, and writing your integration as an MCP server instead of framework-specific code is the cheapest insurance against changing your mind about the framework later. For workflows that run for hours or days with human approvals in the middle, a durable execution engine such as Temporal underneath the agent solves retries, timers and crash recovery far better than any agent library will. On the evaluation and tracing side, LangSmith, Langfuse, Arize Phoenix and Braintrust all do the job; we care more that OpenTelemetry's GenAI semantic conventions are emitted so your traces are portable than which vendor's dashboard you end up on.
One more piece of advice from having done this: pick your model provider strategy before your framework, not after. Whether you need a second provider for redundancy or for data-residency reasons changes which frameworks are viable, and finding that out in month three is an expensive way to learn it.
Designing the Loop: Tools, Context and Termination
Tool design is where agent projects are won
A model is only as good as the actions available to it, and most disappointing agents are suffering from bad tools, not a bad model. The rules we work to are unglamorous. Every tool gets a typed schema with descriptions written for the model, not for a human reading API docs. Arguments are validated before execution and rejected with a message the model can act on, such as naming the enum values it may use, rather than a generic validation failure.
Scope stays narrow. A single tool called run_query that accepts arbitrary SQL is a liability; three tools called get_order, get_shipment and search_customers are testable, permissionable and far easier for the model to select correctly. Responses are trimmed before they reach the context window, because a tool that returns a two-hundred-field object teaches the model nothing and costs you on every subsequent turn. Anything with a side effect gets an idempotency key, because retries are normal and a duplicated refund is not.
Keep the tool count low. Selection accuracy degrades as the list grows, and past roughly fifteen or twenty tools you are usually better off splitting into subagents with separate, smaller toolsets than continuing to add to one list.
Context and memory
Context is a budget, and the naive agent spends it on transcript. Raw tool results accumulate, the system prompt gets longer with each edge case someone patches, and by turn twelve the model is paying attention to a stale search result from turn three. Long context windows have not fixed this; they have made it more expensive to get wrong.
What we do instead: summarise or drop tool results once their conclusion has been extracted, keep a compact structured state object as the source of truth so the model does not have to remember, and separate the three kinds of memory that people collapse into one. Working memory is this run. Episodic memory is what happened in previous runs for this customer or ticket. Semantic memory is your knowledge base, and it belongs behind a retrieval tool, not stuffed into the system prompt. Where the retrieval side is substantial, it needs proper data engineering underneath, not an embedding script someone ran once.
Prompt caching sits on top of this and only works if you build for it, which means a stable prefix: system prompt and tool definitions first, volatile state last. Reordering that for readability is a change that can multiply your bill.
Termination, the thing prototypes never have
An agent needs to know how to stop, and there are more ways to stop than "finished". We define the terminal states explicitly: success with a result, success with a caveat that flags a human review, insufficient evidence, blocked by a failing dependency, budget exhausted, and refused on policy grounds. Each has a defined downstream action, and none of them is silence.
Backing that up are the caps: a maximum turn count, a token and currency budget per run, a wall-clock timeout, and a no-progress detector that ends the run when the agent repeats a tool call with the same arguments and gets the same result. The last one catches the most common runaway, and it costs about twenty lines of code. That it is missing from so many prototypes is the clearest sign that a system has not yet been run against a queue.
Evaluation, Guardrails and Human-in-the-Loop
Evaluation: the artifact that lets you change things
Without evals you cannot upgrade a model, edit a prompt, add a tool or change a retrieval parameter with any confidence, so in practice you stop touching the system and it decays. Building the eval set is the least exciting week of the project and the one that determines everything after it.
We build from your real cases, including the ones that went wrong, and we grade on outcome. Did the agent reach the right decision? Did it call the right tools with the right arguments, in an order that made sense? Did it correctly decline the cases it should not have handled? Text similarity to a golden answer is a poor scorer for agents, because two correct runs can read completely differently.
Practical shape: a small deterministic set of assertions for the things that must never vary, such as never emailing a customer without approval, plus an LLM-as-judge layer with a written rubric for the qualitative calls, plus a held-out set nobody optimises against. We calibrate the judge against human labels before trusting it, because an uncalibrated judge is a confident random number generator. The suite runs on every pull request and every model version change, and a regression blocks the merge.
Guardrails, and their honest limits
Guardrails work in layers. Input filters catch obvious injection and off-topic use. Output validation checks structure, checks claims against the retrieved sources where that is possible, and refuses to pass through anything malformed. Tool-level permissions are the layer that actually matters, because a model that cannot call the refund endpoint cannot be talked into a refund regardless of what the prompt says.
NeMo Guardrails and Guardrails AI both do useful work at the input and output edges, and Llama Guard is a reasonable classifier for content policy. None of them are a security boundary. The security boundary is your permission model, your least-privilege credentials, and your approval gates. Anyone selling you a guardrail library as the answer to prompt injection is selling you a false sense of safety, and the OWASP Top 10 for LLM Applications is worth reading precisely because it frames these as containment problems rather than filtering problems.
Human-in-the-loop, designed rather than bolted on
The interesting question is not whether to have a human in the loop but where, and how the review interface is built. Approval on every action produces alert fatigue in a fortnight and a reviewer who clicks approve without reading. We place approvals by consequence: irreversible actions, anything touching money, anything that leaves your organisation, and anything the agent's own confidence signal flags as uncertain.
The review surface matters as much as the placement. A reviewer needs the agent's proposed action, its reasoning, the evidence it used with links to the source records, and one-click approve, edit or reject. Every rejection and every edit is captured as an eval case, which is how the agent gets better at the things it currently gets wrong. Over time the low-risk paths graduate to full autonomy on the evidence of that data, and the graduation is a decision you make from a dashboard rather than a promise we make in a proposal.
How Do You Keep Cost and Latency Under Control?
Cost
Agent economics differ from single-call economics in one important way: cost per unit of work is variable and the distribution has a long tail. Your median run might be cheap and your ninety-ninth percentile run forty times that, because one input sent the model down a fifteen-turn path. Budgeting on the average is how teams get a surprise invoice.
What we do about it. Every run carries a budget and reports actual spend, tagged by workflow so you can see which use case is expensive. Model routing sends the easy majority to a small fast model and escalates only on low confidence or explicit complexity signals, which is usually the single largest saving available. Prompt caching on a stable prefix cuts the repeated cost of system prompt and tool definitions. Tool results are trimmed before they enter context. Anything that does not need a conversational turn, such as classification or extraction, comes out of the loop entirely and becomes a direct structured-output call.
Then the operational layer: per-workflow daily caps with a defined degradation, so that hitting the cap means the agent posts a diagnosis for a human instead of dying quietly, and alerts on cost per successful run rather than on total spend, since total spend rising because volume rose is good news. The same discipline of measuring cost per successful outcome, not per call, applies across any agent build.
Latency
Every turn is a model round trip plus a tool round trip, so a nine-turn run is slow no matter how fast your model is. The fix is almost never a faster model. It is fewer turns.
Concretely: run independent tool calls in parallel rather than sequentially, which most current tool-calling APIs support and most implementations ignore. Prefetch the context you know will be needed before the first model call, since a support agent will always need the customer record. Collapse chains of small tools into one tool that does the composite job, because three round trips to fetch, filter and count is one tool called count_open_orders. Stream partial output so the user sees progress, and be honest in the interface that this is a job and not a chat when the work genuinely takes ninety seconds. Where a hard budget exists, put the agent behind a queue and return a result asynchronously instead of pretending an interactive latency you cannot hit.
Failure Modes We Design Against
The loop that will not end
The agent calls a search tool, gets nothing useful, rephrases slightly, calls it again, and repeats until something stops it. Turn caps catch it eventually; a no-progress detector catches it in three turns by hashing tool name plus arguments plus result. The deeper fix is a tool that returns "no results, and here is why" instead of an empty array, because an empty array gives the model nothing to reason with.
Prompt injection through content the agent reads
A scraped page, a PDF attachment or a support ticket contains instructions aimed at the model. Since the agent has tools, the payoff for an attacker is real. We wrap all external content in explicit untrusted-data delimiters, keep dangerous tools out of any step that sees raw external text, and require approval on outbound actions. This is OWASP LLM01, and containment is the only reliable answer.
Excessive agency
The agent has broader permissions than its job needs, usually because someone gave it an admin credential during development and nobody narrowed it afterwards. It becomes a problem the first time an odd input causes a well-intentioned destructive action. Scoped service accounts per tool, read-only by default, write access only where the task demands it, and a written permission matrix reviewed at handover.
Hallucinated tool arguments
The model invents a plausible customer ID, a date format the API does not accept, or a filter field that does not exist. Strict schema validation rejects it before execution and returns a corrective message naming the valid options. Enums beat free text everywhere you can use them, and IDs should come from a prior tool result, never from the model's memory of the conversation.
Silent quality decay
Nothing errors. Success rate drifts down over weeks because a provider updated a model, your knowledge base changed, or your input mix shifted after a marketing campaign. Without an eval suite running on a schedule and a dashboard tracking success rate by input type, you find out from a customer complaint. This is the failure mode that most often ends an internal agent project quietly.
Multi-agent chatter
Three agents discuss a problem across nine turns and reach the conclusion one agent would have reached in two. Cost triples, latency triples, and the conversation introduces new ways to go wrong. Multi-agent architectures earn their keep when subtasks are genuinely parallel or need isolated context. Where they are sequential, one agent with good tools wins, and we will push back on the org chart metaphor.
Observability: Reconstructing What the Agent Did
A traditional service failure gives you a stack trace. An agent failure gives you a decision you disagree with, and nothing in a normal application log explains it. So the trace is the primary debugging artifact and it needs to be designed rather than added later.
Each run gets an identifier that propagates through every model call, tool call and downstream service, so a support ticket ID leads you to the exact run. Within the run we record every turn: the messages, the tool calls with full arguments and results, token counts split by prompt and completion, cached versus uncached tokens, per-step latency, the model and version used, and the terminal state. Prompt and tool-definition versions are recorded too, because "which prompt was live on Tuesday" is a question you will be asked.
We emit this using OpenTelemetry's GenAI semantic conventions so the data is portable, then point it at whichever backend you prefer. LangSmith, Langfuse, Arize Phoenix and Braintrust all handle agent traces properly; Langfuse is a common choice when self-hosting matters for data-residency reasons, which for UK and EU clients it frequently does.
Two things get bolted onto tracing that are worth insisting on. The first is redaction at the boundary, since traces contain everything the agent saw and that will include personal data. The second is the loop back to evaluation: a one-click path from an interesting trace to a new eval case. Without that path, the traces get looked at during an incident and ignored the rest of the time, and your eval set stops reflecting reality within a quarter.
Four Situations Where an Agent Earned Its Place
These are the shapes of problem we are most often asked to solve, written as scenarios, not as claimed client work. Each one includes the part that goes wrong, because that is the part worth knowing before you start.
Support triage across systems that do not talk to each other
A B2B software company gets a few hundred tickets a week. Answering most of them requires four lookups: the account record, the subscription plan, the recent deployment log, and a knowledge base article. Humans do it well and slowly, and the queue backs up overnight because the people who understand billing are in one timezone.
An agent handles the lookups, drafts a reply, and either sends it on the low-risk categories or attaches it to the ticket for a human. What goes wrong first is confident answers from stale knowledge: the agent quotes a refund policy from a document last edited nineteen months ago. A better prompt will not save you here. What does is a policy tool that returns the authoritative current answer directly, a freshness check on retrieved documents, and a rule that anything touching money or cancellation routes to a human regardless of confidence. The second thing that goes wrong is the agent answering questions it should have escalated, which is why "correctly declined" is one of the metrics in the eval suite from the start.
Invoice and purchase order reconciliation
A distribution business receives supplier invoices in mixed formats. Most match a purchase order cleanly. Around one in eight does not, and a finance clerk resolves each exception by pulling the PO, the goods-received note, and sometimes an email thread about a partial delivery.
This is a genuine agent case, because which document you need next depends on what the previous one said. The failure we see is a loop: a partial quantity match leaves the agent uncertain, so it fetches the PO again, then the note again, then tries a slightly different search. The fix is structural, not prompt-level. A turn budget, a state machine that forces a decision after a fixed number of evidence-gathering calls, and an explicit "insufficient evidence" terminal state that creates a task for the clerk with everything the agent found already attached. That last part is what makes it useful even when it fails, because the clerk starts from assembled evidence rather than from an empty screen.
Responding to a failing build
An infrastructure team wants an agent that reads a failed CI job, pulls the logs, checks recent commits, reproduces where it can, and proposes a fix. Attractive, and the one where excessive agency does the most damage.
Two things go wrong. The first is permissions: someone gives the agent a token with write access to the default branch because it was easier during development. Give it a token that can only open pull requests, and require human review, so the worst case is a bad PR rather than a bad deploy. The second is cost, and it is the one people do not anticipate. A flaky test fires the agent four hundred times in a day, each run burning through a large log file. Put a dedupe key on the trigger so an identical failure signature runs once, a daily budget with a defined degradation to posting a diagnosis without attempting a fix, and a rule that the agent never runs on a job that has already failed the same way in the last hour.
Account research that reads the open web
A sales team wants an agent that researches a prospect before a call: recent funding, hiring signals, tech stack, any published incident. The value is obvious. So is the attack surface, because the agent is reading content that anybody can write.
A page that includes text instructing the model to summarise its own system prompt, or to call a tool with attacker-chosen arguments, is a real risk once the agent has any tool at all. The architecture we use splits the roles. A fetching step retrieves content with no dangerous tools available to it. A summarising step reads that content wrapped in explicit untrusted-data markers, with tool access removed entirely for that turn. Only structured, validated output crosses back into the step that can act. The second issue is quieter and just as damaging: confident summaries of the wrong company, because two businesses share a name. Every claim in the brief carries a source URL, and a claim without a source is dropped instead of shown, which reviewers trust far more than a polished paragraph with no provenance.
How We Run Agentic AI Delivery From India
The overlap window, stated honestly
Our standard working day is 09:30 to 18:30 IST. Against that, London gets four to five hours of live overlap depending on the time of year, Sydney gets two to three, Auckland gets close to nothing, and New York gets essentially none, because our day ends at about 08:00 Eastern.
So for US Eastern and Central clients we run a shifted team on 13:30 to 22:30 IST, which produces three to four hours of genuine overlap covering your morning. For Auckland we shift the other way, starting at 06:30 IST, which covers your afternoon. US Pacific is the hardest case and needs a real night shift in India for more than a token overlap. We will staff that, and we will tell you what it costs in retention and coordination. We will not call it round-the-clock coverage. Shift work is harder to hire for, harder to keep, and needs a larger team to sustain, and any supplier who does not mention that is going to discover it on your project.
Written first, because the day does not overlap
The compensating mechanism is that most communication is written and asynchronous by default. Decisions go in the repository as short decision records, not in a call. Every non-trivial change arrives as a pull request with context in the description. Questions are posted with enough background that you can answer them in one message rather than scheduling a call to unpack them.
Agent work suits this better than most software, and that is not a rationalisation. A failed agent run leaves a complete trace. If you look at a bad run at 09:00 New York time, you can read exactly what the agent did, comment on the trace, and the fix is in review before you finish your afternoon. Very little of the debugging conversation requires both parties awake at once.
The rhythm
A written standup lands in your channel before your day starts: what shipped, what is blocked, what needs a decision from you, and any run that failed in a new way. One live call per week, in the overlap window, for the things that genuinely need a conversation. Two-week sprints with a demo of working software against real cases, never a slide deck. A shared board you can read at any time without asking anyone.
You get a named engineering lead who is your single point of contact and who is on every call. Not an account manager relaying messages, and not a rotating cast. If your team wants direct access to individual engineers in your Slack, that is normal and we set it up on day one.
Code review and the definition of done
Nothing merges without review by a second engineer, and on agent work the review checklist has items a general reviewer would not think of. Does every new tool have schema validation and a defined error contract? Is the tool's response trimmed? Does the change alter the cached prompt prefix? Are there eval cases covering the new behaviour, including a negative case? Does the trace still capture what it needs to?
Done means merged, covered by evals that pass in CI, traced in staging against real inputs, documented in the runbook, and demonstrated to you. An agent change that passes unit tests but has no eval case is not done, and we treat that as a blocking review comment rather than a note for later.
QA gates before anything faces a customer
Three gates. First, the eval suite against the graded set, with a required score and no regression on the held-out cases. Second, a shadow run: the agent processes real traffic in parallel with humans and produces output nobody sends, and we compare. Third, supervised production, where every action needs approval, until the approval data says the low-risk path can graduate. The step from gate two to gate three is a decision you make with the numbers in front of you.
Reporting
A weekly written report with the sprint state, and a live dashboard covering run volume, success rate by input type, human intervention rate, cost per successful run, and latency percentiles. The metric we care most about at the start is the human intervention rate, because it is the honest measure of whether the thing is actually working. Cost per successful run matters most later, once volume is real.
What Could Go Wrong With an Offshore Agent Team?
Losing control of quality
The fear is reasonable and the answer is process rather than promises. Engineers on agent work are assessed on a practical exercise built from a real problem, not a puzzle: given a flaky tool and a failing run, find the cause. English is assessed in the same session, in the way the work actually uses it, which is written explanation of a technical decision rather than conversational fluency.
After that, quality is visible rather than asserted. You have repository access from the first commit, you see every pull request, you read the traces, and the eval scores are on a dashboard you can open without asking. If the numbers are moving the wrong way you will know before we tell you, which is the point.
Who owns the code, the prompts and the data
You do, from the start. The master services agreement carries a present assignment of IP, and it names prompts, eval sets, trace data and infrastructure definitions explicitly, because a generic software IP clause written before 2023 does not clearly cover them and that ambiguity is worth closing. Everything lives in your GitHub organisation and your cloud accounts. NDAs cover the company and every individual engineer.
On data protection: we work as a processor under UK and EU GDPR with a data processing agreement and standard contractual clauses where transfer requires them, and India's Digital Personal Data Protection Act 2023 applies on our side. Where your data cannot leave a jurisdiction, we build for that, which usually means model endpoints in your region and self-hosted tracing. Say it in the first call rather than the fourth, because it changes the architecture and it is expensive to retrofit.
Security and access
Least privilege, applied to both people and agents. Engineers get access to the systems their tasks need, through your identity provider with multi-factor authentication, and access is reviewed when someone joins or leaves the team. Company-managed devices with disk encryption and screen lock. No production data in development environments without approval and masking. Where you have SOC 2 or HIPAA obligations, we work inside your control set and produce the evidence your auditor needs; we do not claim your certification as ours.
The agent-specific part deserves separate attention. Agents get their own service accounts with narrow, tool-level scopes, credentials live in your secret manager and are rotated on your schedule, and there is a written permission matrix listing every tool, what it can reach, and whether it needs approval. That document is reviewed at handover and it is the first thing an auditor asks for.
Attrition, replacement and the bus factor
The Indian technology market is competitive and people move. Anyone telling you their attrition is zero is either very new or not counting carefully. What we control is the blast radius. Notice, handover and exit terms are written into the agreement before work starts rather than settled in a hurry later. No single engineer is the only person who understands a component; the second reviewer on every pull request is doing double duty as a knowledge backstop. Decision records, runbooks and the eval suite mean the system is documented by construction rather than by someone's memory.
If a replacement is needed, tell us and we will deal with it; how the overlap and the ramp-up are treated is one of the things your agreement should say, so it is worth settling before you sign. Where the calendar allows, the replacement pairs with the outgoing engineer while both are still on the team.
If it does not work out
Written into the agreement, not negotiated in a bad month. Notice and handover terms are agreed with you before the engagement starts. Everything is already in your accounts, so there is nothing to hand back. Exit includes a knowledge transfer period with recorded working sessions, an updated runbook, and a documented list of known issues and deferred decisions, because the honest version of that list is worth more to your next team than a clean-looking one.
The costs that do not appear in a proposal
Three, and they are real. Ramp-up: a new engineer on your codebase is not fully productive for two to four weeks, and on an agent project with unfamiliar internal tools it is at the longer end. Your own management overhead: an offshore team needs written specifications and someone on your side who can answer questions with authority, and if that person does not exist the project stalls no matter who you hire. And the operating cost of the agent itself, which is not a build cost at all but an ongoing model bill that scales with volume, and which we model with you during discovery rather than after launch.
Engagement Models
Dedicated agent team
A named team working only on your product, typically an engineering lead, two or three engineers with agent experience, and a QA engineer who owns the eval suite. Billing cadence and notice terms are agreed with you up front. This is the right shape when agents are becoming part of your platform and not a one-off automation, because the compounding value sits in the eval data and the tool layer, and both need an owner.
Scoped build
One workflow, fixed scope, fixed price, defined acceptance criteria expressed as eval scores, not as a feature list. Usually six to ten weeks to supervised production. The right choice when you want to prove the approach on a real problem before committing a team, and the acceptance criteria are agreed in writing before anyone writes code.
Rescue and hardening
You have an agent that works in a demo and not in production. We audit it, build the eval suite that should have come first, add tracing, fix the termination and permission problems, and get it to a state your team can safely change. Four to six weeks, and it starts with a written assessment you can act on even if you take it no further.
Ongoing operation
Once an agent is live it needs owning: model version upgrades tested against evals, eval set growth from real traces, cost tuning as volume changes, and new tools as the workflow expands. A retainer with defined response times, sized to the number of live workflows rather than to a fixed headcount.
Staff augmentation
Engineers with agent experience embedded in your team, working to your process, your board and your definition of done. Suitable when you have the architecture and the product direction and need capacity. We are candid that this model transfers less of our process to you, which is fine when you already have your own.
Architecture review
Two weeks, no build. We review your agent design, tool layer, evaluation approach, permission model, cost profile and trace coverage, and deliver a written assessment with prioritised findings. Often bought before a build decision, and occasionally the thing that stops a build that should not happen.
Where This Fits With Our Other Work
If your problem turns out to need one well-designed model call rather than a loop, LLM integration is the cheaper and faster route, and we would rather point you there than sell you an architecture. Where the agent depends on retrieval over your own documents or a warehouse, the quality ceiling is set by the pipeline underneath it, which is data engineering work. Where the tools the agent needs are locked inside an ERP, a CRM or a system with no usable API, that is enterprise integration, and it is usually the longest pole in the build.
On the staffing side, most agent work in this ecosystem is Python, so teams are commonly built around Python developers in India with orchestration and evaluation experience. And if you are still choosing between orchestration libraries, the right choice usually comes down to your team's language and how much of the machinery you want to own.
Frequently Asked Questions
What is agentic AI, and how is it different from a chatbot?
A chatbot answers. An agent decides. Given a goal, an agentic system chooses which tool to call, reads the result, and keeps going until it hits a stopping condition or a budget. That loop is the whole difference, and it is also where the engineering lives: tool design, termination rules, and what the system does when step four of nine returns a 500.
Which agent framework do you use?
Whichever fits the control you need. LangGraph when the flow is a state machine with checkpoints and approval steps. The OpenAI Agents SDK or the Claude Agent SDK when you want handoffs and tracing without building scaffolding. CrewAI for fast role-based prototypes. A large share of production agents are a loop over a tool-calling API with no framework at all, and we say so when that is the honest answer.
How do you stop an agent from looping forever or spending too much?
Hard caps at three levels: maximum turns per run, a token and currency budget per run, and a wall-clock timeout. Repeated identical tool calls trip a no-progress check that ends the run and files a human task. Every run reports its own cost, and a daily cap degrades the agent to read-only diagnosis instead of letting it retry through the night.
How do you handle prompt injection in an agent that reads external content?
By treating everything the agent reads as data and never as instructions. Retrieved pages, ticket bodies, PDFs and tool outputs are wrapped and labelled untrusted. Dangerous tools sit behind a step that never sees raw external text, and anything moving money, sending external email or writing to production needs an approval. OWASP ranks prompt injection as LLM01 because you contain it, you do not prompt it away.
How do you know the agent works before it touches customers?
An evaluation set built from your real cases, scored on the outcome, not the wording. We track task success, tool-call correctness, cost and latency per run, and how often the agent correctly refuses. The suite runs in CI on every prompt, tool or model change, because a model version bump is a code change even when nothing in your repository moved.
Who owns the code, the prompts and the evaluation data?
You do, from the first commit. Code, prompts, eval sets, traces and infrastructure definitions live in your repositories and your cloud accounts. IP assignment is set out in the master services agreement, which we agree with you before work starts. Prompt and evaluation artifacts are worth naming explicitly when that document is drafted, because those are the assets people forget to list and they are most of what an agent project is worth.
What is the real timezone overlap if our team is in New York or Sydney?
On a standard 09:30 to 18:30 IST day, London gets four to five hours, Sydney two to three, and New York almost nothing. For US Eastern we run a 13:30 to 22:30 IST shift, which buys three to four hours of live overlap. US Pacific needs a genuine night shift in India, and we staff and price that openly rather than calling it round-the-clock coverage.
How long before an agent is doing real work?
A single scoped workflow with tools, evals and tracing usually reaches a supervised production run in six to eight weeks. Removing the human approval on the low-risk path takes longer, because that decision depends on eval data you can only gather by running the thing against live traffic. Anyone promising a fully autonomous agent in two weeks is describing a demo.