SEO Keyword Gap Briefs: The Right Eight Briefs, With Writers Who Have Room for Them
Queued keywords are checked against the gap policy with Semrush data and the published content database, allocated to writers within capacity, and re-run when difficulty, capacity or new pages change the picture. The SEO lead approves each step.
A keyword queue that goes stale between the analysis and the brief
The gap analysis leaves a queue in Google Sheets: keywords where competitors rank and the company does not. The gap policy decides which become briefs. A keyword needs enough search volume, a difficulty under the ceiling, an intent that matches a page the company would publish, and no existing page already targeting it. Each one that passes goes to a writer, inside the capacity the managing editor sets per writer.
The queue is only right on the day Semrush was read. Difficulty scores refresh and a keyword slips past the ceiling. A writer's month fills up and their allocation has to move. A page published last week in the Notion content database now targets a keyword still sitting in someone's queue, and a new article would end up competing with the company's own page.
Who works in the room
People
SEO lead
Owns the gap policy, approves keyword decisions and signs the cycle close-out
Managing editor
Sets writer capacity, approves allocations and keeps the allocation sheet
Writers
Take allocated keywords, work from the filed briefs and post capacity changes
Agents

AdaKeyword analyst
Pulls Semrush metrics, applies the gap policy and checks the content database for pages that already target a keyword

RyanAllocation and briefs
Allocates surviving keywords within capacity, re-allocates after changes and files the approved briefs in Notion

