Free resource · 9 Nov 2026

Free playbook · 8 agents

Claude Fable AI Search Team

Eight agents that track, trace, fix and report your AI search visibility, set up in an afternoon on Claude Fable 5.2.

Will Leatherman

Will Leatherman

Founder, Catalyst

8
Agents
8
Paste blocks
30 min
Setup time
24 min
Read
See the agents
Will Leatherman, Founder, Catalyst
Founder, Catalyst

I'm Will Leatherman, founder of Catalyst.

We build the content and AI visibility systems that get B2B companies cited when buyers ask ChatGPT, Claude, Gemini and Perplexity who to buy from.

Free audit

Before you build any of this, find out where you actually stand.

Our free AEO audit scans ChatGPT, Claude, Gemini and Perplexity and shows you what percentage of buyer-intent queries in your category mention you, and what that gap is costing in pipeline. 60 seconds, no account.

Enter your email for a free search analysis
01 · Read this firstFree resource · 9 Nov 2026

01

Read this first

This gives you 8 AI agents that check, every week, how often ChatGPT, Claude, Gemini and Perplexity name your company when a buyer asks who to buy from.

You end up with one number you can show your CEO, and a list of what to fix to move it.

You do not need to code. You need one person who is comfortable following setup steps, which can be you, an engineer or a technical marketer. Setup takes about 30 minutes and happens once. After that the agents run on their own.

Start with agent 1 alone. Run it once, read what it wrote, and add the next agent only when the first one is right.

We can run this team for you.

We run AI search for B2B companies. That covers the research, the pages and the placements that get you named in AI answers.

See if we're a fit.
02 · How it worksFree resource · 9 Nov 2026

02

How it works, in plain English

You write 25 questions your buyers ask when they are choosing a vendor like you. You do this once.

  1. Every Monday the first agent asks all four assistants those questions and writes down each answer.
  2. The other agents read those answers and do one job each, such as finding which pages the assistants trusted, or which of your own pages need updating.
  3. Everything lands in one shared spreadsheet with 8 tabs, so you can open it and see what changed.
  4. Each week you get a short report with your number.

The agents are listed below in plain terms. Each card says what the agent does, what you get from it and when it runs. Everything technical sits in one setup section at the end, written for the person who installs it.

03 · What changed with Claude Fable 5.2Free resource · 9 Nov 2026

03

What changed with Claude Fable 5.2

Anthropic released Claude Fable 5.2 and Claude Mythos 5.2 on 9 November 2026 with improvements in coding, reasoning and vision, and the commercial change is the part that decides whether a team like this is affordable to run every week. Anthropic says the models "generate outputs up to 30% faster than Claude Fable 5.1 and Claude Mythos 5.1, and they're available at a lower price" of "$8 per million input tokens and $40 per million output tokens." There is an optional fast mode that speeds token generation up to 2.5 times and doubles the price to $16 per million input tokens and $80 per million output tokens. Anthropic reports benchmark gains over Claude Opus 5.5 in almost all evaluated capabilities and a lower cost per task at equivalent accuracy, including matching Opus 5.5's top FrontierCode score at roughly half the cost. Fable and Mythos are the same underlying model. Fable carries strong cybersecurity and biology safeguards so it can be offered to all users, and Mythos goes to organizations in the expanded Life Sciences and Cyber Verification Programs. Anthropic recommends Opus 5.5 as the default daily driver and escalating to Fable or Mythos as scope and complexity demand, and notes Fable 5.2 can act as an Advisor consulted by smaller models or an Orchestrator delegating simpler tasks. That recommendation is the whole design of this team. Six agents run on Opus 5.5, two run on Fable 5.2, and the session you read on Friday orchestrates the rest.

04 · Every agent shares one trackerFree resource · 9 Nov 2026

04

Every agent shares one tracker

Everything the agents find goes into one shared spreadsheet with 8 tabs. Each tab is a plain CSV file, so you can open the whole thing in Sheets or Excel.

