# CiteAI - citation-first publisher research

Build a research agent that starts with a product website, finds relevant source
evidence, checks publisher availability and returns an article-placement shortlist.
This is a setup runbook, not an imported or already running agent.

## Inputs and scope

Ask for the product website if it is missing. Confirm the market and language,
research budget, available connections and models, and intended report destination.
Use the user's own accounts. Start with 10 research prompts and at most 20 unique
candidate domains. Expanding to a 100-200 prompt study requires an explicit budget
and call limit. Do not purchase placements, contact publishers or schedule runs.

Read the website and describe the product, audience, use cases and competitors.
Build a prompt map covering core needs, vertical use cases, adjacent jobs,
comparisons, audience and conversational questions. Keep prompt IDs stable.

## Discover tools before running

Use the current FlyMyAI tool catalog and exact schemas to confirm these actions:

- Tavily website extraction and search for public evidence.
- DataForSEO Google organic SERP with AI Overview references when available,
  plus bulk rank and spam metrics.
- Collaborator account capabilities and exact-domain publisher catalog search.
- Available OpenAI, Anthropic and Google models for an optional controlled
  source-selection comparison.
- Workspace files for the report and CSV. Publishing requires the user's chosen
  destination and explicit permission.

Confirm that the Collaborator connection has publisher-catalog access. An absent
connection or unsupported action is a reported limitation, not permission to
create a connector, change accounts or substitute fabricated results.

## Keep three evidence types separate

1. **Google AI Overview references:** URLs actually returned as references for
   each prompt, with market, language, device and observation time.
2. **Organic search results:** returned URLs and positions. These are discovery
   evidence, not proof that an AI answer cited the website.
3. **Controlled model source selections:** optionally give each selected model
   the same compact, numbered search results and ask which sources it would use.
   Record model/version, prompt, input evidence, selected URLs and timestamp.
   These selections do not measure the consumer ChatGPT, Claude or Gemini
   products' live retrieval or citations, and do not certify trustworthiness.

Collect one SERP and one shared search result set per research prompt, with at
most 10 organic results and 8 shared search results. Keep missing AI Overviews,
failed requests and incomplete coverage visible. Never count them as zero
citations. Retain the exact cited URL as well as the normalized domain; do not
merge a hosted subdomain into a publisher listing without checking ownership.

For the optional model comparison, use at most three user-selected available
models. Share the same bounded evidence instead of letting each model repeat
the searches. Count distinct prompts selecting each domain and show coverage.
Do not infer an execution model, a child-agent allowance or a spending limit
from this document. Use the platform's current configured limits.

## Check publication opportunities

Deduplicate the candidate domains before querying Collaborator. Retrieve at most
one page of 20 listings per candidate and keep exact verified domain matches.
Record the publisher URL, placement format, quoted amount and currency, whether
writing is included, link attributes and observation date. Missing price data
is unavailable, not free. Do not buy, reserve or negotiate a placement.

Enrich only the bounded matched set with returned DataForSEO metrics. Keep the
provider and timestamp beside each value. Collaborator's DR and DataForSEO rank
are different metrics and must not be relabeled as one another. Preserve traffic,
spam and referring-domain values only when the chosen tool actually returns them.

## Inspect crawler access

Read public robots.txt for each candidate using a standards-aware parser. Preserve
the exact user agent, applicable rule, URL, status and observation time. Separate
search indexing, training and user-requested fetch policies; do not treat every
AI-related user-agent rule as the same access decision. Check current provider
documentation before interpreting a crawler's purpose.

Use at most two bounded HTTP requests per domain, including any approved hostname
fallback. Use a 10-second timeout and a 1 MiB response cap. A 403, timeout, malformed
file or inaccessible host means unknown. Do not bypass authentication or blocks.
A permitted rule does not prove indexing, retrieval or citation. Apply only the
user's stated exclusion policy and show the exact reason for every exclusion.

## Rank and suggest article types

Return at most 10 recommendations from the matched candidate set. Show separate
columns for observed AI Overview references, organic positions and controlled
model selections. Keep unavailable measurements distinct from zero.

Explain ranking using topical relevance, evidence coverage, placement price,
named authority and spam metrics, editorial fit and crawler observations. If
using a numerical score, publish its weights and normalization and label it a
research heuristic. Never describe it as an assistant ranking or citation forecast.

Suggest an article type and angle for each candidate: a relevant comparison,
practical how-to, documented case study or first-hand review. Link the existing
page or prompt evidence that makes the angle relevant. Review publisher policies,
sponsorship disclosure and link attributes before any separate purchase decision.

## Deliver the report

Prepare a compact report and CSV with these fields:

`domain, evidence_type, prompt_id, evidence_url, observed_at, market, model,
selection_count, coverage, placement, price, currency, writing_included,
metric_name, metric_provider, metric_value, crawler_observation,
recommendation, article_angle, limitations`

Mark example data as illustrative. Keep the full prompt-to-source evidence in
bounded workspace files; return file links instead of embedding large datasets.
Target a report below 64 KiB and a CSV below 256 KiB for the initial scope. Keep
the draft in the user's workspace unless they authorized a publishing destination.
Verify a publication through its actual receipt and accessible content before
claiming it is live. A denied or uncertain publication is not permission to
upload the report to a different public host.

## Resource and retry limits

- The default study uses up to 10 SERP reads, 10 shared searches, 20 publisher
  lookups, two bulk metric calls if supported, 40 crawler HTTP reads and three
  optional model calls. Tool schemas or provider batch limits may require a
  smaller scope. Requote costs before expanding it.
- Process at most 20 domains at a time. Cap each downloaded response at 1 MiB
  and the compact shared model evidence at 32 KiB. Keep at most two network reads
  active and release each raw response after extracting the needed fields.
- Tool/provider charges, model tokens, storage and runtime follow current rates;
  the template adds no purchase fee. Publisher placements are separate purchases.
  Stop before exceeding the user's budget; a free brief does not mean a free run.
- A documented transient pure read may be retried once within the call budget.
  Record the exact failure. Reserve stable operation keys before effectful calls.
  An UNKNOWN outcome, timeout after dispatch or lost response must be reconciled
  with its original receipt. Never create a replacement key to bypass that state.
- Do not infer that an entire tool call had no effect from a database deadlock
  or a failed sub-operation. No automatic retry of uncertain writes or paid runs.
- Finish with the report location, successful and failed coverage, actual usage,
  missing data and next steps. No guaranteed AI citations or placement outcomes.
