# A knowledge base gap board for your support tickets

> See which questions your customers keep asking that no help article covers yet, then have an agent draft and publish the missing one.

- Workflow type: app
- Services: HappyFox, Notion, Slack Bot
- Categories: Customer Support, Product
- Published: 2026-08-24

## What it does

- Groups your recent support tickets into recurring themes and shows each one with its ticket volume and average time to resolve
- Checks your Notion knowledge base for a matching article, so every theme is marked as already covered or still uncovered
- Ranks themes by total time spent, volume multiplied by average handle time, so the biggest time sinks sit at the top
- Gives every uncovered theme a Draft the article button that writes a customer facing help article from your best resolved tickets, publishes it to Notion, tags the source tickets as covered, and announces it in Slack

## What you'll need

- A HappyFox help desk account with API access turned on
- A Notion workspace, with the page or database that holds your help articles shared with the connection
- A Slack workspace and a channel where new articles should be announced
- A rough idea of which ticket statuses count as resolved in your help desk

## Prompt

Build me a knowledge base gap board for our support leads, using HappyFox for tickets, Notion for our knowledge base, and Slack Bot for announcements. It is a weekly review surface: I open it to see which questions our customers keep asking that we have never written up, and I take action on the biggest ones from the same screen.

The main view is a board of recurring ticket themes from the last thirty or ninety days, with a toggle between those two windows. Each theme row shows the theme name, a one line description of the question behind it, ticket volume, average time to resolve, and a coverage badge that is either Covered, with a link through to the matching Notion article, or Uncovered. Sort the board by volume multiplied by average time to resolve, descending, so the biggest time sinks are at the top, and show that ranking figure as a Total time spent column so leads can see why a theme ranks where it does. Show the timestamp of the last rebuild at the top of the board.

Important: the board renders from themes saved in app storage. It must never recompute themes when someone opens it. A viewer loading the board should read stored data only.

A Rebuild themes button starts a background agent that recomputes the board. That agent reads recent tickets with HappyFox List Tickets, scoped to the selected window with a date range plus a status filter, and pulls detail on individual tickets with Get Ticket. It then groups the tickets into themes by the underlying question being asked, names each theme in plain language, and computes volume and average time to resolve per theme. For each theme it calls Notion Search by Title to look for an existing article on that topic, and records whether a match was found along with the page URL. Finally it saves the full set of themes into app storage: theme name, description, member ticket ids, volume, average time to resolve, the ranking figure, coverage status, and the Notion URL when covered. Grouping tickets into themes has to be agent judgement rather than a handler loop, because the help desk has no clustering endpoint.

Keep the rebuild inside a bounded sample rather than trying to read the whole ticket history. List Tickets pages at a maximum size of fifty, and the help desk enforces a global cap of five hundred GET requests per minute, so the agent should walk a limited number of pages for the chosen window and status filter and stop there. Show rebuild progress and the finished or failed state on the board while it runs.

Clicking a theme opens a detail view listing the tickets behind it, each with subject, requester, status, time to resolve, and a link out to the ticket in HappyFox. Call out the best resolved examples in that theme separately, the ones with clean, complete resolutions, since those are the raw material for an article.

Every uncovered theme gets a Draft the article button that starts a second background agent. It reads the top resolved tickets in that theme with Get Ticket, writes a customer facing help article based on how the team actually resolved the issue, and publishes it with Notion Create a Page under our knowledge base parent, followed by Append Block Children for the article body. It then tags every source ticket behind the theme with HappyFox Update Ticket Tags using a coverage tag so we know the question is documented, and announces the new article in our support Slack channel with Slack Bot Send a Message, including the theme name, the ticket volume it came from, and a link to the Notion page. When it finishes, update the stored theme to Covered with the new page URL so the board reflects it without a full rebuild.

Two things the article agent must respect. Ticket attachment URLs expire five minutes after they are generated, so it should quote relevant text from the ticket rather than linking to attachments. And the article is customer facing, so it should carry the resolution steps without customer names, internal notes, or agent side commentary.

Keep published articles visible on the board rather than hiding them once covered. A lead should be able to see the covered themes, click through to the Notion page, and confirm the write up still matches what customers are asking. Add a small settings area for the Notion parent page, the Slack channel, the coverage tag name, the resolved status filter, and the default window.

## How to customize

- Switch the board between a thirty day and ninety day window, and change which ticket statuses get sampled
- Change the tag written back onto covered tickets, and the Slack channel where new articles are announced
- Point articles at a different Notion parent page, and adjust the tone and structure of the drafts

## FAQ

### Do I still have to write the help articles myself?

No. For any theme with no matching article, the Draft the article button starts a background agent that reads your best resolved tickets on that topic and writes a customer facing article from how your team actually solved it. It publishes straight into your Notion knowledge base, so your job is reviewing and polishing rather than starting from a blank page.

### Will this change anything in my help desk?

The only change it makes is adding a tag to the tickets behind a theme once an article has been published, so you can tell at a glance which questions are now documented. It never replies to customers, closes tickets, or edits ticket content.

### How far back does the board look?

You choose thirty or ninety days. The board samples a bounded window of tickets rather than reading your entire history, which keeps rebuilds fast and stays well inside the help desk request limits.

### Does it work with a knowledge base I already have in Notion?

Yes, and that is the point. It searches your existing Notion articles by title to decide whether a theme is already covered, so themes you have written up drop out of the gap list and stay on the board with a link through to the page.

### Does the board refresh by itself every time I open it?

No. Themes are saved inside the app after each rebuild, so opening the board is instant and does not re-read your help desk. You press Rebuild themes when you want fresh numbers, typically before a weekly review.

Use this prompt in General Input: https://www.generalinput.com/prompts/a-knowledge-base-gap-board-for-your-support-tickets