MycoSheet checker
Checks the editor's allocation sheet against the plan and picks up capacity changes from Slack
Google Sheets
Slack
The content team opens a Kylon room for each brief cycle. Ada is the default agent and owns the keyword decisions, so a question about why a keyword was dropped goes to Ada. Ryan allocates and files briefs, and Myco checks the editor's sheets against the plan and picks up the capacity changes writers post in Slack. Ada reads Semrush through a grant the SEO lead approved for the room. When Ada's decisions are approved, it hands the surviving keywords to Ryan in the thread, each with its metrics and the reason it passed, and Ryan leads from allocation onward.
From keyword queue to filed brief
Before any keyword is allocated, the room guidelines require a check of the content database for published pages. The gap policy and writer capacities sit in the cycle folder.
- Agent works
- Person decides
- Arrives or gets recorded
flowchart TD
queue([The gap analysis leaves a<br>keyword queue in Google Sheets])
disp["<b>Ada</b> checks each keyword in Semrush<br>and against published pages"]
ok1["<b>SEO lead</b> approves the list"]
alloc["<b>Ryan</b> allocates survivors to<br>writers inside their capacity"]
ok2["<b>Managing editor</b> approves"]
sheet["<b>Myco</b> checks the editor's allocation<br>sheet line by line"]
diff["<b>Ada</b> drops keywords past<br>the difficulty ceiling"]
move["<b>Ryan</b> moves a writer's surplus<br>to writers with room"]
page["<b>Ada</b> excludes keywords a<br>new page now targets"]
rebuild["<b>Ryan</b> re-allocates and rebuilds<br>the brief list"]
brief["<b>SEO lead</b> approves each brief<br>before it is filed"]
file["<b>Ryan</b> files the briefs in Notion<br>with a close-out note per writer"]
sign["<b>SEO lead</b> signs off the cycle"]
queue --> disp --> ok1 --> alloc --> ok2 --> sheet
sheet --> diff & move & page
diff & move & page --> rebuild
rebuild --> brief --> file --> sign
class disp,alloc,sheet,diff,move,page,rebuild,file agent
class ok1,ok2,brief,sign person
class queue event
classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42| Stage | What happens | Who acts | Who decides |
|---|---|---|---|
| Disposition | Each queued keyword is checked against volume, difficulty and intent from Semrush, and against published pages in Notion | Ada | The SEO lead approves the list |
| Allocation | Surviving keywords go to writers by topic fit, inside each writer's capacity | Ryan | The managing editor approves |
| Sheet review | The editor's allocation sheet is checked against the approved allocation, line by line | Myco | The managing editor corrects the sheet |
| Difficulty refresh | Updated scores re-run every allocated keyword, and any past the ceiling drops out | Ada, then Ryan to re-allocate | The SEO lead approves the drops |
| Capacity change | A writer's reduced capacity moves their surplus keywords to writers with room, in priority order | Ryan | The managing editor approves |
| New published pages | Keywords now covered by a page in the content database are excluded, and each writer's load is recounted | Ada, then Ryan | The SEO lead approves |
| Briefs and close-out | Eight briefs are filed in Notion and each writer gets a close-out note | Ryan | The SEO lead approves each brief before it is filed |
Capacity drops and pages go live
Changes arrive in no particular order, and each one can undo part of the last. When a writer's capacity drops from five briefs to two for the month, Ryan moves their three lowest-priority keywords to writers with room, and the allocation shows the new owner on each. When a page is published in the content database, Ada excludes every queued keyword it now targets, and Ryan recounts each writer's load before anything new is allocated.
The order matters because the cycle ends with a fixed number: eight briefs. After every change, Ryan rebuilds the brief list from the current allocation, not the original plan. A keyword that dropped on difficulty does not get a brief anyway, and no writer is left holding an assignment that no longer exists.
What the checks catch
- A keyword already targeted by a published page in the content database
- A keyword that passed last week but sits past the difficulty ceiling after the refresh
- A writer still holding keywords after their capacity dropped
- A ninth brief, filed for a keyword that has since been excluded
What stays with people
- Setting the gap policy and approving each keyword decision
- Setting writer capacity and approving every allocation
- Reviewing each brief before a writer starts on it
- Signing off the cycle close-out
Integrations in this workflow
Kylon is not an SEO suite or a content management system, and it does not replace either. It sits across Semrush, Notion and the team's sheets and holds the coordination from keyword to brief.
- Semrush supplies search volume, keyword difficulty and the competitors ranking for each term
- Notion holds the content database of published pages and receives each filed brief
- Google Sheets holds the keyword queue and the editor's allocation sheet
- Google Drive keeps the gap policy, the writer capacities and each change notice
- Slack is where writers post capacity changes and questions about a brief
Where to start
Choose one content area and one brief cycle. Connect Semrush and the Notion content database to the room. The rule for the room guidelines is short: no keyword is allocated until the content database has been checked for a page that already targets it.
“The cycle files eight briefs. Which eight can change four times before Friday.”
Set it up with your agent
Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.
Set up our SEO keyword gap brief desk in this Room. Take it one step at a time and wait for my OK before you move on. 1. Connect Semrush, Notion, Google Sheets, Google Drive and Slack. Tell me which ones still need connecting. 2. Ask me who works this desk: the SEO lead, the managing editor and the writers. Help me invite them to this Room. 3. Build a Brief Pipeline App with columns Queued, Allocated, Brief drafted and Filed, one record per keyword. Pull the current queue from Google Sheets. 4. Check each queued keyword against volume, difficulty and intent from Semrush, then check the Notion content database for any published page already targeting it. Flag every keyword that fails our checks and show me the ones to drop. 5. Allocate surviving keywords to writers by topic fit inside each writer's capacity from Google Drive. Draft each brief and file approved ones in Notion. Never allocate a keyword and never file a brief until the right person approves: the SEO lead approves keyword decisions and each brief before it is filed, and the managing editor approves every allocation and corrects the sheet. 6. Write the check order and who approves what into this Room's guideline so every brief cycle follows it. 7. After one clean cycle, offer to turn the capacity change checks and difficulty refresh into an Automation. Before you start, ask me for our rules one at a time.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allAd Creative Approvals: A Launch Board That Matches What Is Actually Live
The agency's launch sheet is audited against live Meta Ads campaigns and Instagram posts, every creative gets a status and a launch window on the Miro board, and holds, budget cuts and late approvals are absorbed mid-wave. The desk lead approves every board change.
Ad Delivery Make-Goods: Every Shortfall Settled as a Bonus Placement or a Credit
Insertion orders are reconciled against delivered impressions and contract terms in one Kylon room. Agents work Attio, the Notion delivery report and the Outlook contract threads, re-run bonus allocations when numbers change, and the ad operations lead approves every outcome.