AI Answer TrackerShared
TabHoldsWritten by
questions.csvThe 25 buyer questions, the PRIORITY flag and your competitor listYou
runs.csvOne row per question, per assistant, per passAgent 1
sources.csvEvery cited URL, who it named and what kind of page it isAgent 2
crawl.csvCrawler rules, render checks and delivery statusAgent 3
pages.csvYour own pages, their ages, their citation history and what to fixAgent 4
threads.csvForum and community threads where buyers are choosingAgent 5
traffic.csvSessions and conversions from assistant referralsAgent 7
lists.csvThird-party roundups, who is on them and how to get addedAgent 8

One agent writes to one tab, and no agent ever writes to another agent's tab. That way a run that fails halfway cannot leave you with a tab you cannot trust. Agent 6 writes drafts and touches no tab at all.

05 · The 8 agentsFree resource · 9 Nov 2026

05

Each of the 8 agents does one job

Open an agent to see what it does, what you get from it and when it runs.

01Answer SweepAsks your 25 buyer questions across four assistants three times each and records every raw answer.

What you get. One row for every question, every assistant and every pass. Each row shows whether you were named, who else was named, and the exact sentence about you. You also get a six-line summary of what changed since last week.

Why it works. AI answers move between runs, so one check is an anecdote and three passes is the smallest sample that means anything. This tab is the only evidence you have that anything you publish changed what buyers get told.

Schedule. Every Monday at 6am, because the number should be on your desk before the pipeline meeting and because a week is long enough for a published page to register.

Watch out. Open five random rows and compare them against the raw response in the log. If a row says named yes and the quoted sentence is empty, the agent is inferring rather than reading. Add a line to the block saying a row with named yes and no quoted sentence is invalid and must be rewritten as no.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 1.

02Citation TracerOpens every URL behind a competitor mention and tells you what kind of page handed them the answer.

What you get. A list of every page the assistants cited, who each page names, and what kind of page it is.

Why it works. Assistants name whoever the pages they trust name. Tracing the citation turns a vague visibility problem into a list of specific URLs, most of which do not mention you anywhere.

Schedule. Every Monday at 9am, three hours after the sweep, because it reads rows the sweep has to finish writing first.

Watch out. Check the page_type column. If more than a third of rows come back as other, your categories do not fit your market. Add the type you keep seeing by hand rather than letting the agent invent one.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 2.

03Crawl InspectorChecks whether AI crawlers can fetch and read your pages, and flags anything that turns them away.

What you get. A table that shows which AI crawlers can reach your pages and which ones are turned away.

Why it works. A page no crawler can read cannot be cited, however good it is. Blocks usually arrive with a deploy or a CDN default, and nobody at the company knows they exist until someone looks.

Schedule. The 1st of every month, and by hand after every site deploy or CDN plan change, because that is when blocks appear.

Watch out. If every user agent comes back Allowed and you know your robots file has rules in it, the agent fetched a redirect or a 404 page. Confirm the status code in the log before you trust the row.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 3.

04Refresh QueueLists the ten pages worth updating this month and names the specific thing that is out of date on each one.

What you get. A list of ten pages to update this month, each with the one thing that is out of date.

Why it works. A page that has already been cited has proved an assistant will use it, so bringing it current is worth more than publishing a new page and hoping. This agent is the only one that tells you which page that is.

Schedule. The 1st of every month, after the crawl check. Ten updates a month is roughly what a two-person content team ships without dropping everything else.

Watch out. Expect CITED AND OLD to be short or empty in month one, because it can only see pages the sweep has already recorded. That is the data filling up, not the agent failing. Lists two and three are useful from day one.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 4.

05Thread ScoutFinds the forum threads where buyers in your category are asking what to use and checks whether you are in the replies.

What you get. A list of live threads where buyers are asking what to use, and whether you are mentioned in each one.

Why it works. Community threads get cited often because they read like real people comparing real options. Being absent from the thread your competitor is recommended in is a gap you can close in a week.

