
Knowledge gaps are in beta. The behavior described here, and the API behind it, may change without a deprecation period.
How a gap is detected
- Customer Agent can’t answer. the Customer Agent searches your knowledge sources for an answer to the customer’s message. If it can’t find one it trusts, it hands the thread to your team and records a signal. Other handoffs, such as a customer asking for a human or a billing question, don’t record a signal. This happens in test mode too, so you can fill gaps before the Customer Agent goes live.
- Plain checks it’s a real gap. Only general product questions your docs should answer become gaps. Requests for the Customer Agent to act, questions about a customer’s own account, and topics outside your product are dropped.
- Plain groups it. The question joins an existing gap that covers the same topic, or opens a new one with a generated title and description. One gap per missing topic, however many customers ask.
- Plain raises a task on the second hit. A gap stays hidden until a second thread asks the same question. Plain then creates one unassigned task, titled Knowledge gap: …, and links both threads to it. Later threads link to the same task and update the gap’s Last seen time. A question that isn’t asked again within 90 days never appears; if it comes back after that, Plain starts counting again.
Reviewing gaps
Go to Customer Agent → Knowledge → Knowledge gaps. The list shows each gap’s task, title, number of threads, and when it was last seen, sorted by thread count so the most common questions come first. Switch between Todo, Done, and Cancelled to see open, filled, and dismissed gaps. A gap’s status is its task’s status: mark the task done to close the gap, and Plain reopens it if the same question comes back. Deleting the task removes the gap from the list. Click a gap to see its description, its task, and the threads where customers asked it. Reading 2 or 3 of those threads tells you how customers phrase the question, which is what the article needs to answer. The task also appears on the Tasks page and under Tasks in each linked thread’s sidebar. Open the task and the gap is shown under Knowledge gap. If you turn off tasks, Plain still records gaps, but their tasks only appear on the Knowledge gaps page.Filling a gap with Sidekick Agent
The Sidekick Agent ships with a built-in skill, /fill-knowledge-gap, that researches a gap and drafts the missing article. To start it:- Open the gap’s task and click Handle with Agent
- Type /fill-knowledge-gap in any Sidekick Agent session, then name the gap or task, or paste the gap’s link
1
Research
The Sidekick Agent reads the gap and its linked threads, searches your knowledge sources and existing Help Center articles, and finds similar past threads to see how your team answered before. If you’ve connected a documentation tool to the Sidekick Agent, such as Notion or a custom MCP server for your docs platform, it reads that too when your Plain knowledge doesn’t settle the answer. It strips customer details from everything it reads and never fetches arbitrary web pages. See Tools and integrations for what you can connect.
2
Draft
The Sidekick Agent writes a new standalone article, 200 to 300 words, followed by a Sources used list so you can check every claim. If the evidence is thin or contradictory, it asks you for the missing facts.
3
Save
The Sidekick Agent asks whether to save the draft. If you agree, it picks a Help Center (preferring a private or internal one) and an article group, shows you the proposed write, and waits for your approval. It saves the article as a Draft for you to review and publish. It always creates a new article and never edits an existing one.
4
Close
The Sidekick Agent offers to mark the gap’s task done. Say yes and the gap moves to Done.
- Refine the draft. Ask for a different tone, a shorter version, a code example, or a version for a different audience.
- Pull in more context. If you’ve connected integrations or custom MCP servers, ask the Sidekick Agent to check them: your internal docs, an engineering runbook, the source code, or product analytics. It folds what it finds into the draft.
- Save it outside Plain. If your docs live in Notion, Mintlify, ReadMe, or another connected tool, ask the Sidekick Agent to write the page there. The gap becomes a page in your real docs without leaving the session, and the Customer Agent indexes it through your knowledge sources on the next reindex. Writes to connected tools follow the usual approval rules.
- Reply to the customers who asked. Ask the Sidekick Agent to draft replies to the threads that raised the gap, now that the answer exists.
API, MCP, and webhooks
Everything on this page is available over the API:- Knowledge gaps API: list gaps sorted by thread count or recency, filter by status or when they were last seen, and read the task behind each one
- MCP server: find and fill gaps from Claude, ChatGPT, or Cursor
-
Tasks API: a task raised for a gap has a
sourceLinksentry withsourceType: "knowledge_gap", which points at the gap - Task webhooks: subscribe to task created, updated, and status transitioned events to react when the Customer Agent raises or your team closes a gap

