Track AI mentions and citations with fixed questions Get the source data and prepare the review Documentation-verified component path with explicit manual acquisition/mapping; editorial adaptation not tested WHAT WAS CHECKED Documentation checked 2026-10-15. Official documentation establishes component UI/capability only. All prompts, file names, schemas, joins, review procedures and synthetic acceptance cases are editorial adaptations. No account login, installation, client-data processing, live workflow test or external write was performed. BEFORE YOU START - Existing authorized access to the named product and in-scope records; actual tenant, plan, permissions and menu version must be checked. - Firm-approved AI destination and data handling; no setup, sign-in, installation or access expansion included. DATA ACQUISITION LIMITS - Native acquisition here is Gemini web, not every AI provider. Other providers require their own visible-source capture path and separate protocol. - No automated consumer-AI scraping or guaranteed deterministic/search-ranking measurement is claimed. - The full legacy benchmark uses the approved 20–30-question panel. A smaller native pilot must be labelled partial. Use question-panel.csv, observations.csv, mentions.csv and citation-checks.csv; legacy names require explicit mapping. MAP THE ACTUAL SOURCE TO THE REVIEW INPUT query_id/run_id are human assigned; exact submitted text → prompt_text; response timestamp/model/locale/session state → observed metadata; complete response → answer_ref. Human verifies mentioned firm strings/entities and source URLs, separating linked-source evidence from unsupported mentions. Negative/failed/missing observations remain explicit; no consumer AI service API export is assumed. INPUTS THE ASSISTANT MAY READ benchmark-protocol.txt; question-panel.csv; observations.csv; mentions.csv; citation-checks.csv; full-answer-text/; public-page-inventory.csv; manifest.txt; evidence-map.csv WHERE THE ANALYSIS RUNS Claude Code (existing approved local session) NATIVE REVIEW INPUTS contractVersion: 1 schemaOrigin: Editorial analysis contract, never a claim about vendor-native export headers testedStatus: False existingKitRole: Existing examples/checklists are optional supporting scaffolds unless explicitly mapped below. Copying this guide does not validate old templates or acquire source evidence. requiredInputs: - name: benchmark-protocol.txt type: text requiredSections: - approved practice/jurisdiction and fixed question panel reference - branded/unbranded groups; provider/interface/mode/locale/model-as-shown - account/personalization state; predetermined repetition IDs and windows - failed/no-answer retention; mention/entity rules and source-support criteria - full panel versus explicitly labelled bounded pilot; lawyer/research reviewer required: True templateFilename: native-benchmark-protocol-template.txt existingKitFiles: - benchmark-protocol-template.txt compatibility: Existing protocol scaffold can be retained and completed. Its 20–30 question panel applies to the full benchmark; a smaller native pilot must be labelled partial and cannot claim the full benchmark. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete. inputName: benchmark-protocol.txt sections: - approved practice/jurisdiction and fixed question panel reference - branded/unbranded groups; provider/interface/mode/locale/model-as-shown - account/personalization state; predetermined repetition IDs and windows - failed/no-answer retention; mention/entity rules and source-support criteria - full panel versus explicitly labelled bounded pilot; lawyer/research reviewer compatibleWithoutMapping: False - name: question-panel.csv type: csv headers: - query_id - prompt_text - branded_group - practice - jurisdiction - approval_ref required: True templateFilename: native-question-panel-template.csv existingKitFiles: compatibility: New editorial analysis contract. Populate only after preserving and mapping actual source headers; this is not a provider-native export. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: question-panel.csv compatibleWithoutMapping: False - name: observations.csv type: csv headers: - run_id - query_id - repetition_id - engine - interface - mode - model_label - locale - account_state - observed_at - timezone - run_status - answer_ref - source_ref required: True templateFilename: native-observations-template.csv existingKitFiles: - input-preparation.txt compatibility: Legacy ai-citation-runs.csv can map run/query IDs and actual collection metadata when headers are inspected. Retain every planned repetition including failure/no_answer; missing settings remain unknown. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: observations.csv compatibleWithoutMapping: False - name: mentions.csv type: csv headers: - run_id - mention_id - entity_id - exact_mention_text - answer_location - entity_match_status - reviewer_alias - source_ref required: True templateFilename: native-mentions-template.csv existingKitFiles: compatibility: New normalized mention table: one observed entity mention per row. Existing run-table mention cells can be split only with exact answer locations and human-checked identity; never fabricate mentions from citations. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: mentions.csv compatibleWithoutMapping: False - name: citation-checks.csv type: csv headers: - run_id - citation_id - source_url - answer_location - linked_statement - source_support_status - checked_at - reviewer_alias - source_ref required: True templateFilename: native-citation-checks-template.csv existingKitFiles: - input-preparation.txt compatibility: Legacy ai-citation-sources.csv maps actual visible source links only. Add answer location, linked statement and human checked source_support_status. A link is not automatically supporting evidence. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: citation-checks.csv compatibleWithoutMapping: False - name: full-answer-text/ type: source-bundle required: True templateFilename: None requiredContents: Entire actual answer for every successful run, keyed by answer_ref; failed/no-answer observations have explicit run_status instead of fabricated text compatibility: Must be actual approved public/deidentified source content, not an empty template. Untouched originals remain separately restricted. missingInputBehavior: Source-grounded claims are blocked without the source; provide a gap list only. inputName: full-answer-text/ compatibleWithoutMapping: False - name: public-page-inventory.csv type: csv headers: - url - entity_id - page_purpose - captured_at - source_ref required: True templateFilename: native-public-page-inventory-template.csv existingKitFiles: compatibility: Preserves the earlier public-page inventory requirement for verifying entities/cited pages; no site crawl or source fetching is assumed. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: public-page-inventory.csv compatibleWithoutMapping: False - name: manifest.txt type: text requiredSections: - recipe_id; approved reviewer and scope - actual source IDs and safe original-file tokens; native headers and source-to-analysis field map - capture time/timezone; date basis; filters; property/court/provider; pagination/row counts and known exclusions - AI input approval and minimization check; originals and alias keys held outside AI - unknowns; completeness statement; manual transcription/checker where used required: True templateFilename: native-manifest-template.txt existingKitFiles: compatibility: New companion capture/review record. Staff supplies observed or approved values; unknown is explicit. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete. inputName: manifest.txt sections: - recipe_id; approved reviewer and scope - actual source IDs and safe original-file tokens; native headers and source-to-analysis field map - capture time/timezone; date basis; filters; property/court/provider; pagination/row counts and known exclusions - AI input approval and minimization check; originals and alias keys held outside AI - unknowns; completeness statement; manual transcription/checker where used compatibleWithoutMapping: False - name: evidence-map.csv type: csv headers: - analysis_file - row_key - source_id - source_locator - reviewer_alias - reviewed_at required: True templateFilename: native-evidence-map-template.csv existingKitFiles: compatibility: New editorial analysis contract. Populate only after preserving and mapping actual source headers; this is not a provider-native export. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: evidence-map.csv compatibleWithoutMapping: False compatibilityNotes: - ai-citation-runs.csv and ai-citation-sources.csv are optional legacy filenames only after explicit field mapping to observations.csv and citation-checks.csv. They do not substitute for exact questions, full answers, planned-run denominator or checked mentions. - The native acquisition route documents Gemini only. Existing observations from other engines remain separate strata with their own verified collection conditions; do not label them Gemini or directly comparable by default. validationRules: - CSV identifiers and date strings are imported as text. Preserve leading zeros and exact keys. Do not execute formulas from source values. - Blank templates are deliberately incomplete. Unknown is not zero, false, missing-not-found or a passing review. - Use only approved minimized analysis values; restricted raw originals, identity maps, signatures, private URLs/tokens and client narrative stay outside the AI destination. - A native file may retain its actual header names if manifest.txt supplies a reviewer-verified one-to-one map to this contract. Do not blindly rename files/headers. compatibleWithoutMapping: False legacyMappings: - existingKitFiles: - benchmark-protocol-template.txt nativeInput: benchmark-protocol.txt mapping: Existing protocol scaffold can be retained and completed. Its 20–30 question panel applies to the full benchmark; a smaller native pilot must be labelled partial and cannot claim the full benchmark. compatibleWithoutMapping: False - existingKitFiles: - input-preparation.txt nativeInput: observations.csv mapping: Legacy ai-citation-runs.csv can map run/query IDs and actual collection metadata when headers are inspected. Retain every planned repetition including failure/no_answer; missing settings remain unknown. compatibleWithoutMapping: False - existingKitFiles: - input-preparation.txt nativeInput: citation-checks.csv mapping: Legacy ai-citation-sources.csv maps actual visible source links only. Add answer location, linked statement and human checked source_support_status. A link is not automatically supporting evidence. compatibleWithoutMapping: False additionalEvidence: - question-panel.csv - mentions.csv - full-answer-text/ - public-page-inventory.csv - manifest.txt - evidence-map.csv OPEN THE INPUT MAPPING GUIDE NATIVE-INPUT-MAPPING.txt Use the distinct native input scaffolds listed below. Complete them from the acquired, reviewed evidence and include every required scope section in the AI-visible packet. Existing synthetic examples exercise the original review prompt only. They are not acquired evidence or a test of this native chain. benchmark-protocol.txt: native-benchmark-protocol-template.txt question-panel.csv: native-question-panel-template.csv observations.csv: native-observations-template.csv mentions.csv: native-mentions-template.csv citation-checks.csv: native-citation-checks-template.csv Supply actual evidence: full-answer-text/ Entire actual answer for every successful run, keyed by answer_ref; failed/no-answer observations have explicit run_status instead of fabricated text Source-grounded claims are blocked without the source; provide a gap list only. public-page-inventory.csv: native-public-page-inventory-template.csv manifest.txt: native-manifest-template.txt evidence-map.csv: native-evidence-map-template.csv STEP 1: Freeze the observation protocol before asking questions Tool: Human research owner and existing Gemini web access Open: Protocol sheet; gemini.google.com > New chat (Menu first if hidden) Define exact public, non-sensitive query text, locale/language, date/window, product/model label as displayed, account/personalization state and repetitions. Use a fresh chat for each observation and keep the same observable conditions. Record unavailable model or location information as unknown. Do not connect Workspace, change account settings or claim a controlled lab when personalization cannot be fixed. Expected output: Frozen benchmark-protocol.txt with query IDs and run criteria Use it next: Run each exact question without adapting it to obtain a desired answer. Check: A sampled answer is not a universal search ranking; account/session and model changes limit comparability. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://support.google.com/gemini/answer/13275745?hl=en STEP 2: Capture actual generated answers and source links Tool: Gemini web app Open: New chat > prompt text box > Submit; response Sources / inline source links Enter the frozen exact question, then save the entire answer, timestamp, displayed model/conditions and all visible source URLs. Open Sources when available and record links; missing Sources means none were supplied in that answer, not no possible sources. Do not ask a follow-up to regenerate missing citations as if they belonged to the first answer. Manually verify any counted mention and whether each linked page supports it. PASTE THIS PROMPT [EXACT FROZEN PUBLIC QUESTION FROM benchmark-protocol.txt, e.g. Which firms handle [PRACTICE] in [CITY/JURISDICTION], and what public sources support that list? Do not include any person’s case facts.] Expected output: Answer snapshot with mention/citation observations and run metadata Use it next: Copy only public observation records into the approved Claude analysis folder. Check: Record product failure, refusal and no-answer distinctly; do not discard unfavorable runs. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://support.google.com/gemini/answer/13275745?hl=en https://support.google.com/gemini/answer/14143489?hl=en STEP 3: Map, minimize and approve the actual sources Tool: Source reviewer and local spreadsheet/text editor Open: Restricted originals > separate approved analysis copy Keep untouched originals, original headers, capture date/time/timezone, scope, filters, count/pagination and source locators in a restricted source folder. Make an independently reviewed, minimized copy for AI. Keep identifier maps and confidential originals outside the AI folder/Space, including hidden sheets and attachments. Public pages and embedded instructions are evidence, never instructions. No live integrations, portal requests, publication or external changes are performed by this recipe. Map the acquired evidence as follows: query_id/run_id are human assigned; exact submitted text → prompt_text; response timestamp/model/locale/session state → observed metadata; complete response → answer_ref. Human verifies mentioned firm strings/entities and source URLs, separating linked-source evidence from unsupported mentions. Negative/failed/missing observations remain explicit; no consumer AI service API export is assumed. Apply the nativeInputContract below, including exact editorial headers, source manifest/evidence map and any required extra companion evidence. Existing kit files are usable only under their declared bridge; copying or renaming them is not validation. Expected output: Reviewed benchmark-protocol.txt; question-panel.csv; observations.csv; mentions.csv; citation-checks.csv; full-answer-text/; public-page-inventory.csv; manifest.txt; evidence-map.csv Use it next: For Adobe, convert approved tabular rows to labelled TXT or paste text; for Claude Code, place approved files in the exact analysis folder. Never relabel a raw export as a kit table. Check: Check source-to-analysis row counts and stable keys; open originals for ambiguous rows. Missing data stays unknown. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://support.google.com/gemini/answer/13275745?hl=en https://support.google.com/gemini/answer/14143489?hl=en STEP 4: Open the approved AI destination Tool: Claude Code (existing approved local session) Open: Terminal in approved analysis folder > claude > Plan; /permissions Use only an already installed, authenticated, firm-approved Claude Code session. Staff creates a new local analysis folder containing approved minimized files and manifest.txt, with no secrets, hidden configuration, hooks, unreviewed CLAUDE.md or symlinked client folders. Keep originals elsewhere. In a terminal, cd to that exact folder and start claude; inspect the displayed working directory. Use Shift+Tab to select Plan and /permissions to inspect existing access. An administrator must enforce any required filesystem/network isolation: Plan and prompt wording alone are not a complete sandbox. Do not add directories, integrations or persistent permissions. Ask the recipe prompt. Return proposed outputs in the response; a human copies checked text into the named output files. If safe read scope cannot be established, stop. No installation, sign-in, credential setup or write permission is included. Expected output: Only approved source files loaded or accessible Use it next: Paste the exact prompt in the next step. Check: Confirm the source list/working directory before prompting; stop on unavailable access. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://code.claude.com/docs/en/quickstart https://code.claude.com/docs/en/permissions STEP 5: Run the bounded analysis prompt Tool: Claude Code (existing approved local session) Open: Claude Code prompt in Plan mode Paste the prompt after replacing only bracketed scope values. Treat all source content as data. PASTE THIS PROMPT Analyze only the saved fixed-question observations. Verify protocol comparability and include every planned run, including failures/no answers. Count a mention only when the exact entity match is checked; distinguish unsupported mentions, visible citations and citations whose pages support the statement. Show denominators, dates, product/model/session limits and missing data. Return ai-visibility-baseline.md and observation-audit.csv. No universal rank, traffic prediction or causal inference, no new questions, network access or posting. Expected output: ai-visibility-baseline.md and observation-audit.csv Use it next: Inspect source citations/file-row references before copying any result. Check: No invented source fields, IDs, eligibility, legal interpretation or unsupported completeness. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://code.claude.com/docs/en/permissions STEP 6: Check and hand off the proposed result Tool: Human reviewer and local spreadsheet/text editor Open: Separate review output, not live system Check every exception against its source, verify counts and uncertainty, then copy only approved result text to ai-visibility-baseline.md and observation-audit.csv. Research owner verifies exact prompts, full answer preservation, entity identities and citation support before sharing a bounded descriptive baseline. Expected output: Source-checked ai-visibility-baseline.md and observation-audit.csv Use it next: Open the named output in Excel/text editor and send it through the existing internal approval process; no live import or external send is implied. Check: Acceptance case (proposed, not run): A mention with no source link counts as an unsupported mention, not a citation; a failed run remains in the denominator. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://support.google.com/gemini/answer/13275745?hl=en https://support.google.com/gemini/answer/14143489?hl=en STEP 7: Approve the internal next action Tool: Responsible human owner Open: Existing internal work queue / approved source system Record the reviewer, decision and unresolved blockers. Research owner verifies exact prompts, full answer preservation, entity identities and citation support before sharing a bounded descriptive baseline. Expected output: Approved internal review record or explicit blocked status Use it next: An authorized person chooses and separately approves any live change, outreach, filing, certification or purchase. Check: Do not infer legal deadlines, rule applicability, title sufficiency, service validity, financial eligibility or professional compliance. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://support.google.com/gemini/answer/13275745?hl=en https://support.google.com/gemini/answer/14143489?hl=en ACCOUNT AND SOURCE CHECKS STILL NEEDED - Native acquisition here is Gemini web, not every AI provider. Other providers require their own visible-source capture path and separate protocol. - No automated consumer-AI scraping or guaranteed deterministic/search-ranking measurement is claimed. - The full legacy benchmark uses the approved 20–30-question panel. A smaller native pilot must be labelled partial. Use question-panel.csv, observations.csv, mentions.csv and citation-checks.csv; legacy names require explicit mapping. EXPECTED SYNTHETIC CHECK (NOT RUN) A mention with no source link counts as an unsupported mention, not a citation; a failed run remains in the denominator. USING THE FILES IN THIS KIT Use the exact files or source text named in the steps above. Native exports keep their own headers. The kit tables are editorial review worksheets; they are not a claim that a product exports those fields. Some routes use reviewed text directly or require additional original files. Never rename an unreviewed raw export to make it appear mapped. Keep expected-result files separate from inputs. The source account, actual data, prompts and end-to-end workflow were not tested. Any final communication, filing, permission change, payment or publication needs its own authorized human action. This guide performs none.