The FSA Framework is a practitioner-created diagnostic for investigating AI search visibility through three lenses: Freshness, Structure, and Authority. It is not a documented ranking formula from Google, OpenAI, Perplexity, Gemini, or HubSpot. Use it to decide what to examine next, then measure specific prompts and results.
A useful diagnosis separates vendor-documented technical conditions from editorial recommendations, hypotheses, and individual case studies. Google documents query fan-out and supporting links in its AI features, but does not publish an FSA scoring formula. Its guidance says there are no additional technical requirements or special AI markup for AI Overviews and AI Mode beyond ordinary Search eligibility. Google’s AI features documentation is therefore evidence about Google’s stated requirements, not proof that every engine works the same way.
If a product guide still names a retired plan, verify the facts before blaming its layout or limited brand mentions for an absent citation. FSA works best as an investigation sequence, not as an explanation of an engine’s internal weights.
Use FSA to choose what to investigate next, then test the intervention against a fixed prompt cohort.
What the FSA Framework can and cannot tell you
Freshness, Structure, and Authority are useful editorial categories, not verified universal ranking signals. Public vendor guidance supports related practices such as making pages accessible, publishing useful content, and ensuring structured data matches visible content. It does not say that these categories form a complete or weighted citation model.
Use this evidence ladder when recording a diagnosis:
- Documented technical conditions: a vendor describes access, eligibility, controls, or visible citation behavior. Google describes ordinary Search eligibility for its AI features. OpenAI says allowing OAI-SearchBot can improve eligibility for ChatGPT Search. Access does not guarantee a citation.
- Vendor editorial guidance: recommendations such as publishing useful, people-first content. Google’s guidance on succeeding in AI search supports useful content and continuing Search fundamentals, not a particular refresh schedule.
- Practitioner recommendations: ideas such as placing a definition near the relevant section or reviewing brand information across channels. Assess these as editorial options, not requirements.
- Hypotheses and case observations: an observed visibility change after an edit can inform a test. It cannot, by itself, prove that the edit caused the change.
The framework was presented by HubSpot author Cassie Wilson Clark as a practitioner diagnostic. The original FSA article is useful context for its origin and recommendations, not confirmation of a vendor algorithm.
Define visibility before measuring it
Do not combine a brand mention with a citation or recommendation. For every answer, record these observations separately:
- Mentioned: the brand appears in the answer text.
- Recommended: the answer advises the reader to consider or choose the brand.
- Brand cited: at least one displayed citation is associated with the brand.
- Brand page cited: a displayed citation points to a specific page on the brand’s domain.
Prompt presence rate is eligible runs with a brand mention divided by all eligible runs in the defined cohort. Citation presence rate is eligible runs with at least one brand-associated citation divided by eligible runs. A citation-count share can be useful only within a fixed prompt cohort, engine, surface, and reporting period. Always show raw counts and denominators beside percentages.
Keep surfaces separate. A Google AI Overview is not Google AI Mode, and a ChatGPT Search response is not a non-search ChatGPT response. Google says its AI features can use different models and techniques. ChatGPT Search can show citations for source inspection, while OpenAI warns that search results and citations may be incomplete, outdated, or incorrect. See OpenAI’s ChatGPT Search guidance.
Google has announced generative AI visibility reporting in Search Console. Check whether it is available for the property and account you are reporting on before relying on it. Google’s announcement describes the rollout, while the current Search Console interface determines what a particular account can use.
Build a prompt-level baseline you can reproduce
Create versioned prompt groups for discovery, comparison, implementation, troubleshooting, pricing, and brand-specific questions. Keep unrelated intents separate. For example, “Which project management tool suits a 20-person agency that needs client approvals?” belongs in a comparison or selection cohort, not in the same bucket as a pricing question.
Define the record grain before collection:
- Prompt definition: one version of a prompt.
- Run: one execution of one prompt on one engine, surface, model or mode, context, and timestamp.
- Answer observation: one captured answer associated with a run.
- Citation observation: one displayed citation in an answer.
- Aggregate: one calculated result for a brand, engine, surface, prompt cohort, reporting period, and metric-definition version.
For every run, capture the exact prompt and version, timestamp, engine, product surface, visible model or mode, locale, language, device, login or personalization conditions, full answer text, and displayed citations. Record “no citations shown” separately from “the brand was not cited.” Preserve distinct cited URLs before calculating unique-domain metrics.
For an illustrative observation model, keep run and citation rows separate. A run can have a generated UUID and a prompt version. A citation row can contain that run’s answer ID, citation ordinal, displayed URL, and normalized URL. Preserve the original answer and classifier version if an AI assistant labels brand mentions.
Use a database-generated run_id for every execution. For citations, enforce uniqueness at the intended row grain, such as answer_id plus normalized URL plus citation ordinal, with a database constraint or transactional upsert. A lookup-then-insert check alone can race when workers run concurrently. The schema is an illustrative implementation design, not a vendor-published data model.
{
"run_id": "generated-uuid",
"answer_id": "generated-uuid",
"prompt_id": "p-compare-014-v2",
"engine": "ChatGPT",
"surface": "Search",
"brand_mentioned": false,
"brand_recommended": false,
"brand_cited": false,
"cited_page_belongs_to_brand": false,
"classification_status": "needs_review",
"evidence_excerpt": "Exact answer text supporting the classification"
}
Use FSA as a diagnosis sequence
Apply the pillars to a specific page and prompt cohort. Start with evidence that can be checked, rather than assuming the first missing citation is an editorial problem.
Freshness: check whether material facts have changed
Review product names, pricing, regulations, examples, statistics, and terminology when evidence suggests they may be outdated. Set review timing based on the subject’s rate of change, not a universal 90-day or six-month shelf life. A visible update date records a date, but does not prove that claims were substantively reviewed.
Structure: make the answer easy to locate and understand
Check whether the page answers the target question in visible text, with the definition and essential supporting details close to the relevant section. Clear headings and concise, self-contained explanations help readers navigate a page, but do not guarantee a citation. Google says structured data must match visible page content. Its documentation does not make special AI schema a requirement. See Google’s structured-data guidance.
Authority: examine relevant sources and consistent facts
Look for accurate, useful information about the brand and topic across sources relevant to the audience. Consistent information across a website and other channels can be a discoverability hypothesis worth investigating. The reviewed vendor documentation does not define cross-channel mentions as a standalone authority score or quantify their effect.
Check technical eligibility first
Confirm the canonical URL, response and redirect status, robots directives, crawl access, indexability, visible text, and structured-data consistency. For Google AI features, ordinary Search eligibility matters. For ChatGPT Search, OpenAI says allowing OAI-SearchBot can improve eligibility. Check robots, firewall, CDN, and bot-mitigation controls where relevant. A crawlable page is not necessarily indexed, and an indexed page is not necessarily cited.
If results vary sharply by engine, surface, locale, login state, or device, validate the run context and source availability before rewriting the page. Context variance is a measurement problem until the records show otherwise.
- Material facts changed? Verify the claims and make a factual refresh.
- Answer present but difficult to locate? Restructure the explanation around the relevant question.
- Clear and accessible page, repeated absence in commercial prompts? Investigate prompt fit, source coverage, and consistent brand information.
- Unstable observations? Validate engine, surface, locale, model or mode, login state, device, and capture method first.
Turn one diagnosis into a controlled content test
Select one high-value page and one primary intervention: a factual refresh, a structural revision, or improved source coverage. Changing all three at once makes the result harder to interpret. Maintain an evidence register with the source URL, fact or passage changed, revision type, reviewer, approval date, and page revision timestamp.
For a factual refresh, change the material facts and supporting examples, not just the displayed date. For a structural revision, place the direct answer and necessary definition near the relevant section, then check that each section remains accurate when read independently. Do not add FAQ blocks or markup solely on the assumption that they trigger citations.
After publication, re-run the same prompt versions in the same engine and surface where possible. Record differences in model or mode, locale, login state, device, or other context. A before-and-after association is useful evidence for the next decision, but one observation cannot establish causation.
Operationalize the workflow without automating uncertainty
A practical architecture is: capture an answer and its citations, validate the run, store immutable observations, classify bounded fields if useful, review exceptions, and report from the observation store. The capture may be manual or may use a separately verified vendor capability. This design does not assume a public cross-engine API.
| Trigger | AI job | Validation gate | Action or fallback |
|---|---|---|---|
| Captured answer with a brand reference | Classify mention, recommendation, apparent claim, and supporting excerpt | Retain the answer, classifier version, and confidence status; review ambiguity | Store as an observation or route to an analyst |
| Repeated absence or a technical warning | Summarize evidence for the owner; do not decide technical pass or fail | Check status, redirects, robots, visible text, indexability, and structured data deterministically | Open a technical issue or record that context is unknown |
| Verified content issue | Draft a proposed revision using supplied evidence only | Subject-matter owner verifies product, pricing, legal, security, or competitor claims | Publish through the normal workflow, then retest the same cohort |
Deterministic rules should handle required fields, allowed engine and surface values, URL canonicalization, duplicate detection, date ranges, HTTP checks, and arithmetic. An AI classifier can assist with answer context, but should not decide whether a claim is true or safe to publish.
Keep the observation store or warehouse as the measurement system of record. A separate CRM event is not an observation: it is a downstream action with its own contact or deal key, permissions, retention rules, and idempotency requirement. If a verified process later sends approved information to CRM systems, validate identity matching, field mappings, permissions, retention, and transactional writes first. ConsultEvo’s AI agent services are relevant to bounded automation and approval steps, not proof of a prebuilt monitoring integration.
Interpret results as evidence, not a universal score
Report prompt presence rate, citation presence rate, unique-source coverage, and reviewed brand-accuracy rate by engine or surface and prompt cohort. Include the date range, metric-definition version, numerator, and denominator. Track whether a brand remains present in later runs rather than treating a single appearance as durable visibility.
Citation-count share is normalized within the citation set you define and can sum to 100% for that set. Brand presence and total citations are not inherently zero-sum: several brands may appear together, and answer length or citation counts may change. Report absolute rates and raw counts alongside any share.
A self-reported Perplexity case study illustrates why results need careful handling. The author reports a rise from 26.67% to 72.7% after updating one page, with the milestone reached within 96 hours during a 125-hour tracking window. The author also reports no new backlinks or paid promotion. The case was not independently audited and does not prove that the edit caused the change or provide a general benchmark. See the case study and its stated methodology for context.
The practical value of FSA is its role as a structured investigation: verify facts, make answers easier to find and assess, and examine relevant source coverage. Pair that diagnosis with reproducible prompt-level observations, technical checks, and one evidence-backed change at a time. The result is a more defensible improvement process, not a promise of citation.