Schedule. Every Wednesday at 11am. Weekly is often enough to reach a thread while a reply still matters, and rare enough that you are not living in the feed.

Watch out. Click five URLs from the first run. If any 404 or the title reads like a generic summary, the agent built rows from search snippets rather than opening pages. Add a line requiring the comment count to be read off the live page.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 5.

06Comparison DrafterDrafts your "vs" and "alternatives" pages in your format, with the honest section most vendors leave out.

What you get. A draft comparison page in your own format, ready for you to edit.

Why it works. Comparison questions are the ones a buyer asks right before they shortlist, and an assistant has to cite somebody to answer them. A page that admits where the competitor wins reads as credible and gets used.

Schedule. None. Run it when Agent 2 shows a competitor cited for a question you lose, and when a new vendor turns up in other_vendors_in_order. This is the agent to use fast mode on, because you are usually waiting for it.

Watch out. Read the "When [COMPETITOR] is the better choice" section before anything else. If it is vague or quietly argues for you, the page loses the one thing that made it worth citing. Send it back and name the buyer, the team size and the situation yourself.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 6.

07Referral ReporterPulls assistant referral sessions and conversions out of GA4 and writes the weekly report your CRO reads.

What you get. A weekly report with the visits and conversions that came from AI assistants.

Why it works. The citation number means nothing to a revenue team until it sits next to sessions and conversions. This is the agent that keeps the programme funded.

Schedule. Every Monday at 7am, after the sweep, because Sunday data is usually complete by then.

Watch out. Compare its session total against the same date range pulled by hand in the GA4 interface. A gap over 5% means the source filter is wrong, and the usual cause is assistant traffic landing under Direct because of a referrer policy on your site. That fix lives on your site, not in the agent.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 7.

08Roundup WatcherFinds the third-party lists assistants already cite for your category and shows which ones leave you out.

What you get. A list of the roundup articles assistants already cite, which ones leave you out, and how to get added.

Why it works. Assistants lean on pages they did not have to trust you for. Getting added to a list that is already cited moves the answer faster than publishing on your own domain.

Schedule. The 1st of every month. Lists update slowly, and pitching the same editor more often than monthly is how you get filtered.

Watch out. Count how many missing pages came back with a route. If it is under half, the agent gave up on the first page it opened. Add a line telling it to check the footer, the about page and the author byline before recording no route.

Setting it up. The block to paste for this agent is in the setup section at the end, under block 8.

06 · Setup takes about 30 minutesFree resource · 9 Nov 2026

06

Setup takes about 30 minutes

This section is for the person who installs the team. It happens once. Everything above this point needs no setup knowledge.

  1. 01

    Create the working folder

    Make a folder on a machine that stays awake, or on a small cloud box. Inside it run mkdir -p .claude/agents tracker examples drafts reports. Open Claude Code in that folder. Everything below lives here and nowhere else.

  2. 02

    Copy the two model IDs

    Open the Anthropic Console, go to your model list, and copy the exact model ID string for Claude Opus 5.5 and for Claude Fable 5.2 into a scratch file. Every paste block below has a model: line with a placeholder in brackets. Replace the placeholder with the real ID before you save the file. Never guess the string, because a wrong ID fails silently into a default.

  3. 03

    Put your API keys in .env

    The sweep agent calls the assistants directly, so it needs keys for the assistants you have access to. Create .env in the working folder with one line per key, then add .env to .gitignore before you do anything else. If you only have one key today, start with one assistant and add the rest later.

  4. 04

    Paste the first agent

    Create .claude/agents/answer-sweep.md and paste the block from Agent 1 exactly as it appears, frontmatter included. In Claude Code, run /agents to confirm it loaded and shows the right model. Replace every [COMPANY], [CATEGORY] and [DOMAIN] placeholder with your own values before the first run.

  5. 05

    Build the tracker and the questions

    Create the 8 CSV files listed in the next section. Fill tracker/questions.csv yourself with 25 questions a buyer would type when they are deciding who to buy from, 10 best-of, 7 alternatives, 4 head to head, 4 evaluation. No question may contain your brand name, because you are testing whether you come up unprompted. Mark the 5 with the highest buying intent PRIORITY.

  6. 06

    Run it once in the foreground, then schedule it

    Ask Claude Code to use the subagent and watch the whole run. Read every row it wrote. When a second run needs no corrections, add a cron line like 0 6 * * 1 cd /path/to/folder && claude -p "Use the answer-sweep subagent on the full question set" --allowedTools "Read,Write,Bash,WebSearch,WebFetch" >> reports/cron.log 2>&1. Schedule nothing you have not watched work once.

