<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vicky Lalwani</title>
    <description>The latest articles on DEV Community by Vicky Lalwani (@vickylalwani).</description>
    <link>https://dev.to/vickylalwani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4217973%2Fb3ed2a28-ac90-4f32-930f-29405e303bbb.png</url>
      <title>DEV Community: Vicky Lalwani</title>
      <link>https://dev.to/vickylalwani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vickylalwani"/>
    <language>en</language>
    <item>
      <title>Building a custom GPT or Claude agent for marketing reporting</title>
      <dc:creator>Vicky Lalwani</dc:creator>
      <pubDate>Fri, 30 Oct 2026 21:34:55 +0000</pubDate>
      <link>https://dev.to/vickylalwani/building-a-custom-gpt-or-claude-agent-for-marketing-reporting-43pe</link>
      <guid>https://dev.to/vickylalwani/building-a-custom-gpt-or-claude-agent-for-marketing-reporting-43pe</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;A marketing reporting agent should read approved data sources, answer fixed weekly questions, and never invent numbers. On ChatGPT you build that with Custom GPT instructions, optional knowledge files and Actions that call your API. (&lt;a href="https://developers.openai.com/api/docs/actions/introduction" rel="noopener noreferrer"&gt;OpenAI GPT Actions&lt;/a&gt;) On Claude you connect tools through MCP connectors and keep the workflow in a Project so the same rules stick. (&lt;a href="https://claude.com/docs/extend/overview" rel="noopener noreferrer"&gt;Claude connectors overview&lt;/a&gt;) Start with read only tools, a written metric dictionary and a human check before anything goes to a client or boss.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this agent is for
&lt;/h2&gt;

&lt;p&gt;Most marketing teams waste Monday morning copying Ads, Analytics and CRM numbers into slides. An agent can draft that pack if you constrain it hard.&lt;/p&gt;

