---
title: "Citations and navigation"
description: "How the assistant sources its answers, why it says \"not found\" instead of guessing, and how it only links to pages your role and plan can open."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.overlane.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Citations and navigation

## Answers come from the docs

For a question, the assistant searches the docs, the changelog and the reference, and answers with **the matching passages themselves**, each with a link to its page. It does not write new text for a docs answer, so it cannot invent a fact. Every answer lists its sources.

If nothing in the docs matches well enough, the answer is the same each time: `I could not find that in the docs.` You can rate any answer. A thumbs-down on an answer or on a "not found" opens a docs-gap issue so the docs can be fixed.

Answers are cached for the same question, role and plan, and the assistant limits how many questions each person can ask per hour, by plan. Cached answers do not count against the limit.

## Navigation uses a real list of pages

The app's pages are listed in a **route index** that is generated every time the web app is built, with the roles and the lowest plan that can open each page. The build fails if a page has no entry. When you ask to go somewhere, the assistant matches your words against that list and links only to a page in it, so a link is never made up.

## Hidden pages stay hidden

The filter by your role and plan runs **before** matching. A page you cannot open is never a candidate, never named, and never appears in a snippet. If you ask about a topic that only exists on a higher plan or role, and a public docs page covers it, the assistant shows that docs answer and adds that the feature is available on a higher plan or role. If no public page covers it, it says it could not find a page among the pages you can open.

## Check it yourself

This sample runs in the docs tests against the real contracts:

```js run
const entry = { path: "/{workspace}/ci", roles: ["owner", "admin"], plan: "team" };
assert.equal(routeVisible(entry, "admin", "team"), true);
assert.equal(routeVisible(entry, "viewer", "team"), false);
assert.equal(routeVisible(entry, "admin", "free"), false);
```

Source: https://docs.overlane.app/overlane-agent/citations-and-navigation/index.mdx