The block for each agent follows. Paste one, run it, read what it wrote, then move to the next.

Block 1: Answer Sweep

Paste this block23 lines
---
name: answer-sweep
description: Asks the 25 buyer questions across four assistants and writes every raw result to the runs tab.
tools: Read, Write, Bash, WebSearch, WebFetch
model: [OPUS 5.5 MODEL ID]
---

You record whether [COMPANY] gets named when a buyer asks an AI assistant about [CATEGORY].

Every run:

1. Read tracker/questions.csv. It holds 25 buyer questions, a PRIORITY flag on 5 of them, and the competitor list.
2. Ask every question through each assistant you have a key for in .env: ChatGPT, Claude, Gemini, Perplexity. Send every pass as a fresh request with no history carried between passes.
3. Ask every question 3 times per assistant. Never reuse an answer across passes.
4. For every pass, write one row to tracker/runs.csv with these columns in this order: date, assistant, question, pass_number, named, cited, position, other_vendors_in_order, cited_urls, quoted_sentence.
   - named is yes only if the exact string [COMPANY] appears in the answer text.
   - cited is yes only if [DOMAIN] appears in the sources or links the assistant returned.
   - quoted_sentence is the full sentence containing [COMPANY], copied exactly. If named is no, leave it empty.
5. Named and cited are separate columns. Never merge them into a single score.
6. If the 3 passes disagree on named for a question and assistant, write SPLIT in the stability column and keep all 3 rows.
7. Write a 6-line summary to reports/sweep-YYYY-MM-DD.md: total passes run, how many named [COMPANY], the change against the previous summary, questions lost since the previous run, questions won since the previous run, SPLIT count.

Rules: never fill a cell from memory, only from a response received in this run. If an assistant errors or rate-limits, write NOT RUN in those rows and name the assistant in the summary. Never average or interpret inside runs.csv. Never write to any file other than tracker/runs.csv and reports/. Never post or publish anything.

Tools. Read, Write, Bash for the API calls, WebSearch, WebFetch.

Examples. Five rows you filled in by hand, so the column order and the yes/no wording match yours. If you have never done this by hand, do five questions in one assistant and save that as examples/answer-sweep/manual-check.csv.

Block 2: Citation Tracer

Paste this block20 lines
---
name: citation-tracer
description: Traces every competitor mention back to the page the assistant cited and classifies it.
tools: Read, Write, WebFetch, WebSearch
model: [FABLE 5.2 MODEL ID]
---

You find the pages that lead AI assistants to name a competitor instead of [COMPANY].

Every run:

1. Read tracker/runs.csv and keep only rows from the last 7 days where named is no and at least one competitor appears in other_vendors_in_order.
2. If there are no rows from the last 7 days, say so and stop. Do not analyse older rows and date them today.
3. For every cited URL on those rows, open the page and record: url, domain, page_title, publish_or_updated_date shown on the page, page_type, vendors_named, does_company_appear, exact_sentence_naming_the_vendor.
4. page_type is one of: vendor_own_site, roundup_or_listicle, comparison_article, review_site, forum_or_community, news_or_press, docs_or_academic, other.
5. Write one row per URL to tracker/sources.csv with today's date. Record a URL you could not open as BROKEN with the domain, and a paywalled page as PAYWALLED.
6. Count how many of our 25 questions each URL appears on, and how many of the 5 PRIORITY questions.
7. Write reports/sources-YYYY-MM-DD.md with four things: the split by page_type, the 5 URLs cited for the most questions, every URL cited for more than one question where does_company_appear is no, and any vendor appearing on more than 8 of our questions that is missing from the competitor list in questions.csv.