&lt;p&gt;It should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pull the same metrics every week&lt;/li&gt;
&lt;li&gt;explain changes in plain words&lt;/li&gt;
&lt;li&gt;flag missing data instead of guessing&lt;/li&gt;
&lt;li&gt;refuse writes to live ad accounts unless you later add a separate, approved tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It should not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invent ROAS&lt;/li&gt;
&lt;li&gt;change bids&lt;/li&gt;
&lt;li&gt;email clients on its own&lt;/li&gt;
&lt;li&gt;browse random blogs for "benchmarks" and present them as your data&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Custom GPT vs Claude agent
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Piece&lt;/th&gt;
&lt;th&gt;Custom GPT (ChatGPT)&lt;/th&gt;
&lt;th&gt;Claude agent style setup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instructions&lt;/td&gt;
&lt;td&gt;GPT builder instructions&lt;/td&gt;
&lt;td&gt;Project instructions + skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files&lt;/td&gt;
&lt;td&gt;Uploaded knowledge&lt;/td&gt;
&lt;td&gt;Project files / Library&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Live data&lt;/td&gt;
&lt;td&gt;GPT Actions via OpenAPI&lt;/td&gt;
&lt;td&gt;MCP connectors / tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;API key or OAuth on Actions&lt;/td&gt;
&lt;td&gt;Connector auth on your account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk control&lt;/td&gt;
&lt;td&gt;Consequential actions need user confirm&lt;/td&gt;
&lt;td&gt;Tool allowlists + approvals in your app&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;OpenAI Actions turn natural language into API calls described by an OpenAPI schema. You set auth, paste the schema and test in Preview. (&lt;a href="https://help.openai.com/en/articles/9442513-configuring-actions-in-gpts" rel="noopener noreferrer"&gt;Configuring actions in GPTs&lt;/a&gt;) Claude reaches external systems through MCP connectors that expose tools, prompts and resources. (&lt;a href="https://claude.com/docs/extend/overview" rel="noopener noreferrer"&gt;Connectors overview&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Pick the host your team already lives in. The design rules below stay the same on both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 10 step build
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Write the weekly question list
&lt;/h3&gt;

&lt;p&gt;Lock ten questions before you touch tools. Example set:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Spend by channel vs last week&lt;/li&gt;
&lt;li&gt;Primary conversions vs last week&lt;/li&gt;
&lt;li&gt;Cost per primary conversion&lt;/li&gt;
&lt;li&gt;Top three campaigns by spend&lt;/li&gt;
&lt;li&gt;Top three campaigns by conversions&lt;/li&gt;
&lt;li&gt;Tracking anomalies (zero conversion days, spikes)&lt;/li&gt;
&lt;li&gt;Search terms or creative notes that need a human&lt;/li&gt;
&lt;li&gt;Pipeline or lead quality note from CRM if connected&lt;/li&gt;
&lt;li&gt;Open risks&lt;/li&gt;
&lt;li&gt;Recommended next tests (labelled as suggestions)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a question needs a metric you cannot define, drop the question.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Publish a metric dictionary
&lt;/h3&gt;

&lt;p&gt;One sheet, shared with the team:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric name&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Exact definition&lt;/th&gt;
&lt;th&gt;Primary or note only&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Paid search spend&lt;/td&gt;
&lt;td&gt;Google Ads API&lt;/td&gt;
&lt;td&gt;Cost in account currency, account timezone&lt;/td&gt;
&lt;td&gt;primary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Primary conversions&lt;/td&gt;
&lt;td&gt;Google Ads&lt;/td&gt;
&lt;td&gt;Only conversions marked primary for bidding&lt;/td&gt;
&lt;td&gt;primary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qualified leads&lt;/td&gt;
&lt;td&gt;CRM&lt;/td&gt;
&lt;td&gt;Stage = SQL, created this week&lt;/td&gt;
&lt;td&gt;primary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sessions&lt;/td&gt;
&lt;td&gt;GA4&lt;/td&gt;
&lt;td&gt;Total users sessions, site filter X&lt;/td&gt;
&lt;td&gt;note&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The agent must quote these names only. Synonyms cause fake trends.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Choose read only tools first
&lt;/h3&gt;

&lt;p&gt;Minimum viable tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;get_ads_summary(date_range, account_id)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_analytics_summary(date_range, property_id)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_crm_summary(date_range)&lt;/code&gt; optional&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_metric_dictionary()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No &lt;code&gt;update_campaign&lt;/code&gt;. No &lt;code&gt;send_email&lt;/code&gt;. Add those months later, if ever, behind approvals.&lt;/p&gt;

&lt;p&gt;OpenAI production notes for Actions expect HTTPS, sensible rate limits and clear schema descriptions because the model uses those descriptions to pick endpoints. (&lt;a href="https://developers.openai.com/api/docs/actions/production" rel="noopener noreferrer"&gt;Production notes&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Put definitions in instructions, not vibes
&lt;/h3&gt;

&lt;p&gt;Instruction block pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role: marketing reporting assistant for [brand]&lt;/li&gt;
&lt;li&gt;Data rules: only use tool results; if a tool fails, say so&lt;/li&gt;
&lt;li&gt;Date rules: use account timezone; default to last complete Mon to Sun&lt;/li&gt;
&lt;li&gt;Output rules: start with a scoreboard table; then drivers; then risks; then suggested tests&lt;/li&gt;
&lt;li&gt;Forbidden: inventing numbers; comparing to "industry averages" unless a tool returns them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenAI's Actions getting started guide stresses instructions that name the action and parameters the model should use. (&lt;a href="https://developers.openai.com/api/docs/actions/getting-started" rel="noopener noreferrer"&gt;Getting started with GPT Actions&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Add a thin API in front of vendor APIs
&lt;/h3&gt;

&lt;p&gt;Do not give the model raw Google Ads or Meta tokens with write scopes. Your API should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;authenticate the caller&lt;/li&gt;
&lt;li&gt;accept only allowlisted account ids&lt;/li&gt;
&lt;li&gt;fetch and aggregate&lt;/li&gt;
&lt;li&gt;return compact JSON under size limits&lt;/li&gt;
&lt;li&gt;log every call&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenAI documents payload and timeout limits for Actions. Keep responses small and structured. (&lt;a href="https://developers.openai.com/api/docs/actions/production" rel="noopener noreferrer"&gt;Production notes&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Mark consequential paths
&lt;/h3&gt;

&lt;p&gt;If you later allow a tool that changes anything, mark it so the user must confirm. OpenAI supports consequential action flags so ChatGPT asks before running them. (&lt;a href="https://developers.openai.com/api/docs/actions/production" rel="noopener noreferrer"&gt;Production notes&lt;/a&gt;) Until then, keep the agent read only.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Test with broken data on purpose
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;Expected behaviour&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API returns empty week&lt;/td&gt;
&lt;td&gt;Agent says data missing; no fake table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conversion tag broke mid week&lt;/td&gt;
&lt;td&gt;Agent flags zero days; asks for human check&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User asks to raise budgets&lt;/td&gt;
&lt;td&gt;Agent refuses; no tool exists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User asks for competitor spend&lt;/td&gt;
&lt;td&gt;Agent says unknown unless a licensed tool exists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two accounts selected&lt;/td&gt;
&lt;td&gt;Agent separates tables; no blended fake total unless asked&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  8. Fix the output template
&lt;/h3&gt;

&lt;p&gt;Force the same markdown every run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## Scoreboard
(table)

## What moved
(2 to 5 bullets tied to rows)

## Tracking and data risks
(bullets or "none found")

## Suggested tests
(bullets labelled suggestion)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Humans skim. Machines extract tables. Both win.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Decide who presses send
&lt;/h3&gt;

&lt;p&gt;The agent drafts. A person posts to Slack or email after a two minute read. That single habit prevents most embarrassment.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Review monthly
&lt;/h3&gt;

&lt;p&gt;Each month ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which questions wasted time?&lt;/li&gt;
&lt;li&gt;Which metrics were redefined in the business but not in the dictionary?&lt;/li&gt;
&lt;li&gt;Which tools timed out?&lt;/li&gt;
&lt;li&gt;Did anyone ask for writes you should still refuse?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sample instruction snippet you can adapt
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a marketing reporting assistant for [Brand].
Only use tool results for numbers.
If a tool errors or returns empty data, say what failed.
Default range: last complete Mon-Sun in the account timezone.
Never invent benchmarks.
Output the scoreboard table first.
Label suggestions as suggestions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste tool names exactly as they appear in your OpenAPI &lt;code&gt;operationId&lt;/code&gt; fields so the model can bind steps to Actions. (&lt;a href="https://developers.openai.com/api/docs/actions/getting-started" rel="noopener noreferrer"&gt;Getting started&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Security notes teams skip
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Separate read credentials from write credentials at the API layer&lt;/li&gt;
&lt;li&gt;Rotate keys when staff leave&lt;/li&gt;
&lt;li&gt;Store raw exports outside the model context when they are huge&lt;/li&gt;
&lt;li&gt;Treat connector access on Claude like production access; review who can add connectors. (&lt;a href="https://claude.com/docs/extend/overview" rel="noopener noreferrer"&gt;Connectors overview&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Disable the agent publicly; keep it private to your workspace&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When not to build this yet
&lt;/h2&gt;

&lt;p&gt;Wait if conversion tracking is broken, if nobody agrees what a lead means, or if the only goal is "an AI demo for the board". Fix definitions first. The agent amplifies whatever you feed it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Soft next step
&lt;/h2&gt;

&lt;p&gt;If you want this packaged as part of a wider marketing automation build, I outline that work on &lt;a href="https://www.vickylalwani.net/services/ai-automation" rel="noopener noreferrer"&gt;vickylalwani.net/services/ai-automation&lt;/a&gt;. Use the ten steps above so any builder inherits the same read only rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;OpenAI, GPT Actions introduction: &lt;a href="https://developers.openai.com/api/docs/actions/introduction" rel="noopener noreferrer"&gt;https://developers.openai.com/api/docs/actions/introduction&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenAI Help, Configuring actions in GPTs: &lt;a href="https://help.openai.com/en/articles/9442513-configuring-actions-in-gpts" rel="noopener noreferrer"&gt;https://help.openai.com/en/articles/9442513-configuring-actions-in-gpts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenAI, Getting started with GPT Actions: &lt;a href="https://developers.openai.com/api/docs/actions/getting-started" rel="noopener noreferrer"&gt;https://developers.openai.com/api/docs/actions/getting-started&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenAI, Production notes on GPT Actions: &lt;a href="https://developers.openai.com/api/docs/actions/production" rel="noopener noreferrer"&gt;https://developers.openai.com/api/docs/actions/production&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic, Connectors, skills, and plugins: &lt;a href="https://claude.com/docs/extend/overview" rel="noopener noreferrer"&gt;https://claude.com/docs/extend/overview&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>marketing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>A free AI visibility audit checklist you can run this week</title>
      <dc:creator>Vicky Lalwani</dc:creator>
      <pubDate>Fri, 30 Oct 2026 21:13:45 +0000</pubDate>
      <link>https://dev.to/vickylalwani/a-free-ai-visibility-audit-checklist-you-can-run-this-week-5hk9</link>
      <guid>https://dev.to/vickylalwani/a-free-ai-visibility-audit-checklist-you-can-run-this-week-5hk9</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;An AI visibility audit checks whether ChatGPT, Perplexity, Google AI Overviews, Claude and Gemini name or cite your brand for the questions buyers already ask. Run a fixed prompt panel, record who gets named, fix crawl and content gaps, then earn mentions on the third party pages those engines already trust. Google says there is no special AI markup required. Useful, crawlable pages still come first. (&lt;a href="https://developers.google.com/search/docs/appearance/ai-features" rel="noopener noreferrer"&gt;Google Search Central&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this audit exists
&lt;/h2&gt;

&lt;p&gt;Buyers now ask answer engines before they click ten blue links. If your brand never appears in those answers, your Google ranking alone will not save the deal.&lt;/p&gt;

&lt;p&gt;This checklist is the audit I run before any GEO or AEO work. It is free to copy. You need a spreadsheet, a browser and about half a day for a focused niche.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "visible" means here
&lt;/h2&gt;

&lt;p&gt;I score three outcomes for each prompt:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Outcome&lt;/th&gt;
&lt;th&gt;What you record&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mention&lt;/td&gt;
&lt;td&gt;The answer names your brand&lt;/td&gt;
&lt;td&gt;Buyers see you as an option&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Citation&lt;/td&gt;
&lt;td&gt;The answer links or attributes a source URL of yours&lt;/td&gt;
&lt;td&gt;You get a path back to a page you control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Position&lt;/td&gt;
&lt;td&gt;Rough place in a shortlist (1st, mid, absent)&lt;/td&gt;
&lt;td&gt;First named brands get more attention&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A mention without a citation still helps. A citation without a clear brand name is weaker. Both beat silence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 10 step checklist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Write the buyer prompts, not the brand prompts
&lt;/h3&gt;

&lt;p&gt;List 40 to 80 questions a real buyer would type. Include country variants if you sell in more than one market.&lt;/p&gt;

&lt;p&gt;Good examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;best GEO consultant for Australian SaaS&lt;/li&gt;
&lt;li&gt;freelance Google Ads expert UK ecommerce&lt;/li&gt;
&lt;li&gt;Meta Ads consultant for US lead gen clinics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;is [your brand] good&lt;/li&gt;
&lt;li&gt;review of [your brand]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Brand prompts measure reputation. Buyer prompts measure discovery. Start with discovery.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fix the panel before you run it
&lt;/h3&gt;

&lt;p&gt;For each prompt, note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;market (AU, UK, US or global)&lt;/li&gt;
&lt;li&gt;intent (hire, learn, compare)&lt;/li&gt;
&lt;li&gt;your hoped for page URL&lt;/li&gt;
&lt;li&gt;the competitor set you expect to see&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep the panel stable for 30 days so next month's run is comparable.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Query the same engines the same way
&lt;/h3&gt;

&lt;p&gt;I use five surfaces when the topic is commercial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatGPT (web browsing on, logged out if you can)&lt;/li&gt;
&lt;li&gt;Perplexity&lt;/li&gt;
&lt;li&gt;Google AI Overviews or AI Mode where shown&lt;/li&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run them in the same week. Note the date. Engines change. Dated rows age honestly.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Capture the raw answer, not a summary
&lt;/h3&gt;

&lt;p&gt;Paste the full shortlist into your sheet. Save a screenshot for disputed rows. Record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;brands named&lt;/li&gt;
&lt;li&gt;URLs cited&lt;/li&gt;
&lt;li&gt;whether your site appeared&lt;/li&gt;
&lt;li&gt;whether a directory, Reddit thread or listicle appeared instead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Third party pages often carry more weight than your own site. That matches what many practitioners report when they study citations, and it matches the GEO research finding that content shape changes how often engines pick a source. (&lt;a href="https://arxiv.org/abs/2311.09735" rel="noopener noreferrer"&gt;Aggarwal et al., GEO paper on arXiv&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Score crawl access first
&lt;/h3&gt;

&lt;p&gt;Before you rewrite copy, check the boring gates Google lists for AI features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;robots.txt allows crawling&lt;/li&gt;
&lt;li&gt;important text is in HTML, not only images&lt;/li&gt;
&lt;li&gt;pages are indexable and eligible for snippets&lt;/li&gt;
&lt;li&gt;internal links reach the pages you care about&lt;/li&gt;
&lt;li&gt;structured data matches visible text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google's AI features guidance is clear: there are no extra AI files or special schemas required beyond normal Search eligibility. (&lt;a href="https://developers.google.com/search/docs/appearance/ai-features" rel="noopener noreferrer"&gt;AI features and your website&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;If ChatGPT never cites you, but Google also cannot index the page, fix indexing before you talk about "GEO tactics".&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Check answer shape on your key pages
&lt;/h3&gt;

&lt;p&gt;Open your top service and guide pages. Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the first screen answer the question in plain words?&lt;/li&gt;
&lt;li&gt;Is there a short definition a model can quote?&lt;/li&gt;
&lt;li&gt;Is there a comparison table?&lt;/li&gt;
&lt;li&gt;Are claims dated and sourced?&lt;/li&gt;
&lt;li&gt;Would a stranger understand the page without your pitch deck?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google's generative AI guide pushes non commodity content with a clear point of view, not recycled tip lists. (&lt;a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide" rel="noopener noreferrer"&gt;AI optimization guide&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Map the sources the engines already cite
&lt;/h3&gt;

&lt;p&gt;From your sheet, count which domains appear most often for your prompts. Typical winners:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;industry listicles&lt;/li&gt;
&lt;li&gt;review directories&lt;/li&gt;
&lt;li&gt;Reddit and Quora threads&lt;/li&gt;
&lt;li&gt;research posts with methods and numbers&lt;/li&gt;
&lt;li&gt;official docs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your outreach list is that domain set, not a random guest post blast.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Patch entity facts
&lt;/h3&gt;

&lt;p&gt;Pick one canonical bio block and reuse it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who you are&lt;/li&gt;
&lt;li&gt;where you work from&lt;/li&gt;
&lt;li&gt;which markets you serve&lt;/li&gt;
&lt;li&gt;what you actually do&lt;/li&gt;
&lt;li&gt;what proof you can show without inventing clients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then align site schema, LinkedIn, Crunchbase and directory profiles to the same facts. Conflicting bios make models guess.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Ship one citable asset from the gaps
&lt;/h3&gt;

&lt;p&gt;If the panel shows you lose on "how to choose" queries, write that guide with a table and sources. If you lose on technical prompts, publish a small study with method and sample size. The GEO paper showed that some content revisions raised visibility in generative answers by large margins in their tests, with results varying by domain. Treat that as motivation to test, not as a guarantee for your niche. (&lt;a href="https://arxiv.org/abs/2311.09735" rel="noopener noreferrer"&gt;arXiv:2311.09735&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Re run the same panel in 30 days
&lt;/h3&gt;

&lt;p&gt;Change only what you changed on purpose. Report:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mention rate&lt;/li&gt;
&lt;li&gt;citation rate&lt;/li&gt;
&lt;li&gt;share of prompts where you appear in the top three named brands&lt;/li&gt;
&lt;li&gt;which third party URLs still dominate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Share of voice by prompt beats vanity screenshots.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample scoring table
&lt;/h2&gt;

&lt;p&gt;Copy this into your sheet:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Prompt&lt;/th&gt;
&lt;th&gt;Market&lt;/th&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;th&gt;Mentions you?&lt;/th&gt;
&lt;th&gt;Cites you?&lt;/th&gt;
&lt;th&gt;Top cited domains&lt;/th&gt;
&lt;th&gt;Fix next&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;best GEO consultant Australia&lt;/td&gt;
&lt;td&gt;AU&lt;/td&gt;
&lt;td&gt;ChatGPT&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;listicle A, agency B&lt;/td&gt;
&lt;td&gt;earn mention on listicle A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;freelance PPC consultant UK&lt;/td&gt;
&lt;td&gt;UK&lt;/td&gt;
&lt;td&gt;Perplexity&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;directory C&lt;/td&gt;
&lt;td&gt;finish directory profile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta Ads audit checklist&lt;/td&gt;
&lt;td&gt;US&lt;/td&gt;
&lt;td&gt;Google AIO&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;your guide&lt;/td&gt;
&lt;td&gt;keep fresh, add FAQ&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What not to do
&lt;/h2&gt;

&lt;p&gt;Do not spam Reddit with "hire me" threads. Do not buy fake reviews. Do not publish a hundred near duplicate "best of" pages for every city. Google calls scaled, manipulative variants out in its AI optimization guidance. (&lt;a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide" rel="noopener noreferrer"&gt;AI optimization guide&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Do not treat llms.txt as a ranking switch. Google says it does not require special AI files for AI Overviews or AI Mode. (&lt;a href="https://developers.google.com/search/docs/appearance/ai-features" rel="noopener noreferrer"&gt;AI features docs&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  A one week schedule
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Day 1:&lt;/strong&gt; Build the prompt panel and competitor list.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Day 2:&lt;/strong&gt; Run ChatGPT and Perplexity.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Day 3:&lt;/strong&gt; Run Google AI surfaces, Claude and Gemini.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Day 4:&lt;/strong&gt; Crawl and content checks on your top 10 URLs.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Day 5:&lt;/strong&gt; Build the third party source map.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Day 6:&lt;/strong&gt; Fix the highest impact page and one entity profile.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Day 7:&lt;/strong&gt; Write the 30 day retest plan and owners.&lt;/p&gt;

&lt;h2&gt;
  
  
  Soft next step
&lt;/h2&gt;

&lt;p&gt;If you want a worked example of how this audit feeds a full GEO programme, I keep a plain language GEO service outline on &lt;a href="https://www.vickylalwani.net/services/geo-generative-engine-optimization" rel="noopener noreferrer"&gt;vickylalwani.net&lt;/a&gt;. Use the checklist above first. Bring your sheet to any consultant you hire so they work from evidence, not vibes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Google Search Central, "AI Features and Your Website": &lt;a href="https://developers.google.com/search/docs/appearance/ai-features" rel="noopener noreferrer"&gt;https://developers.google.com/search/docs/appearance/ai-features&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google Search Central, "Google's Guide to Optimizing for Generative AI Features on Google Search": &lt;a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide" rel="noopener noreferrer"&gt;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Aggarwal et al., "GEO: Generative Engine Optimization", arXiv:2311.09735: &lt;a href="https://arxiv.org/abs/2311.09735" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2311.09735&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>marketing</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
