<?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: Mael Bourdin</title>
    <description>The latest articles on DEV Community by Mael Bourdin (@mael_bourdin_146413ed19bb).</description>
    <link>https://dev.to/mael_bourdin_146413ed19bb</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%2F4159628%2Fcabfd268-d6a2-4e44-a91c-fdcc00cbad54.png</url>
      <title>DEV Community: Mael Bourdin</title>
      <link>https://dev.to/mael_bourdin_146413ed19bb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mael_bourdin_146413ed19bb"/>
    <language>en</language>
    <item>
      <title>Our AI coding agents ignored their instructions for a month. Nothing errored.</title>
      <dc:creator>Mael Bourdin</dc:creator>
      <pubDate>Fri, 16 Oct 2026 07:00:01 +0000</pubDate>
      <link>https://dev.to/mael_bourdin_146413ed19bb/our-ai-coding-agents-ignored-their-instructions-for-a-month-nothing-errored-3li2</link>
      <guid>https://dev.to/mael_bourdin_146413ed19bb/our-ai-coding-agents-ignored-their-instructions-for-a-month-nothing-errored-3li2</guid>
      <description>&lt;p&gt;In August we wrote a careful instructions file for the coding agents that work in our repository. How to run the checks, what is unsafe to run locally, which database the dev server really talks to, how to name commits. Hard-won knowledge, written down once so nobody had to learn it twice.&lt;br&gt;
For a month, no agent read a single line of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How instructions silently disappear
&lt;/h2&gt;

&lt;p&gt;The agent tool we use reads one file automatically at the root of the repository. Anything else only loads if that file imports it with a single line. Our root file did not have that line.&lt;br&gt;
Nothing failed. No warning, no error, no missing-file message. The agents simply did their work without the rules, and because they are capable, most of that work looked fine. The damage was the kind you only notice later: a check skipped here, a convention ignored there.&lt;br&gt;
We found it by asking an obvious question very late: "what exactly is loaded when a session starts?"&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix was one line. The guard is a test.
&lt;/h2&gt;

&lt;p&gt;Adding the import took ten seconds. The interesting part is what we did next. We wrote a test that fails if that import line ever disappears again. It runs with the rest of the suite.&lt;br&gt;
The general lesson: &lt;strong&gt;if a piece of configuration matters and fails silently, it needs a test, not a reminder.&lt;/strong&gt; We now treat agent instructions like any other config. They are code that can break, so something has to notice when they break.&lt;/p&gt;

&lt;h2&gt;
  
  
  Errors are read by agents now
&lt;/h2&gt;

&lt;p&gt;Writing that test changed how we write every check. A message like expected false to be true is useless to a human and worse for an agent, which will happily guess at a fix.&lt;br&gt;
Our rule is that a failing check prints the file name and the fix. For example, a docs test fails with the path of the dead link and the file it was found in. A config test fails with the name of the CI job that drifted and the command it should run. When the reader of your error message is another program, the message is the interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  One command, one exit code
&lt;/h2&gt;

&lt;p&gt;The same principle shaped our quality gate. There is a single command that runs types, formatting, lint and the full test suite. It runs every gate even when an earlier one fails, so one run tells you everything that is wrong, and it finishes by printing the command that re-runs just the broken part.&lt;br&gt;
Two details turned out to matter more than expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It never stops early.&lt;/strong&gt; An agent that fixes the type error, re-runs, then discovers a lint error, then a test failure, burns three cycles on what one run could have reported.- &lt;strong&gt;The exit code is trustworthy.&lt;/strong&gt; If you pipe the output into something else, the pipeline returns the last command's status, not the gate's. We wrote that trap into the instructions file, which is now actually loaded.## Things that fail without failing
The missing import was not our only silent failure. Two others from the same period:&lt;/li&gt;
&lt;li&gt;A CI workflow file that was valid YAML but referenced a job we had deleted. GitHub rejected the whole file at startup, reported a failure with zero jobs and no log, and it stayed red through two more merges. We now run a workflow linter that catches exactly this.- A nightly test run that was red sixteen nights in a row while nobody acted on it. We removed it. A gate everyone ignores teaches the team that red is normal, which is worse than having no gate.The pattern in all three: the system was quiet when it should have been loud. Most of the work was not fixing the bug. It was making sure the next one makes noise.
## If you use coding agents
Check what actually loads at session start. Not what you think loads. Then write a test for the part you cannot afford to lose.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>testing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>We deleted a fully tested feature 48 hours after shipping it</title>
      <dc:creator>Mael Bourdin</dc:creator>
      <pubDate>Wed, 14 Oct 2026 07:00:07 +0000</pubDate>
      <link>https://dev.to/mael_bourdin_146413ed19bb/we-deleted-a-fully-tested-feature-48-hours-after-shipping-it-3mdh</link>
      <guid>https://dev.to/mael_bourdin_146413ed19bb/we-deleted-a-fully-tested-feature-48-hours-after-shipping-it-3mdh</guid>
      <description>&lt;p&gt;On a Monday we shipped a feature to every organisation on our platform. It had a written spec, a careful implementation and a full test suite. On Wednesday we deleted it.&lt;br&gt;