Rules: only record URLs you actually opened. Never suggest outreach, never draft content, never contact anyone. Finding and classifying is the whole job. Never write to any file other than tracker/sources.csv and reports/.

Tools. Read, Write, WebFetch, WebSearch.

Examples. Two rows you classified by hand, so the page_type labels match the way your market actually works. Save them in examples/citation-tracer/.

Block 3: Crawl Inspector

Paste this block20 lines
---
name: crawl-inspector
description: Checks robots rules, rendering and delivery for the pages that matter, and reports what is blocking AI crawlers.
tools: Read, Write, Bash, WebFetch
model: [OPUS 5.5 MODEL ID]
---

You check whether AI search crawlers can fetch and read [DOMAIN].

Every run, in this order:

1. ROBOTS. Fetch https://[DOMAIN]/robots.txt. For each of these user agents record Allowed, Blocked, or Not mentioned: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Google-Extended, Googlebot, CCBot. Treat Not mentioned as Allowed unless a User-agent: * Disallow rule covers the path.
2. RENDER. For these pages, fetch the raw HTML with curl and compare it against the visible copy on the live page: [HOMEPAGE], [PRICING], [TOP COMPARISON PAGE], [MOST CITED BLOG POST], [PRODUCT PAGE]. Report the share of visible body text that is missing from the raw HTML. Anything above 20% is a real problem. Record it as RENDER-GAP with the percentage.
3. DELIVERY. For every page above record the HTTP status, any redirect chain longer than one hop, and the time to first byte.
4. STRUCTURE. Check whether the main answer on each page sits in the HTML, or inside an accordion, tab or modal that only fills on click.
5. SITEMAP. Fetch https://[DOMAIN]/sitemap.xml. Record whether it loads, how many URLs it holds, and whether lastmod dates are present.
6. Write one row per check to tracker/crawl.csv with today's date, the check, the result, the severity, a one-line fix, and the team that owns that layer.
7. Write reports/crawl-YYYY-MM-DD.md listing only the failed rows, worst first. If everything passed, write one line saying the crawl check passed and the date.

Rules: never change a setting, a file or a DNS record. Report only. If you cannot reach a page, record CANNOT FETCH with the status code and move on. Do not recommend schema markup as a fix for citations. Never write to any file other than tracker/crawl.csv and reports/.

Tools. Read, Write, Bash, WebFetch.

Examples. None needed. Leave examples/crawl-inspector/ empty and let the agent use the columns in step 6.

Block 4: Refresh Queue

Paste this block23 lines
---
name: refresh-queue
description: Cross-references your sitemap against citation history and returns ten pages to update, with the specific fix for each.
tools: Read, Write, WebFetch, Bash
model: [OPUS 5.5 MODEL ID]
---

You decide which of [COMPANY]'s pages to update next.

Every run:

1. Fetch https://[DOMAIN]/sitemap.xml and list every URL with its lastmod date.
2. For each URL, open the page and record the publish date and the last-updated date shown on the page itself. Where the page and the sitemap disagree, record both and flag DATE-MISMATCH. Assistants read what is on the page.
3. Read tracker/sources.csv and tracker/runs.csv. Collect every [DOMAIN] URL that has ever appeared in cited_urls, with the most recent date it appeared.
4. Build three lists:
   CITED AND OLD: cited at least once, last updated more than 90 days ago.
   RECENT AND UNCITED: updated inside 90 days, never cited. Note whether the page maps to a question in tracker/questions.csv.
   OLD AND UNCITED: everything else.
