Get ChatGPT and Perplexity to recommend your product: GEO as code
Search used to hand the buyer a list of links. Now it hands them an answer that names three products, and your product is either one of those three or invisible. That shift is called generative engine optimization, GEO, and you can run it from a GitHub repo as pull requests. This post is one of those pull requests right now.
Why a founder should care
Buyers no longer open a browser and pick a result. They ask ChatGPT or Perplexity, get a paragraph, and the paragraph lists three products. For a solo founder that paragraph is the ad. If your product is not in it, the buyer never hears of you no matter how good your search ranking is.
The recommendation is the new first page. And unlike a link, an answer is a citation: the engine names you because it trusts your page. You can build that trust deliberately.
How a citation actually happens
Two mechanisms get your content into an AI answer.
Training data. What the model learned when it was built. You cannot change that this quarter, so do not start there.
Live retrieval. The engine goes out and fetches your page, extracts the useful passage, and quotes it. This one you can influence today. The engine has to find your page, understand it, and trust it. Help it do those three things and the citation rate goes up.
Everything below targets live retrieval. That is the lever within your reach.
The signals, each as a file in your repo
Treat every signal like a code change: it lands as a file, reviewable in a pull request you can merge or reject.
- An answer-first block under every H1. Put 40 to 60 words directly under the heading that answer the question in a sentence. This is the block AI engines quote, so write it to stand alone. Example: the opening paragraph of this post.
- llms.txt at the root. One markdown file that maps the whole site for language models, the same way robots.txt maps it for crawlers. Put it at the root of your repo and link your most important pages. This one file is a measurable step.
- FAQPage schema. The buyers ask real questions on your pages. Mark them as FAQ structured data so the engine can pull a clean answer instead of guessing which paragraph on the page is the answer.
- robots.txt: allow the AI crawlers. Do not block OAI-SearchBot or GPTBot. Blocking them quietly removes you from ChatGPT answers.
- Markdown twins. The pages worth citing also served as clean text. Static sites get this for free: if your pages are already HTML, a plain markup version costs you nothing.
- Freshness as a standing job. Retrieval favors the recently updated page. Keep the important pages current, and treat that refresh as a scheduled task, not a one-time pass.
The SEO & GEO agent runs this exact checklist daily. Onboarding your repo hands it the job of auditing your pages "so search engines and AI answers can find you."
The loop: each signal is a PR
Onboarding is your URL, product URL, and repo. The agents then run a daily loop, and each change comes back as a pull request. You review the diff, merge what you agree with, and reject what you do not. Same review muscle as the rest of your repo.
That is the whole method. No GEO agency, no dashboard you have to remember to open. The audit runs, the PRs arrive, you approve and move on.
Measure it: a monthly prompt log
Nobody can promise you a citation count, and anyone who does is selling something. What you can do is measure your own trend.
Once a month, run 10 to 15 real buyer prompts against ChatGPT and Perplexity. Use the questions your buyers actually ask, not just your product name. Log who gets cited, and watch your own name move over the months.
That log is your KPI, and it doubles as your content plan: the questions people ask in the answers are the posts you should write.
Where GEO overlaps with SEO
One honest line: much of what works for GEO is still SEO. The search engines still gate most of what AI engines retrieve, so if your pages cannot win a normal search, they will not win an answer. Do the boring SEO first, then layer the answer-first blocks and schema on top.
This post is a pull request. So is the llms.txt in it.
We practice what this page preaches. This post is a pull request waiting to be merged, and the site ships an llms.txt the same way. If you want this loop run for you daily, start free and read your first audit.