Nothing was broken. The feature worked exactly as designed. The problem was simpler and more expensive: nobody needed it. The table sitting right next to it on the same page already answered the question it was built to answer.&lt;br&gt;
This post is about what we changed in how we decide what to build, because a good test suite turned out to be no protection at all against this kind of mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tests answer "does it work", not "should it exist"
&lt;/h2&gt;

&lt;p&gt;Our feature was a comparison panel for the prompts our customers track. You could pick two prompts and see them side by side. It looked useful in the spec. It was useful in isolation. But the prompts table already showed every prompt with the same columns, sortable, in one place. Comparing two rows of a table is something people already know how to do.&lt;br&gt;
Every check we had was green. Types, lint, unit tests, component tests. None of them can fail on "this duplicates something users already have", because that is not a property of the code. It is a property of the product.&lt;br&gt;
The only place that question can be asked is before the work starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The filter we use now
&lt;/h2&gt;

&lt;p&gt;Before an issue gets scheduled, we ask one question: &lt;strong&gt;what data does this need, and do we already hold it?&lt;/strong&gt; The answer sorts every idea into one of four buckets.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;We hold the data and do not show it.&lt;/strong&gt; The cheapest work there is.- &lt;strong&gt;We show the data wrongly.&lt;/strong&gt; Cheap, and it is where trust is won or lost.- &lt;strong&gt;We do not hold it, but we can derive it&lt;/strong&gt; from data we already fetch.- &lt;strong&gt;We do not hold it and must start collecting it.&lt;/strong&gt; A new pipeline, a vendor, or setup on the customer's side.Buckets 1 and 2 are where credibility comes from. Bucket 4 is where features get built and then deleted. So bucket 4 work now needs a named customer who asked for it, not an inference from a competitor's feature list.
## The red 0%
The same week, we fixed a bug that shows the other side of this.
Every prompt that had never been tested displayed a red &lt;strong&gt;0%&lt;/strong&gt; in the dashboard. To a customer, that reads as "you are invisible here". In reality it meant "we have not measured this yet". Those are very different statements, and the dashboard was making the wrong one to every customer.
The fix was to render a count we already stored on every row. One field, one afternoon. A number that had been lying started telling the truth. No new pipeline, no new screen. That is a bucket 2 fix, and it did more for user trust than the comparison panel ever could have.
## An empty table is not a missing feature
One more lesson from the same period. Someone opened an issue asking us to show device, browser and country on a visitor card. The whole pipeline already existed. It had shipped a few hours earlier. The table simply had no rows yet.
If you look at production data and see nothing, check when the code that fills it shipped before you conclude it does not exist. It is an easy mistake, and it is how teams end up building the same thing twice.
## Three checks before we write an issue&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is it already fixed?&lt;/strong&gt; Our issues only auto-close from the release branch, so open issues routinely describe work that already shipped.- &lt;strong&gt;Is it already built?&lt;/strong&gt; See the empty table above.- &lt;strong&gt;Which bucket is it?&lt;/strong&gt; If it is bucket 4, name the customer.## What we did not do
We did not add a process document with approval steps. Process tends to grow into the thing it was meant to prevent. The filter is a single question that anyone on the team, or any coding agent working in the repo, can ask in thirty seconds.
We also did not stop building new things. We just stopped pretending that "well tested" and "worth having" are the same claim.
If you have deleted a feature shortly after shipping it, I would like to hear what tipped you off.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>startup</category>
      <category>productivity</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AI crawlers and robots.txt: a practical guide for developers</title>
      <dc:creator>Mael Bourdin</dc:creator>
      <pubDate>Sat, 10 Oct 2026 07:00:11 +0000</pubDate>
      <link>https://dev.to/mael_bourdin_146413ed19bb/ai-crawlers-and-robotstxt-a-practical-guide-for-developers-11la</link>
      <guid>https://dev.to/mael_bourdin_146413ed19bb/ai-crawlers-and-robotstxt-a-practical-guide-for-developers-11la</guid>
      <description>&lt;p&gt;A surprising number of sites block the exact AI crawlers they would like to be cited by, usually because someone copied a robots.txt snippet during the "block all AI" wave and never revisited it. Here is how to think about it as a developer, without breaking anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not all AI crawlers do the same job
