# Knowledge autopilot

> Tell Concierge about your app once. It writes the AI's help articles from your links, notes, codebase and resolved chats, keeps them current, and adds buttons that open the right screen.

Source: https://conciergesdk.com/docs/knowledge/

The AI agent is only as good as what it knows. The knowledge autopilot builds that knowledge for you: give it your help pages, a few notes, or let your coding agent read your codebase, and it writes short, structured articles the AI answers from. When a user asks something nobody wrote down, you see the question. When an answer is about a screen, the reply can carry a button that opens it.

> **Pro feature:** The knowledge autopilot is included in Pro and Scale. It starts once your workspace subscribes: before that, sources are saved but not read, and articles you write yourself work as usual.

## Turn it on

In the dashboard, open your app's **Settings**, **Knowledge** (owners and admins only):

| Setting | Default | What it does |
|---|---|---|
| Knowledge autopilot | Off | Reads your sources, logs unanswered questions, stores the screens your app registers and lets replies link to them. |
| Publish without review | Off | Articles built from your links and notes go live right away. Suggestions from conversations and drafts for unanswered questions always wait for review. |

Everything else lives on the **Knowledge** page of your app: Articles, Sources, Unanswered and Feature map.

## Sources

| Source | How to add it | What happens |
|---|---|---|
| Link | Knowledge, Sources, **Add a link** | We read the page and the pages it links to on the same site, then draft one article per feature. |
| Product notes | Knowledge, Sources, **Add notes** | Up to 20,000 characters: what each plan includes, where things are, known issues. |
| Your codebase | The `/build-knowledge` MCP prompt (below) | Your coding agent reads the repo on your machine and writes articles back. The code never leaves your computer. |
| Resolved conversations | Unanswered, **Suggest from resolved conversations** | Closed conversations your team answered become draft articles, without personal details. |

Each source shows its status (pending, reading, ready or error with the reason), pages read, when it was last read and when it refreshes next. **Re-read now** reads it again on demand. Removing a source keeps the articles written from it.

The **Recent runs** list shows every read: what kind it was, its status, pages read, drafts written, articles flagged, and why a run was skipped or failed.

## Review

New articles are **drafts**. The AI never sees a draft. On the **Articles** tab, drafts come first, each with where it came from (Crawl, Notes, Conversation, MCP, Gap or Manual).

Open one to edit the title and text, plus the structured details the AI uses:

- **Feature** and **Plan required**, so the AI can say "that needs Pro".
- **Where in the app** (`Settings > Backup`) and **Steps**, one per line, using your UI labels.
- **Known issues** and **Related screens**.
- **Open screen button**: a screen from your feature map, never a URL.

Then **Approve** (your edits are saved with it), **Reject**, **Save** for later, or **Delete**. A rejected feature isn't proposed again with the same content.

When a source changes, the autopilot doesn't overwrite live articles. It drafts a revision, shown as **Update to** the live title; approving it replaces the live article in place. With **Publish without review** on, link and notes articles update in place instead.

Live articles can carry warning flags for you to check:

| Flag | Meaning |
|---|---|
| Stale | The page it was written from is gone. |
| Contradiction | It disagrees with another article (named in the flag). |
| Source changed | The page it came from changed since it was written. |

Fix the article or confirm it's fine, then **Clear flags**.

## Unanswered questions

When the AI can't answer from your articles, it says so instead of guessing, hands the conversation to your team (unless handoff is set to never) and logs the question. The **Unanswered** tab ranks these by how often they're asked, with the last time and a link to the latest conversation.

- **Draft an article** writes a draft for that question from what the autopilot already knows, marking unknowns `[fill in]`. It appears under Articles in about a minute.
- **Dismiss** hides a question you won't answer.

Questions are customer text and are always shown as plain text.

## Feature map and screen buttons

Register the screens worth linking to, once at launch:

```swift
Concierge.registerScreen("settings.backup", title: "Backup settings", deepLink: URL(string: "myapp://settings/backup")!)
```

The SDK keeps the deep link on the device and sends only the id and title. The **Feature map** tab lists every registered screen with its platforms, how many articles link to it and when a device last reported it. When an answer is about one of them, the AI adds an **open screen** button. Tapping it closes the chat and opens your registered deep link, or calls your `onOpenScreen` handler if you route in app.

`reset()` clears the registered screens and the `onOpenScreen` handler, so register them again after a reset. While the SDK is suspended, screen buttons are hidden and nothing opens; screens you register in the meantime are sent after `resume()`.

Platform guides: [iOS](https://conciergesdk.com/docs/ios.md#screen-links), [Android](https://conciergesdk.com/docs/android.md#screen-links), [React Native](https://conciergesdk.com/docs/react-native.md#screen-links), [Flutter](https://conciergesdk.com/docs/flutter.md#screen-links), [Web](https://conciergesdk.com/docs/web.md#screen-links).

## Build it from your codebase (MCP)

Connect the [MCP server](https://conciergesdk.com/docs/mcp.md) to Claude Code once:

```sh
claude mcp add --transport http concierge https://mcp.conciergesdk.com/mcp
```

Then, in your app's repository:

```text
/mcp__concierge__build-knowledge app_...
```

Add a focus to start with one area, for example `/mcp__concierge__build-knowledge app_... "subscriptions and restore"`. The agent maps your screens, settings, paywall, feature flags, error messages and strings, proposes any missing `registerScreen` calls, shows you the list of articles it plans to write, and after you approve writes them as drafts with `upsert_knowledge`. It sees your existing articles, registered screens and open questions, so it updates instead of duplicating. Other MCP clients list it as the `build-knowledge` prompt.

## Refresh

Links are read again every 7 days, and right away when a device reports an app version nobody had before. Pages that changed flag the articles built from them, then new drafts are written in the background. A suggestions scan of resolved conversations also runs once a week.

## Limits

- 25 sources per app.
- Per link: same site only, 2 links deep, 40 pages, robots.txt respected.
- Per organization: 20 runs and 300 pages an hour. Past that, the dashboard asks you to try again in about 10 minutes.

## Safety

- **Drafts before live.** Generated articles wait for your review unless you turn on Publish without review, and suggestions from conversations and gap drafts always wait.
- **Raw pages never reach replies.** Crawled pages, notes and conversations are treated as data, never instructions. The AI answers only from articles.
- **Public pages only.** We fetch https on port 443 from public hostnames only. No IP addresses, localhost or internal names, and every address a name resolves to must be public (private, loopback, link local, cloud metadata and similar ranges are refused). Redirects and links stay on the site you added. We identify as `ConciergeBot/1.0` and honor robots.txt, `noindex` and `nofollow`.
- **Deep links stay on the device.** The server stores screen ids and titles, never URLs. A button only shows if its screen is registered on that device, and it opens the link your app registered. On Android it opens only inside your app; on the web, only same-origin links are accepted.
- **Admins decide.** Turning the autopilot or auto publish on or off is limited to owners and admins and recorded in the audit log.
