Everyone is talking about AI agents and retrieval-augmented generation (RAG) like they are a new frontier reserved for a handful of AI specialists. They are not. A recent build inside GoTeams’ own presales platform, Partner Portal, shows why: an engineering team set out to fix a single, boring bottleneck, and ended up with something that technically counts as an AI agent, without ever setting out to build one.
1. The bottleneck was never AI. It was reading, at volume, by a human.
Partner Portal is where GoTeams’ presales work lives. New client organizations get onboarded, their people upload requirement documents and meeting notes, and admins read every one of them by hand to put together estimates. That is the real bottleneck: reading, at volume, by a human, every time.
The fix the team scoped was not “stand up a RAG pipeline.” It was smaller: let an admin type a question instead of digging through five documents to find one answer. That was the whole ambition, and it is a useful reminder for any team evaluating an AI-orchestrated engineering team over a generic “AI project”: the brief should start from the bottleneck, not the architecture diagram.
2. Semantic search is not magic. It is matching meaning, not spelling.
RAG has a reputation as complex machinery. Stripped down, it does one thing: it matches what a user means, not the exact words they typed, then hands a language model the right chunks of text to answer from. Search “social login” the old way, and if a document only ever says “Sign in with Google,” the search returns nothing, because the words do not line up. RAG finds it anyway, because it is chasing meaning, not spelling. Everything else in a RAG system is plumbing.
For the Partner Portal build, that plumbing was the team’s normal stack: Node.js and Postgres, a few libraries to pull text out of Word documents and spreadsheets, a local embedding model run through Ollama, and LanceDB as a small vector database to store and search the results. Nothing on that list needed a new team to run it. The team expected a weekend build.
It was not a weekend build.
3. Every real question broke the first draft in a different way
The first real test asked which project had a login feature requirement. The system answered confidently, and wrongly, because the document that actually described the login requirement never mentioned the project’s name. Documents do not introduce themselves. The project name only lived in the database, so the model matched “login” correctly and had nothing useful to say about whose login it was.
The fix was not clever. It was the same move any backend developer has made a hundred times with foreign keys: tag each chunk of text with its project ID at ingestion, then look up the real project name before the answer reaches the screen.
The next failures followed the same pattern. A summary request came back as one sentence instead of an overview, because the search grabbed the single closest match instead of surveying a whole project. A comparison between two projects let one project’s content drown out the other, because nothing in the system had a concept of “fair.” None of these were architectural failures. Each was a gap the team had not accounted for yet, closed with the simplest fix that actually worked.
Then a different kind of question showed up: how many documents does this project have, or which projects have not filled out their questionnaire. Those questions have nothing to do with searching documents. They are facts sitting in rows in Postgres. No embedding model, however capable, was going to answer a question whose real answer was a row in a table.
4. The one decision that turns a search tool into an agent
Here is the turning point, and the only genuinely architectural call in this build: before searching anything, classify what kind of question is being asked and where the answer actually lives. The team added one step up front that reads the question, decides where it needs to go, then hits the database, searches the documents, or does both: database for identity, documents for substance.
Lay that out, and it is the textbook shape of an AI agent: something that determines intent, picks the right source, acts on it, and backs its answer with real evidence instead of guessing. The team had built one. Nobody called it that while building it, because building “an agent” was never the point. This is also the exact shape of GoTeams’ own AI stance: AI accelerates documentation, testing, and boilerplate generation, but the translation from a business question to the right data source is engineering judgment, not something a model does unsupervised.
5. Orchestration is the pattern, not the exception
This is not an isolated result. GoTeams built Zennify, a call-center platform extended into a scalable framework for AI assistants that now handles LLM orchestration, speech services, and Twilio integration for clients including PMI, Nestlé, FlixBus, and Illy Café. The same underlying discipline shows up there: the model is one component wired into a system that routes, validates, and structures what reaches it, not a black box asked to handle everything on its own. A GoTeams team built and runs it.
The pattern holds because the hard part of shipping an AI agent is rarely the model call. It is the engineering around it: intent classification, data routing, retrieval quality, and error handling for the cases the model gets wrong. That is precisely the work an AI-orchestrated engineering team does by default, on every project, whether or not the word “AI” appears in the brief.
6. Why this should not intimidate your engineering team
Nothing inside a RAG system or an agent is new. Semantic search has existed for decades. Breaking documents into pieces and deciding which source answers which kind of question is software engineering. Most developers have written some version of a routing layer or a decision tree before, for something that had nothing to do with AI. The one genuinely new component to appear in the last few years is the large language model itself, sitting at the step where it reads what got retrieved and writes the answer in plain language.
That is the entire new part. Chunking text, building embeddings, deciding what to search where, and classifying intent were already sitting in the standard software toolbox before anyone attached the words “RAG” or “agent” to them. Shipping this does not require a new specialty. It requires the same debugging instinct a strong engineering team already has, pointed at a system where a language model is one more tool in the box, not the whole box. That is the case for hiring an AI-orchestrated engineering team over a standalone “AI team”: the AI component is a small part of what actually has to be built and maintained.
Frequently asked questions
What is an AI-orchestrated engineering team?
An AI-orchestrated engineering team is a development team that uses AI selectively, for documentation, testing, and boilerplate generation, while keeping architecture, business logic, and quality decisions under expert human control. GoTeams runs this model with 4,000+ vetted professionals and a 98% team retention rate, so the engineers who scope an AI feature are the same ones accountable for it in production.
Do I need a RAG pipeline to build an AI agent?
Not always, and not first. A RAG pipeline (retrieval-augmented generation) is useful when an AI feature needs to answer questions from unstructured documents. If the real questions are factual lookups against a database, a RAG pipeline solves the wrong problem. The Partner Portal build only added retrieval-augmented generation after confirming which questions actually needed it.
Why do RAG-based AI features fail in production even when the demo works?
They usually fail because the system does not know what kind of question it is answering. A demo tests the cases the builder thought of. Production sends questions that need database facts, document search, or both, and a system without an intent-classification step in front of retrieval will search when it should have queried a database, and return a confident, wrong answer instead of the right one.
How is an AI agent different from a chatbot with search?
An agent determines what a request needs, chooses where to get the answer from among multiple sources, acts on that choice, and backs the answer with the evidence it retrieved. A chatbot with search only does the last step. The intent-classification and routing layer is what separates the two, and it is standard software engineering, not a new AI discipline.
What does it take to build an AI agent without hiring AI specialists?
It takes an engineering team that already knows how to debug hard problems: schema design, routing logic, and edge-case handling. GoTeams builds this way by design. Its AI-orchestrated engineering teams activate within 30 days, versus the typical 4 to 9 month internal hiring cycle in DACH, because the skills required are engineering skills the team already has, with a language model added as one more component.
The bottom line
If a team only needs a basic chatbot wired to an FAQ page, an off-the-shelf tool will do. But building an AI agent that answers real questions against real business data takes the same engineering discipline as any production system: schema design, routing logic, and handling the cases nobody anticipated on day one. GoTeams’ AI-orchestrated engineering teams are built to do exactly that, activating in under 30 days with the same developers who scope the system staying accountable for it once it ships.

Leave a Reply