&lt;/h2&gt;

&lt;p&gt;The key distinction: some bots collect content to train models, others fetch pages to answer a user's question right now. Blocking them has very different consequences.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Training crawlers&lt;/strong&gt; gather data used to build future models. Blocking them is a policy choice about your content.- &lt;strong&gt;Search and retrieval crawlers&lt;/strong&gt; index or fetch pages so an assistant can cite them in answers. Blocking them can remove you from those answers.- &lt;strong&gt;User-triggered fetchers&lt;/strong&gt; visit a page because a user asked the assistant to read it.Major providers document separate user agents for these roles. OpenAI, for example, documents GPTBot for training, OAI-SearchBot for search, and ChatGPT-User for user-triggered visits. Anthropic, Perplexity, Google and Apple publish their own lists. Check each provider's official documentation before you write rules, because names and roles evolve.
## Audit what you have today&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;/robots.txt&lt;/code&gt; on your production domain, not on staging.- Look for blanket rules like &lt;code&gt;User-agent: *&lt;/code&gt; with &lt;code&gt;Disallow: /&lt;/code&gt;, and for any AI-specific user agents.- Check your CDN or firewall too. Bot protection settings can block AI crawlers even when robots.txt allows them.- Check your server logs for these user agents to see who actually visits and what status codes they get.## A sensible default
If you want to be cited in AI answers but prefer not to feed training, a common pattern is to allow the search and user-triggered agents and disallow the training ones. Conceptually:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt;-agent: GPTBot
Disallow: /

&lt;span class="nc"&gt;User&lt;/span&gt;-agent: OAI-SearchBot
&lt;span class="nc"&gt;Allow&lt;/span&gt;: /

&lt;span class="nc"&gt;User&lt;/span&gt;-agent: ChatGPT-User
&lt;span class="nc"&gt;Allow&lt;/span&gt;: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Treat this as a pattern, not a copy-paste list. Confirm each user agent against the provider's current documentation, and remember that robots.txt is a request that well-behaved crawlers follow, not an access control mechanism.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the allowed pages worth fetching
&lt;/h2&gt;