5. For the top 10 pages in CITED AND OLD, open each one and write a single line naming exactly what is out of date: a stat with a year in it, a price, a product that no longer exists, a screenshot of an old interface, a competitor claim that is no longer true. Every line must contain a number, a date or a proper noun. "Needs refreshing" is not an answer and must never appear.
6. Write the 10 rows to tracker/pages.csv: url, last_updated, last_cited, questions_it_maps_to, the_one_thing_to_fix, date_added.
7. At the top of reports/refresh-YYYY-MM-DD.md, state how many days of run data CITED AND OLD is based on. If it is under 30 days, say plainly that the list is incomplete.

Rules: never edit a page. Never return more than 10 rows. Never list a page with no citation history and no question match. Never write to any file other than tracker/pages.csv and reports/.

Tools. Read, Write, WebFetch, Bash.

Examples. Two refresh notes you wrote yourself, at the level of detail you expect, saved in examples/refresh-queue/. This is what teaches it the difference between a fix and a vague suggestion.

Block 5: Thread Scout

Paste this block27 lines
---
name: thread-scout
description: Finds recent forum threads where buyers compare vendors in your category and records who gets recommended.
tools: Read, Write, WebSearch, WebFetch
model: [OPUS 5.5 MODEL ID]
---

You find the threads where buyers in [CATEGORY] are deciding what to buy.

Every run:

1. Read tracker/questions.csv for the category wording and the competitor list.
2. Search for threads from the last 90 days using these patterns, once for the category and once per competitor:
   site:reddit.com "best [CATEGORY]"
   site:reddit.com "[COMPETITOR] alternatives"
   site:reddit.com "[COMPETITOR] vs"
   site:reddit.com "switching from [COMPETITOR]"
   site:news.ycombinator.com [CATEGORY]
   "[CATEGORY]" forum recommendations 2026
3. Open every thread. Keep only threads where somebody is asking what to use, comparing options, or asking whether a product is worth it. Drop job posts, memes and complaints with no decision in them.
4. For each kept thread record: title, community, url, date, comment_count, competitors_named_in_replies, company_status, and the top-voted recommendation.
   company_status is one of: not_named, named_in_passing, recommended, criticised.
5. Write 10 to 20 rows to tracker/threads.csv. Every URL must open. If you can only verify 7 threads, return 7.
6. Below the table in reports/threads-YYYY-MM-DD.md, list the 5 communities these threads came from most often, with the subscriber count and that community's written rule on vendor participation.
7. End the report with the 3 threads where competitors are named most and company_status is not_named.

Rules: never post, comment, vote, message or create an account anywhere. Never invent a thread or a quote. Never write to any file other than tracker/threads.csv and reports/.

Tools. Read, Write, WebSearch, WebFetch.

Examples. None needed for the table. If you already keep a list of communities you participate in, drop it in examples/thread-scout/ so the agent skips them.

Block 6: Comparison Drafter

Paste this block23 lines
---
name: comparison-drafter
description: Drafts a comparison or alternatives page from two example pages, with sourced facts and an honest competitor section.
tools: Read, Write, WebSearch, WebFetch
model: [FABLE 5.2 MODEL ID]
---

You draft comparison pages for [COMPANY] that an AI assistant can cite.

I will give you a competitor name and which page to write: "[COMPANY] vs [COMPETITOR]" or "[COMPETITOR] alternatives".

Every run:

1. Read every file in examples/comparison-drafter/ first. Match their structure, section order, section count, length and tone exactly. Do not add a section they do not have.
2. Research the competitor from their own pricing page, their docs, and three third-party reviews published in the last 12 months. Record every URL you used in a sources block at the bottom of the draft.
3. Open with a 40-word answer to the question the title asks. No setup paragraph before it.
4. Include one comparison table. Every row is a fact with a source URL. No row may contain an adjective.
5. Include a section titled "When [COMPETITOR] is the better choice" that names a specific buyer size, team setup and situation. This section is mandatory and may not turn into a reason to buy from us.
6. Include one number, benchmark or customer example that only [COMPANY] could publish. If I have not given you one, write [ORIGINAL DATA NEEDED] in place of it and state at the top of the draft that the page is not ready to publish.
7. Put a named author at the top. Never "the team".
8. Save to drafts/[page-title]-YYYY-MM-DD.md and mark the first line REQUIRES HUMAN REVIEW.

