Enterprise Search and Website Answer Agents

There are two versions of this problem and they deserve different answers. Internal enterprise search is about employees finding what the organisation already knows. A website answer agent is about visitors getting a straight answer without hunting through your site. Both are retrieval problems; only one is public-facing, and the security models differ completely.

Internal Knowledge Search

Your organisation’s knowledge is spread across SharePoint, shared drives, ticketing systems, wikis, code repositories and email. People do not fail to find things because search is bad — they fail because the knowledge is in six systems with six search boxes.

  • Natural-language search across systems — one question, many sources.
  • Permission-aware retrieval — results respect what each person is already allowed to see. This is non-negotiable, and it is the part cheap implementations skip.
  • Cited answers — every response points to the document behind it, so it can be verified.
  • Honest gaps — saying “this is not covered” instead of inventing an answer.
  • Unanswered-question reporting — a map of where your documentation is actually thin.

The retrieval architecture behind this is covered on our RAG and enterprise search page.

Website Answer and Response Agents

A public answer agent is not “a chatbot” in the 2017 sense. Done properly it does semantic search over your real content, recommends the relevant service, cites its sources, captures qualified enquiries into your CRM, offers scheduling, escalates what it cannot answer, and reports the questions it failed on.

It is also a public attack surface. Anything a visitor can type is untrusted input, so a public agent gets tighter tool scoping and stricter output handling than an internal one — the reasoning is set out in our sister practice’s article on prompt injection.

The Common Requirement

Both versions live or die on grounding. An answer that cannot be traced to a source is not usable in a business context, whether the reader is an employee or a prospect.

Tell us what people are failing to find — internally or on your site — and we will scope the right approach.

Related services

When a Retrieval Project Is the Wrong Answer

Not every finding problem is a retrieval problem. If the answer people want lives in one system, is current, and is two or three clicks from where they start, the fix is information architecture: better titles, better navigation, and a synonym list in the search box you already own. Putting an index and an answer layer on top of a small, well organized body of content adds moving parts without changing what people experience.

The harder case to admit is that the answer does not exist anywhere. Retrieval returns what has been written down. It cannot produce a policy nobody wrote or a procedure that lives in one person's head, and no amount of engineering changes that. When we look at what people are failing to find, some share of it is undocumented rather than unfindable, and that share is a writing assignment for whoever owns the subject, not a project for us.

There is a cheap way to tell the difference before committing to anything. Take the questions people actually asked, in their own words, and mark each one with where its answer lives.

  • Answer sits in one system, and the asker had access the whole time: this is a navigation and labeling problem.
  • Answer requires reading two or three documents together, or the sources are spread across systems with different search boxes: this is what retrieval is for.
  • Answer does not exist in any system: nothing to retrieve, and building an index will only tell you that more expensively.
  • Answer exists in several conflicting versions: settle which one is authoritative first, because retrieval will happily return the wrong one.

What the Source Systems Have To Provide

Every connector needs three things from the system it reads: a way to enumerate what is there, a way to fetch each item as text, and a way to learn who is allowed to see it. The first two are usually straightforward. The third decides the shape of the whole project.

Permission-aware retrieval depends on the source answering the entitlement question per item, and on an identity system that can report a person's group membership at the moment they ask, not at the moment the content was crawled. Membership baked into the index at crawl time goes wrong the day somebody changes teams, and it goes wrong silently. Some sources cannot answer the entitlement question at all: a shared drive whose access has been inherited and hand edited for years, a mailbox archive with no per item access control, an old document store with permissions only at the container level. Where that is the case, such a source is either restricted to an audience already entitled to all of it, or left out. That call gets made per source, in writing, during scoping rather than during rollout.

Before a source is connected, these are the things that have to be settled about it:

  • A named owner who can approve access and say what is authoritative when two documents in that source disagree.
  • A read scoped service account, so the connector cannot write even by accident.
  • Whether entitlements are readable per item or only per container.
  • Whether the content carries a text layer at all, or is scanned images and screenshots that would need OCR before any of it is reachable.
  • Whether the source is live content or an archive that should be excluded so superseded material stops competing with current material.

Judging Whether It Works

Fluent output is not evidence of anything. The only measure that matters is whether the cited source actually supports the sentence it is attached to, which means evaluation is a reading exercise, not a demo. Build a fixed set of real questions with their known correct sources, and score answers against that set. Rerun it whenever content, retrieval settings, or the model changes, because a change that improves one family of questions routinely degrades another, and that is invisible without a fixed set to compare against.