&lt;p&gt;Allowing a crawler is only half the job. Retrieval systems need content they can actually read:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server-render important content.&lt;/strong&gt; Text that only appears after client-side JavaScript runs may never be seen by some crawlers.- &lt;strong&gt;Return correct status codes.&lt;/strong&gt; A soft 404 or a page that returns 200 with an error message wastes the visit.- &lt;strong&gt;Keep pages fast.&lt;/strong&gt; Slow responses and timeouts mean the page gets skipped.- &lt;strong&gt;Use clean semantic HTML.&lt;/strong&gt; Headings, lists and tables make passages easier to extract.- &lt;strong&gt;Keep a sitemap up to date&lt;/strong&gt; so new pages get discovered.## What about llms.txt?
llms.txt is a proposed convention: a Markdown file at your site root that points language models to your most useful pages. It is cheap to add and can help tools that support it, but support across engines is inconsistent, so do not treat it as a replacement for crawlable pages.
## Verify, then monitor
After changing rules, watch your logs for the user agents you allowed, and confirm they receive 200 responses. Then check the outcome that actually matters: whether assistants start citing your pages. That last part is what &lt;a href="https://citeme.io" rel="noopener noreferrer"&gt;CiteMe&lt;/a&gt; was built to track, across engines and over time.
Robots.txt mistakes are silent. Nothing breaks, you just quietly disappear from answers. Ten minutes of auditing is worth it.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>seo</category>
      <category>devops</category>
    </item>
    <item>
      <title>7 page types AI engines love to cite (and how to build them)</title>
      <dc:creator>Mael Bourdin</dc:creator>
      <pubDate>Thu, 08 Oct 2026 07:00:03 +0000</pubDate>
      <link>https://dev.to/mael_bourdin_146413ed19bb/7-page-types-ai-engines-love-to-cite-and-how-to-build-them-3jnm</link>
      <guid>https://dev.to/mael_bourdin_146413ed19bb/7-page-types-ai-engines-love-to-cite-and-how-to-build-them-3jnm</guid>
      <description>&lt;p&gt;When you look at the sources behind AI answers, the same kinds of pages keep showing up. Not homepages. Not vague "about us" pages. Pages that answer one question clearly enough that a model can lift a passage and move on.&lt;br&gt;
Here are seven page types worth having, and what makes each one quotable.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The honest comparison page
&lt;/h2&gt;

&lt;p&gt;People constantly ask assistants "X vs Y" and "alternatives to Z". A comparison page that is genuinely fair, including where a competitor is the better choice, gives the model exactly the material it needs.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; a short summary at the top, a comparison table, and a "who should choose what" section. Avoid pure marketing claims; models tend to skip them.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The definition page
&lt;/h2&gt;

&lt;p&gt;"What is X?" is one of the most common question shapes. A page whose first sentence is a clean definition is easy to quote.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; a one-sentence definition, a slightly longer explanation, a concrete example, and links to related concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The step-by-step guide
&lt;/h2&gt;

&lt;p&gt;"How do I…?" questions get answered with steps. If your guide already has numbered steps with clear headings, the engine does not have to reconstruct them from prose.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; numbered steps, one action per step, the expected result after each step, and the common mistakes at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The FAQ that uses real wording
&lt;/h2&gt;

&lt;p&gt;A FAQ written with your customers' exact questions matches the way people talk to assistants. Pull the questions from support tickets, sales calls and community threads.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; the question as a heading, a direct answer in the first sentence, then detail. One question per entry.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The pricing and plans page, kept public
&lt;/h2&gt;

&lt;p&gt;Assistants get asked "how much does X cost?" all the time. If your pricing sits behind a form or a login, the model will guess, or quote an old third-party page.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; plain text prices, what each plan includes, and the date of the last update.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The use-case page
&lt;/h2&gt;

&lt;p&gt;"Best tool for [specific situation]" questions are where small brands can win. A page dedicated to one audience or one situation tells the model exactly when to recommend you.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; who it is for, the problem in their words, how you solve it, and a short real example.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. The original data or research page
&lt;/h2&gt;

&lt;p&gt;Numbers get quoted. If you publish a small study, a benchmark or a survey with a clear methodology, it can become a source that many answers lean on.&lt;br&gt;
&lt;strong&gt;Build it with:&lt;/strong&gt; the key findings at the top, the method explained plainly, the date, and the raw numbers in a table.&lt;/p&gt;