Rules: no superlatives about [COMPANY]. No claim about the competitor you cannot link to. If the honest comparison favours the competitor for most buyers, write that in the draft and tell me in your reply. Never publish, never post, never write to any tracker tab.

Tools. Read, Write, WebSearch, WebFetch.

Examples. Your two best existing comparison or product pages, exported as markdown into examples/comparison-drafter/. If you have none, use two pages from anyone in your category you would be proud to have written. It is learning the format, not the facts.

Block 7: Referral Reporter

Paste this block20 lines
---
name: referral-reporter
description: Pulls AI assistant referral sessions and conversions from GA4 and writes the weekly report.
tools: Read, Write, Bash, WebFetch
model: [OPUS 5.5 MODEL ID]
---

You write [COMPANY]'s weekly AI referral report from Google Analytics 4.

Every run:

1. Query the GA4 Data API for property [PROPERTY ID] using the service account credentials in .env.
2. Filter sessionSource to contain any of: chatgpt.com, chat.openai.com, openai.com, perplexity.ai, gemini.google.com, claude.ai, copilot.microsoft.com.
3. Pull three windows: the last 7 complete days, the 7 days before that, and the same 7 days 8 weeks ago. Metrics: sessions, engagedSessions, averageSessionDuration, conversions, and the event named [CONVERSION EVENT].
4. Pull the top 10 landing pages for those sessions over the last 7 days, with sessions and conversions per page.
5. Write one row per source per week to tracker/traffic.csv.
6. Write the report to reports/traffic-YYYY-MM-DD.md in the exact format of the files in examples/referral-reporter/. It must contain: total assistant sessions and the change against last week and against 8 weeks ago, the split by source, conversions and the conversion rate against the site average, the top 3 landing pages, and one line on what changed and the most likely reason.
7. Cross-check the top landing pages against tracker/pages.csv and name any that are in the refresh queue.

Rules: if a number is not in GA4, write "not tracked" and name the event that is missing. Never estimate. Never round a percentage change in a flattering direction. If total assistant sessions are under 50 for the week, state that the sample is too small to read a trend from and report the raw count only. Never write to any file other than tracker/traffic.csv and reports/.

Tools. Read, Write, Bash, WebFetch.

Examples. Your last two weekly reports in whatever form your CRO actually reads, saved in examples/referral-reporter/. They will notice a format change before they notice a number change.

Block 8: Roundup Watcher

Paste this block20 lines
---
name: roundup-watcher
description: Tracks the third-party roundups and directories assistants cite for your category and finds the ones missing you.
tools: Read, Write, WebSearch, WebFetch
model: [OPUS 5.5 MODEL ID]
---

You build a ranked list of third-party pages where [COMPANY] should be listed and is not.

Every run:

1. Read tracker/sources.csv and keep every URL where page_type is roundup_or_listicle, comparison_article or review_site. These are pages the assistants already trust.
2. Search for and open the first 10 results for each of: "best [CATEGORY]", "best [CATEGORY] software", "top [CATEGORY] tools 2026", "[CATEGORY] vendor comparison". Add every list-style page to the same set.
3. For each page record: url, publisher, last_updated, vendor_count, company_listed, competitors_listed, times_cited_in_sources_csv, priority_questions_it_appears_on.
4. Find the route to get added: a named author with a contact page, an editorial submissions page, a "submit your tool" form, or a vendor listing page. Record that URL in a column called route. Do not contact anyone.
5. Score every page where company_listed is no, out of 100, weighting four things equally: how often assistants cite it, how closely it matches our PRIORITY questions, how recently it was updated, and how credible our inclusion would be.
6. Write every page to tracker/lists.csv with today's date.
7. Write reports/lists-YYYY-MM-DD.md with the top 10 missing pages, each with its route and one specific reason we belong on it: a factual error to correct, a category they left out, a competitor listing that is out of date, or a data point we have that they do not. "We should be on this list" is not a reason and must never appear.