Separate the two failure modes early, since they look identical to a user and have nothing in common underneath. In the first, the right document was never retrieved: the fix lives in chunking, indexing, and how the question is expanded before search. In the second, the right document was retrieved and the answer misstates it: the fix lives in how much context is passed, how the answer is assembled, and how output is constrained. Treating both as one problem is the most common way effort gets spent without moving the result.

Grounding failures also come in a version that no retrieval tuning can fix: the source itself is wrong, contradicts another source, or was superseded and never withdrawn. The system will cite it faithfully. Which is why the audit trail is useful beyond compliance: a wrong cited answer points straight at a document somebody needs to correct.

Where These Projects Break

The failures are almost always content failures wearing a technical costume. Retrieval quality is bounded by the state of what it reads, so the work that determines the outcome tends to be unglamorous and belongs to the customer as much as to us.

Near duplicates are the worst of them. Several versions of the same policy sit in different systems, most of them superseded, and retrieval returns whichever one most resembles the question rather than whichever one is current. No ranking change fixes this. Someone has to mark the authoritative copy or remove the rest.

Vocabulary is the second. People search using project code names, team acronyms, and internal shorthand that appear nowhere in the documents themselves, so a semantically correct search returns nothing. This is solvable with a maintained mapping between how people speak and how documents are written, but it is a living list with an owner, not a one time configuration.

The last one is procedural. Unanswered-question output only has value if a specific person is expected to act on it. Assign that to a role during scoping, or it becomes a report that accumulates and is never opened, and the documentation gaps it identified stay exactly where they were.

Frequently Asked Questions

What is a website answer agent, concretely, and what is it not?

It is not a scripted decision tree with branching buttons, and it is not a model answering from general knowledge about your industry. Every response is assembled from content you have published, which means the quality ceiling is set by what you actually wrote and made available. If it appears to know something you never published, that is a defect to investigate, not a capability. On a site whose content is thin or out of date, the agent is thin and out of date in more articulate prose.

What has to already exist before either version can be built?

For internal search: source systems that can be read programmatically, a read scoped service account for each one, and an identity system that can report a person's group membership at query time. For a public agent: content that is published, current, and reachable, since there is nothing else for it to ground answers in. The constraint that usually decides scope is entitlement data. If a source cannot report who may see each item, it is either restricted to an audience already entitled to all of it, or left out.

How does a rollout actually proceed, in order?

Collect the questions people are genuinely failing to answer, then pick the one or two sources that cover the largest share of them. Stand up read scoped connectors, index that narrow slice, and build the evaluation set from those questions with their known correct sources. Permission behavior gets tested with real accounts from different groups before anyone outside the project sees it. More sources go in only after the narrow version answers correctly with citations that hold up, because widening early multiplies failures across sources and makes it impossible to tell which source is at fault.

Does this replace the search we already have in SharePoint or on our site?

No, it runs alongside them and both keep working. The index is a derived copy: documents stay where they are, keep their permissions, and are not moved, renamed, or restructured, so the system of record does not change. Teams expecting a consolidation project are sometimes surprised by this. It is deliberate, because it means the search layer can be turned off and everything underneath is exactly as it was.

How does it connect to the systems we already run?

Internal search is a read only client of your systems. It does not move documents and it never becomes the system of record for anything. Anything that writes into another system is handled separately from retrieval: each write path is its own scoped connection, enumerated and approved individually, with its own credentials and its own limits on what it can do. Read paths and write paths are not governed by the same rules and should not be granted in the same conversation.

Where does our content end up, and what stays under our control?

The index holds a derived copy of your content: extracted text split into chunks, plus the vector representations used to search it. Where that copy is hosted, your own tenant or infrastructure we operate, is decided during scoping before anything is connected, and it can be deleted and rebuilt from source at any point. Query logs deserve equal attention. What employees ask a search system is itself sensitive, so retention, access, and who may read those logs are your decisions rather than defaults we set.

What do we have to provide or decide ourselves?

A named owner for each source who can approve access and rule on which document wins when two disagree. A list of sources in scope and, just as usefully, sources deliberately excluded and why. The real questions people are failing to answer, phrased the way they were actually asked rather than cleaned up into ideal queries. And for a public agent, where escalation goes and who is on the receiving end when the agent hands something off.

Can one system serve both employees and website visitors?

They can share retrieval engineering, but they should not share an index or a deployment. Internal content includes material that must never be reachable from a public endpoint, and the reliable way to guarantee that is for the public deployment to have no path to it in the first place. They also need separate evaluation sets, since employees and visitors ask differently shaped questions about the same subjects and a set built from one will not catch failures in the other.