&lt;h2&gt;
  
  
  What all seven have in common
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The answer comes first, the detail after.- One page, one main question.- Clear headings that read like questions or claims.- Facts that are easy to verify and kept up to date.- Server-rendered content that crawlers can fetch.## How to know if it works
Publish, wait a few weeks, then ask the same questions again across several assistants and check whether your new page appears among the cited sources. If you want that on autopilot, &lt;a href="https://citeme.io" rel="noopener noreferrer"&gt;CiteMe&lt;/a&gt; tracks which of your pages get cited, prompt by prompt. Either way, measure it: some page types will work much better than others in your market.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>writing</category>
      <category>marketing</category>
    </item>
    <item>
      <title>GEO vs SEO: what actually changes when AI answers the question</title>
      <dc:creator>Mael Bourdin</dc:creator>
      <pubDate>Tue, 06 Oct 2026 07:00:01 +0000</pubDate>
      <link>https://dev.to/mael_bourdin_146413ed19bb/geo-vs-seo-what-actually-changes-when-ai-answers-the-question-148i</link>
      <guid>https://dev.to/mael_bourdin_146413ed19bb/geo-vs-seo-what-actually-changes-when-ai-answers-the-question-148i</guid>
      <description>&lt;p&gt;Generative Engine Optimization, or GEO, gets described either as "SEO is dead" or as "nothing new, just do good SEO". Both are wrong. A lot carries over, but the goal, the unit of success and the way you measure it all change.&lt;/p&gt;

&lt;h2&gt;
  
  
  The goal: from a click to a mention
&lt;/h2&gt;

&lt;p&gt;Classic SEO optimizes for a position in a list of links, and success is a click. In an AI answer there is often no list to rank in. There is a paragraph that names two or three options, sometimes with sources, sometimes without. Success is being one of the names, described correctly, ideally with a link.&lt;br&gt;
That is a different shape of outcome. You can be cited without getting a click, and you can lose a sale without ever seeing the impression.&lt;/p&gt;

&lt;h2&gt;
  
  
  The unit: from a keyword to a question
&lt;/h2&gt;

&lt;p&gt;People type short keywords into a search box. They type full, specific questions into an assistant: "what's a good CRM for a five person agency that already uses Google Workspace?". Small changes in phrasing can change which brands come back.&lt;br&gt;
So instead of tracking a few hundred keywords, you track a set of realistic questions, grouped by intent. The question set becomes your main asset.&lt;/p&gt;

&lt;h2&gt;
  
  
  What carries over from SEO
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Crawlability.&lt;/strong&gt; If a crawler cannot fetch your page, no engine can quote it. Server-rendered content, clean HTML and sensible robots rules still matter.- &lt;strong&gt;Clear structure.&lt;/strong&gt; Headings, short paragraphs and lists help retrieval systems extract the right passage.- &lt;strong&gt;Authority and mentions.&lt;/strong&gt; Being referenced by trusted, relevant sources still helps, perhaps more than ever, because models echo what many sources agree on.- &lt;strong&gt;Answering the question.&lt;/strong&gt; Pages that genuinely explain something keep winning.## What changes
### Passages matter more than pages
Retrieval-based engines often pull a passage, not a whole page. A page that states its answer in the first two sentences of a section is easier to quote than one that builds up to it over six paragraphs.
### Entity clarity matters a lot
Models need to understand what your brand is and what it does. If your site, your social profiles and the directories that list you describe you in different ways, the model's picture of you gets blurry. Repeating a consistent one-line description of your brand helps.
### Off-site content carries more weight
Forums, community threads, comparison articles, review platforms and videos regularly appear among the sources of AI answers. Your own website is only one of the places that shape how you are described.
### Each engine behaves differently
Some engines cite sources inline, some rarely do, some lean on fresh web results, some lean on what the model already learned. A strategy tuned for one assistant does not automatically transfer to another, which is why measuring across several engines matters.
## Measuring it
Rankings do not translate to this world. The useful metrics look more like this:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mention rate&lt;/strong&gt;: on how many of your target questions are you named?- &lt;strong&gt;Share of voice&lt;/strong&gt;: how often are you named compared with competitors?- &lt;strong&gt;Accuracy&lt;/strong&gt;: is what the engine says about you true?- &lt;strong&gt;Cited sources&lt;/strong&gt;: which pages are behind the answers, yours or someone else's?Tracking those by hand works for a first audit. Over time you want them on a schedule, across engines, with history, which is what tools like &lt;a href="https://citeme.io" rel="noopener noreferrer"&gt;CiteMe&lt;/a&gt; do.
## The short version
SEO taught us to be findable. GEO asks us to be quotable. Keep the technical basics, write pages that answer one question clearly, be talked about where models read, and measure mentions instead of positions.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webdev</category>
      <category>llm</category>
    </item>
    <item>
      <title>How to check if ChatGPT recommends your brand: a 30-minute manual audit</title>
      <dc:creator>Mael Bourdin</dc:creator>
      <pubDate>Sun, 04 Oct 2026 07:00:01 +0000</pubDate>
      <link>https://dev.to/mael_bourdin_146413ed19bb/how-to-check-if-chatgpt-recommends-your-brand-a-30-minute-manual-audit-337c</link>
      <guid>https://dev.to/mael_bourdin_146413ed19bb/how-to-check-if-chatgpt-recommends-your-brand-a-30-minute-manual-audit-337c</guid>
      <description>&lt;p&gt;More and more people skip the search results page entirely. They open ChatGPT, Perplexity or Gemini, type a question like "what's the best invoicing tool for freelancers?", and pick one of the two or three names the answer gives them.&lt;br&gt;