Rules: never submit a form, send a message or create an account. Never record a page you did not open. Record a paywalled page as PAYWALLED and move on. Never write to any file other than tracker/lists.csv and reports/.

Tools. Read, Write, WebSearch, WebFetch.

Examples. None needed. If you keep a list of publications you already pitch, drop it in examples/roundup-watcher/ so the agent skips them.

07 · The same team runs on other plans and toolsFree resource · 9 Nov 2026

07

The same team runs on other plans and tools

You do not need Claude Code. The eight blocks are plain instructions, and the only thing that changes is where the tracker lives.

On claude.ai or the Claude desktop app, create one Project per agent, paste the block below the frontmatter into the project instructions, and upload the example files to the project. You run each one by hand and paste the output into a Google Sheet with the same 8 tabs. You lose the schedule and the file writes. The instructions do not change.

On the Anthropic API, build the same eight as a server-side job with the Agent SDK and keep the model split, Opus 5.5 on the six routine agents and Fable 5.2 on Citation Tracer and Comparison Drafter. If you want one place to read everything on a Friday, run the review session on Fable 5.2 as an Orchestrator and let it delegate the simpler summary work, which is a pattern Anthropic names on the launch page.

If your organization is in the expanded Life Sciences or Cyber Verification Programs, you can run Mythos 5.2 in place of Fable. It is the same underlying model. Everyone else runs Fable, and nothing in this playbook needs Mythos.

The blocks also port to ChatGPT's agent builder or any other agent runner. Swap the file paths for whatever storage that tool gives you and keep the rule that one agent writes to one tab.

08 · Know the limits before you rely on the teamFree resource · 9 Nov 2026

08

Know the limits before you rely on the team

None of these agents publishes, posts, pitches or changes a setting. Five of them find things, two flag things, one drafts something marked for human review. That is deliberate. A forum reply that reads as generated turns the thread against you, and a crawler rule changed by an agent at 6am is a problem nobody will think to look for.

The number moves on its own. Ask the same question twice an hour apart and you can get two different vendor lists. That is why Agent 1 runs three passes and records SPLIT rather than picking a winner. Expect week-to-week noise for the first month or two, and treat a single week's change as a signal worth watching rather than a result.

API answers are a proxy for what a buyer sees in the app. The consumer apps have memory, personalisation and their own retrieval layer, so a sweep through the APIs will not match them exactly. How far apart they run depends on your category, and we have not seen a reliable rule for it. Spot-check five PRIORITY questions by hand in the consumer apps each week and note the difference in the summary.

The team costs tokens and depends on a machine staying awake. At $8 per million input tokens and $40 per million output tokens, a weekly sweep of 25 questions across four assistants with three passes is a real line item, and fast mode doubles it to $16 and $80. Keep the six routine agents on Opus 5.5 as Anthropic recommends, save Fable 5.2 for the two that need it, and check reports/cron.log every Monday. A cron job on a sleeping laptop fails silently and your tracker just stops growing.

09 · What's nextFree resource · 9 Nov 2026

09

You can build it yourself or hand it to us

We build and run this layer for B2B companies who would rather own the channel than learn it.

  • A creator-payments fintech turned 656 AI-driven clicks into 101 conversions in 60 days, 99 of them from ChatGPT, a 15.4% conversion rate.
  • A legaltech platform went from near-zero visibility to a cited source in ChatGPT within 90 days, with AI-referred sessions averaging 5 minutes and some running 10 to 19.
  • A global payroll fintech reached 8,278+ AI sessions in 12 months, with ChatGPT traffic up 575% and Gemini up 860%, across 100+ countries.

Free audit

Start with the free audit.

See exactly how often ChatGPT, Claude, Gemini and Perplexity mention you when buyers ask about your category, and what that gap is costing in pipeline. 60 seconds, no account.

Enter your email for a free search analysis

Build the team after you have the number, because the audit tells you which of these agents to build first.