If your brand is not one of those names, you never even enter the race. The good news: you can find out where you stand in about thirty minutes, with nothing but a spreadsheet and a few AI assistants.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: write down the questions your customers actually ask
&lt;/h2&gt;

&lt;p&gt;Forget keywords for a moment. AI assistants receive full questions, often with context. Write 15 to 20 of them, split into three groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discovery questions&lt;/strong&gt;: "what tools help with X?", "how do small teams handle Y?"- &lt;strong&gt;Comparison questions&lt;/strong&gt;: "X vs Y", "alternatives to Z", "is X worth it?"- &lt;strong&gt;Problem questions&lt;/strong&gt;: the pain your product solves, phrased the way a frustrated person would type it.The best source for these is your own support inbox, sales calls and the questions people ask in communities. Copy their wording, not your marketing wording.
## Step 2: ask every engine, in a clean session
Run each question in at least three assistants. Use a fresh chat or a private window so your history does not bias the answer. For each answer, note:&lt;/li&gt;
&lt;li&gt;Is your brand mentioned? Yes or no.- In which position: first name, second, buried at the end?- Which competitors are mentioned instead?- Which sources are cited, when the engine shows them?- Is what the engine says about you actually correct?## Step 3: build the table
One row per question, one column per engine. Mark each cell with the brands named. After twenty questions, patterns appear fast:&lt;/li&gt;
&lt;li&gt;Some competitors show up everywhere. Those are your real competitors in AI search, and they are not always the ones you watch on Google.- Some questions never mention you, even though you clearly answer them. Those are content gaps.- Some engines describe you with outdated information. That usually means an old page, a review site or a directory says something your website no longer says.## Step 4: look at the sources
When an engine cites its sources, open them. You will often find the same small set of pages behind many answers: a comparison article, a Reddit thread, a review site, a well structured guide. Those pages are what the model is echoing.
Two practical moves come out of this:&lt;/li&gt;
&lt;li&gt;If a cited page is yours, keep it accurate and keep it alive. It is doing more work than your homepage.- If a cited page is not yours, ask yourself why it explains your category better than you do, and whether you should be mentioned on it.## Step 5: repeat it, because answers move
AI answers are not stable. The same question can return different brands a week later, after a model update, a new article or a change in how the engine retrieves sources. A one-off audit is a snapshot, not a ranking.
That is the part that gets tedious by hand: the same twenty questions, across several engines, every week, with the history kept somewhere. It is the reason we built &lt;a href="https://citeme.io" rel="noopener noreferrer"&gt;CiteMe&lt;/a&gt;, which runs those prompts on a schedule and shows who gets cited instead of you. But start manually. Thirty minutes of asking the right questions will tell you more about your AI visibility than any dashboard you have never opened.
## A quick checklist&lt;/li&gt;
&lt;li&gt;20 real customer questions, in their words- 3 or more AI engines, clean sessions- One table: brands named per question and engine- The cited sources opened and read- Errors about your brand listed and fixed at the source- A reminder to run it again next month&lt;/li&gt;
&lt;/ul&gt;

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